ping包过程之arp(地址解析协议)

0,怎么引出arp地址解析协议的呢?

在硬件层次上进行的数据帧交换必须有正确的接口地址既是MAC地址)。但是, T C P / I P有自己的地址: 32 bitI P地址。知道主机的 I P地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址MAC地址)才能发送数据。 A R P的功能是在32 bitI P地址和采用不同网络技术的硬件地址之间提供动态映射,既是通过相应的IP地址找到相应的MAC地址。

1,场景描述:

ping包过程之arp(地址解析协议)_第1张图片

设备R1: ip 10.10.10.1

[Huawei] ip address 10.10.10.1 255.255.255.0

[Huawei]display arp
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.10.10.1      5489-98c2-7867            I -         Eth0/0/0
10.10.10.2      5489-9811-5cbb  9         D-0         Eth0/0/0
------------------------------------------------------------------------------
Total:2         Dynamic:1       Static:0     Interface:1  

设备R2: ip 10.10.10.2

system-view     

[Huawei] ip address 10.10.10.2 255.255.255.0

[Huawei]  ping 10.10.10.1

  PING 10.10.10.1: 56  data bytes, press CTRL_C to break
    Reply from 10.10.10.1: bytes=56 Sequence=1 ttl=255 time=1 ms
    Reply from 10.10.10.1: bytes=56 Sequence=2 ttl=255 time=1 ms
    Reply from 10.10.10.1: bytes=56 Sequence=3 ttl=255 time=1 ms
    Reply from 10.10.10.1: bytes=56 Sequence=4 ttl=255 time=1 ms
    Reply from 10.10.10.1: bytes=56 Sequence=5 ttl=255 time=20 ms

  --- 10.10.10.1 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 1/4/20 ms

[Huawei]display arp
IP ADDRESS      MAC ADDRESS     EXPIRE(M) TYPE        INTERFACE   VPN-INSTANCE 
                                          VLAN/CEVLAN PVC                      
------------------------------------------------------------------------------
10.10.10.2      5489-9811-5cbb            I -         Eth0/0/0
10.10.10.1      5489-98c2-7867  7         D-0         Eth0/0/0
------------------------------------------------------------------------------
Total:2         Dynamic:1       Static:0     Interface:1 

2,ARP的分组格式结构 

ping包过程之arp(地址解析协议)_第2张图片

两个字节长的以太网帧类型表示后面数据的类型。对于 A R P请求或应答来说,该字段的值为0 x 0 8 0 6 

操作字段指出四种操作类型,它们是 A R P请求(值为1)、 A R P应答(值为 2)、 R A R P请求(值为3)和R A R P应答(值为4

arp报文数据结构: 

定义以太网arp字段
typedef struct arphdr
{
//arp首部
unsigned short arp_hrd;    /* format of hardware address */
unsigned short arp_pro;    /* format of protocol address */
unsigned char arp_hln;    /* length of hardware address */
unsigned char arp_pln;    /* length of protocol address */
unsigned short arp_op;     /* ARP/RARP operation */

unsigned char arp_sha[6];    /* sender hardware address */
unsigned long arp_spa;    /* sender protocol address */
unsigned char arp_tha[6];    /* target hardware address */
unsigned long arp_tpa;    /* target protocol address */
}ARPHDR;

3,四种常用的表简介:

(1)mac地址表:简单的说,MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系(见下图),代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据。

Port

Mac-address

Port-vlan

type

Ethernet0/0/0(10.10.10.1)

00-1a-b6-33-44-01

dynamic

Ethernet0/0/0(10.10.10.2)

10-26-e6-bc-10-78

dynamic

(2)ARP表:简单的说,ARP表就是路由器等网络设备记录IP地址和MAC地址对应关系的表项。

        广播报文:目的地址全1(FF-FF-FF-FF-FF-FF).

        组播报文:目的地址第六字节的最低位为1(X1-XX-XX-XX-XX-XX).

        单播报文:除了上面两种之外 的报文.

        Mac地址学习:把未知mac地址转为arp表里面的已知地址。

        Mac地址老化:

Port

Mac-address

ip-adress

Port-vlan

type

Ethernet0/0/0(10.10.10.1)

00-1a-b6-33-44-01

10.10.10.1

dynamic

Ethernet0/0/0(10.10.10.2)

10-26-e6-bc-10-78

10.10.10.2

dynamic

   (3), 路由表(暂无,后续介绍)。

4,报文分析:

ping包过程之arp(地址解析协议)_第3张图片

ping包过程之arp(地址解析协议)_第4张图片

ping包过程之arp(地址解析协议)_第5张图片

 流程分析:

设备1: ip 10.10.10.1     设备2: ip 10.10.10.2

当设备1 ping 设备2时,设备1发送arp request 报文,而且我们看到设备1发送的是广播报文,目的地址为FF-FF-FF-FF-FF-FF,此时我们给所有的用户发送报文(既是泛洪),当ip不为10.10.10.2的设备收到该报文时,因为发现目标ip不是发给自己的,所以他会丢掉该报文,而ip为10.10.10.2的设备2收到该报文时,发现对端是给自己发送报文的,他会将自己(设备2)和设备1的mac地址和ip保存在arp表项中(该过程称为mac地址学习),并且此时设备2同时会发送arp reply报文他此时已经知道了对端的ip+mac地址(通过arp表)。

你可能感兴趣的:(交换芯片,网络)