最后更新:2022-01-22 00:52:05 手机定位技术交流文章
地址解析协议,即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地址)信息,以保证通信的顺利进行。
------------------------------------------------------------------------------------------------------------------------------

由于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 |
-------------------------------------------------------------------------------------------------------------------------------
第一步:pc1以广播的形式发起arp请求-------->(去)
| 二层帧头(14字节) | arp | |
| smac:0...........A | 我是10.1.1.1,我的mac是0.......A 谁是10.1.1.3,你的mac发给我 |
二层帧尾(4字节) |
| dmac: 12个F(二层广播) | ||
| Type:0806 |
第二步:sw2收到arp请求之后,首先学习pc1中arp请求的SMAC,形成mac地址表,如下:
| 0..........A | f0/8 | VLAN 10 |
从f0/8接口学习到的mac地址)0........A,属于 vlan 10
然后在判断Dmac,当Dmac为12个F时,然后在自己所有vlan 10 的接口内(除了F0/8)以及trunk链路接口泛洪 -------------->(去)
同样sw3收到来自sw2也形成一个mac地址表:
| 0..........A | f0/6 | VLAN 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..........a | f0/6 | VLAN 10 |
| 0...........C | F0/9 | vlan 10 |
sw2形成mac地址表: -------------->(回)
| 0..........a | f0/8 | VLAN 10 |
| 0...........C | F0/5 | vlan 10 |
最后:pc1收到arp响应,生成arp缓存表,存入pc3的mac地址 -------------->(回)
| 10.1.1.3 | 0................C |
最终得到了pc3的mac,完成数据的封装:
| smac:0...A | sip:10.1.1.1 | ICMP头部 | ECHO |
| Dmac:0...C | dip:10.1.1.3 |
---------------------------------------------------------------------------------------------------------------------------------
ICMP(Internet Control Message Protocol)Internet控制 报文 协议。它是 TCP/IP协议簇 的一个子协议,用于在IP 主机 、 路由 器之间传递控制消息。控制消息是指 网络通 不通、 主机 是否可达、 路由 是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。
----------------------------------------------------------------------------------------------------------------------------
ping为应用层小程序,直接调用网络层的ICMP协议给对方发送ECHO请求,对方收到之后会回复一个ECHO-reply,然后打印一个 !号。
本文由 在线网速测试 整理编辑,转载请注明出处。