4.TCP/IP协议详解:ARP请求过程

ARP 请求建立本地ARP表项的过程是怎样的呢?
      先来回忆一下IP包到MAC帧封装的过程,在ARP协议浅析(二)中,已经提出过结论,MAC帧封装是根据路由下一跳的IP地址,进行本地ARP查表,然后封装MAC帧的。如果ARP表项中没有对应的ARP表项,这时数据包的发送设备会发送ARP请求(广播).
广播这里提一下:之前讲到过二层的通信过程,收到MAC帧后会把MAC帧头的目的MAC与本机比较,相同则留下校队后交付上层,不同则丢弃;问题就来了,ARP是三层协议,发送ARP请求就是希望得到目的IP的MAC地址,所以这个目的MAC地址怎么填写呢?答:TCP/IP规定,目的IP为FF-FF-FF-FF-FF-FF为广播地址,所有设备接收到以该地址为目的地址的MAC帧,都需要接收处理后交付上层;
ARP请求的格式是这样的:

4.TCP/IP协议详解:ARP请求过程_第1张图片

简单介绍:
硬件类型指的是网络的类型,这里的讲解都是以以太网为例的,此标志位1
协议类型:如IPV4时此字段为0080;
硬件长度:8位字段,单位:字节,以太网为6,即6字节,6*8=48bit
协议长度:例如IPV4时,此处定义为4
操作:这个地方需要注意,ARP请求和ARP应答的区别之一;1:请求;2:应答。
发送发的IP,MAC;
目的放得源IP,MAC;(注意ARP请求时,由于不知道目的MAC地址,此处为全0)
由于ARP请求的目的地址是FF-FF-FF-FF-FF-FF,同一个广播域内的所有设备都会接收到这个请求,二层对于FF-FF-FF-FF-FF-FF为目的的MAC帧的处理方式是接收并交付三层处理。三层接收到二层交付的IP包后会对数据段进行分析比较,这时分两种情况:
数据段的目的IP地址是本机:
1.把ARP请求方得IP与MAC对应关系存入本地ARP表(这一点很重要,安全部分还会讲到);
2.发送ARP响应,格式见ARP响应图;

数据段的目的IP地址不是本机:
丢弃该ARP请求;
ARP请求过程(二)
上节介绍了ARP请求的帧格式,和ARP请求发送接收和应答过程;为了大家更好的理解ARP请求,这里举例来介绍一下:
  4.TCP/IP协议详解:ARP请求过程_第2张图片


如图:
PC A IP:192.168.1.A MAC: AA-AA-AA-AA-AA-AA
PC B  IP:192.168.1.B MAC: BB-BB-BB-BB-BB-BB
PC C IP:192.168.1.C MAC CC-CC-CC-CC-CC-CC
PC D IP: 192.168.1.D MAC DD-DD-DD-DD-DD-DD
PC A与PC B通信,但是由于 PC A的ARP表中没有 PC B的表项,于是进行ARP请求,根据上一节 ARP请求格式应该为:
4.TCP/IP协议详解:ARP请求过程_第3张图片


其中协议字段的0X0806代表ARP协议报文
目的MAC为广播MAC,源MAC为IP A的mac
交换机在接收到此MAC帧后会根据MAC帧的目的地址转发,由于使用全F的广播地址,交换机进行广播域内的广播:PC B PC C PC D 三台PC接收到ARP请求报文后,接收报文,交付三层处理,其中PC C PC D丢弃报文,而由于报文中的目的IP与PC B IP相同,PC B将报文中的源IP MAC对应存入ARP表项(已有则覆盖,这步很关键),并发出ARP响应报文格式为:
4.TCP/IP协议详解:ARP请求过程_第4张图片


区别大家自己观察;

结论,ARP请求是以广播形式发出,而ARP响应则是单播形式。

转自:http://blog.sina.com.cn/s/blog_6d6c1115010191cf.html


你可能感兴趣的:(tcp/ip,TCPIP,ARP请求过程,ARP)