详解ip地址和mac地址即ARP协议

目录

一、为什么有mac地址还需要ip地址

1. 为什么有mac地址

2. 数据包只填mac地址能否送达

3. IP地址不可或缺

4. 是否可以只存在ip地址

二、ARP协议详解

1. 为什么需要ARP

2. ARP的工作过程



一、为什么有mac地址还需要ip地址

1. 为什么有mac地址

        在计算机出厂时,就由网络设备制造商生产时烧录在网卡上,属于全球唯一的地址,那为什么需要这个地址呢?想想平时寄东西,必须在快递上写上接收地址,而这个地址肯定也是全球唯一,这样快递员才能准确无误的将快递送达。网络数据包同样需要这个唯一的mac地址。那这样是否能够在网络中通信了呢?

2. 数据包只填mac地址能否送达

        通过上面可知,我们将网络中的数据写上接收方的mac地址,是否就能到达对方的电脑呢?答案显然是不能,那全球只有一台电脑的mac地址能配对到这个网络数据包写上的mac地址, 理论来说应该是可以到达的,但是mac地址是没有层次分明,也就是说mac地址那串符号几乎是随机分配的,所以你只写上一个mac地址,要准确送达,只能遍历全世界的计算机看看该mac地址属于哪台计算机并送达,显然这是不可能的。

 

3. IP地址不可或缺

          由于mac的地址没有层次结构,要在庞大的互联网定位的目标地址非常困难,所以还需要另外一个有层次的地址即IP地址。

详解ip地址和mac地址即ARP协议_第1张图片

        用ip查询器随便输入一个ip地址,就能知道该ip所属哪个位置,这方便了网络数据包的定位,使路由器转发数据包有了方向。 

4. 是否可以只存在ip地址

   这涉及到计算机网络的传输层次了,ip地址是属于网络层的,mac属于链路层的。一般来说,家里的电脑都是分配了局域网ip(局部唯一),只有连接的网关(路由器)才有公网ip,发送数据包是先发送给网关再让路由器去发出去,所以回来的数据包最后也只能定位到你的路由器,下一步转发就需要通过ARP协议(下面介绍)获取mac地址正确到达你的电脑。如果电脑直接用的是公网ip,那就可以不需要这个操作。但是网络中路由器与路由器之前的转发同样需要mac地址,ip地址是电脑或者路由器本身的,而mac地址是网络适配器的(即网络接口),路由器知道ip地址并不能直接转发,而是查询路由表得到目标网段属于哪个接口,然后封装下一跳路由的mac地址从网络接口发送出去。

二、ARP协议详解

1. 为什么需要ARP

IP协议的设计目标是为了跨越不同类型物理网络的分组交换提供相互操作。一个传统的IPv4网络在传输过程这需要用到自己的32位ip地址,但如果一台主机要将一个帧发送到另外一个主机,还需要知道主机在网络中的有效硬件地址(即mac地址),操作系统软件(以太网驱动程序)必须知道目的主机的硬件地址才能直接向它发送数据。这就需要网络层软件使用的地址和底层网络硬件使用的地址之间进行转换,所以ARP协议应运而生。

2. ARP的工作过程

        当你要发送一个数据,要将该数据层层封装,将如是在浏览器输入一个网网址,那么就在应用层封装了HTTP头部信息,然后就是封装TCP头部(包含源端口、目标端口等信息),再然后就是IP头部(源ip地址、目标ip地址等信息),最后就是链路层的头部,这时需要目标mac地址,但是发送数据时一般来说只知道对方的ip地址(在网站上感觉域名可以解析出ip地址),那mac地址从何而来?

        这就需要ARP协议了,主机首先查看目标ip地址是否在同一网段,如果在就会发送一个ARP广播,目标mac地址为FF-FF-FF-FF,内容为who is 192.168.1.10(假设目标ip为这个),然后交换机就会广播这个ARP包,ip为192.168.1.10收到后就会回复主机告诉它自己的mac地址,不是该ip的主机忽略该ARP包。主机收到目标主机的mac地址后,即能进行链路层的封装,最后交给网卡发送出去。还有在缓存中加入该地址映射关系,在缓存过期前发送不需要在发送ARP广播也能直接封装了。

        如果目标ip地址在远程呢,并不是同一网段,那就不可能直接获取远程主机的mac地址了,想一想就知道,要是能直接发送给远程主机请求对方的mac地址,就不需要它的mac地址来封装自己的数据去发送给对方了。所以并不是直接获取目标的mac地址,主机一看目标ip不是同一网段,则不会广播ARP包,而是直接发送ARP包请求网关的mac地址,然后封装后从网卡发送出去,网关收到后,查看目标ip地址并查找路由表,获取下一跳的接口mac地址,最后封装成链路帧(即改变了目标mac地址)发送出去,下一跳路由重复此操作,知道目标ip属于到达的路由器的ip或连接的网段,再次使用ARP协议定位到目标主机发送。


你可能感兴趣的:(计算机网络,计算机网络,后端,网络协议,网络传输,网络通信)