TCP/Socket学习----ARP数据报格式

来源:互联网 发布:2017网络歌曲 编辑:程序博客网 时间:2024/06/05 16:29

TCP/Socket学习(亚嵌网络版图书)

ARP数据报格式

ARP的作用:
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的
主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议,如果接收到的
数据包的硬件地址和本机的不符则直接丢弃。因此在通讯前必须获得目的主机的硬
件地址。
ARP协议就起到这样的一个作用,即在通讯前获取目的主机的硬件地址???

ARP的工作原理:
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少“,并将
这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示
广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个
ARP应答数据包给源主机,将自己的硬件地址填写到应答包里。

ARP缓存表:
每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间
(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发
请求ARP。

图36.7ARP数据报格式
看图分析:
以太网首部:
有三部分组成
以太网目的地址  6byte
以太网源地址  6byte
帧类型   2byte

数据报主体:
28字节的ARP请求/应答组成:
硬件类型  2byte
协议类型  2byte
硬件地址长度  1byte
协议地址长度  1byte
op   2byte(op是什么???) 
发送端以太网地址 6byte(发送端的MAC地址)
发送端IP地址  4byte
目的以太网地址  6byte(想要得到的目的MAC地址)
目的IP地址  4byte

注意:硬件类型指链路层网络类型,1为以太网
      协议类型指的是哟转换的地址类型,0x0800为IP地址
      op字段为1表示ARP请求,2表示ARP应答
  

    


     
举例:
下面举一个具体的例子。

请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节):

以太网首部(14字节)
0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06
ARP帧(28字节)
0000:                                           00 01
0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37
0020: 00 00 00 00 00 00 c0 a8 00 02
填充位(18字节)
0020:                               00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00

以太网首部:目的主机采用广播地址,源主机的MAC地址是00:05:5d:61:58:a8,上层协议类型0x0806表示ARP。

ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址
(IP地址)长度为4(此处本文上面说的有些不符,需要斟酌,上面讲这两个长度都为1个字节),op为0x0001
表示请求目的主机的MAC地址,源主机MAC地址为00:05:5d:61:58:a8,源主机
IP地址为c0 a8 00 37(192.168.0.55),目的主机MAC地址全0待填写,目的主机IP地址为c0 a8 00 02(192.168.0.2)。

由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。

应答帧如下:

以太网首部
0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06
ARP帧
0000:                                           00 01
0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02
0020: 00 05 5d 61 58 a8 c0 a8 00 37
填充位
0020:                               00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00

以太网首部:目的主机的MAC地址是00:05:5d:61:58:a8,源主机的MAC地址是00:05:5d:a1:b8:40,上层协议类型0x0806表示ARP。

ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址(IP地址)长度为4,
op为0x0002表示应答,源主机MAC地址为00:05:5d:a1:b8:40,源主机IP地址为c0 a8 00 02(192.168.0.2),目的主机MAC地址为00:05:5d:61:58:a8,
目的主机IP地址为c0 a8 00 37(192.168.0.55)
     

 

原创粉丝点击