0
点赞
收藏
分享

微信扫一扫

arp协议、arp应答出现的原因、arp应答过程详细解答附图

快乐码农Alan007 2022-01-21 阅读 83
分类tcp/ip

一、arp协议:

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;

二、功能:

地址解析协议由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定。 [1]  地址解析协议是IPv4中必不可少的协议,而IPv4是使用较为广泛的互联网协议版本(IPv6仍处在部署的初期)。

OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的包头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

三、原理:

arp应答出现的原因:

由于pc1发送ping包给pc3进行数据的封装时pc3的mac未知,也就是目的mac未知所以pc1向pc3发起了arp请求。

数据封装:

-----------------------------------------------------------------------------------------------------------------------------

smac:0...........A        |       sip:10.1.1.1           |      ICMP头部     |       ECHO

dmac:    ?                  |      dip:10.1.1.3           |                            |

------------------------------------------------------------------------------------------------------------------------------  

 arp应答过程:

第一步:pc1以广播的形式发起arp请求       -------->(去)

---------------------------------------------------------------------------------------------------------------------------------

 smac:0...........A               |   我是10.1.1.1,我的mac是0.......A        |   二层帧尾(4字节)

dmac:  12个F(二层广播)   |   谁是10.1.1.3,你的mac发给我            |

Type:0806                         |                                                               |

-------------------------------------------------------------------------------------------------------------------------------- 

二层帧头(14字节)                                 arp

第二步:sw2收到arp请求之后,首先学习pc1中arp请求的SMAC,形成mac地址表,如下:

0..........af0/8VLAN   10

从f0/8接口学习到的mac地址)0........A,属于      vlan  10

然后在判断Dmac,当Dmac为12个F时,然后在自己所有vlan   10  的接口内(除了F0/8)以及trunk链路接口泛洪     -------------->(去)

同样sw3收到来自sw2也形成一个mac地址表:

0..........af0/6VLAN   10

然后泛洪给pc3         -------------->(去)

第三步:pc3收到arp请求之后,首先把arp请求(10.1.1.1-----0........A)记录到自己的arp缓存表之中再判断Dip是否是自己,不是则丢弃,是则以单播的方式回一个arp响应 -------------->(回)

smac:0...........C我是10.1.1.3,我的mac是0.....C二层帧尾
Dmac:0...........A
type:0X0806

第四步:然后sw3形成mac地址表: -------------->(回)

0..........af0/6VLAN   10
0...........CF0/9vlan     10

sw2形成mac地址表: -------------->(回)

0..........af0/8VLAN   10
0...........CF0/5vlan     10

最后:pc1收到arp响应,生成arp缓存表,存入pc3的mac地址 -------------->(回)

10.1.1.30................C

最终得到了pc3的mac,完成数据的封装:

smac:0...Asip:10.1.1.1ICMP头部ECHO
Dmac:0...Cdip:10.1.1.3

---------------------------------------------------------------------------------------------------------------------------------

 注:

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。 

 ----------------------------------------------------------------------------------------------------------------------------

ping为应用层小程序,直接调用网络层的ICMP协议给对方发送ECHO请求,对方收到之后会回复一个ECHO-reply,然后打印一个  !号。

以上仅代表个人观点,如有错误还请指出。感谢!

举报

相关推荐

0 条评论