欢迎来到天天文库
浏览记录
ID:48255922
大小:72.50 KB
页数:2页
时间:2019-11-22
《IIILinux系统编程_36TCP/IP协议基础_3ARP数据报格式.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第36章TCP/IP协议基础3.ARP数据报格式在网络通讯时,源主机的应用程序知道目的主机的ip地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硕件地址与本机不符,则盲接丢弃。因此在通讯前必须获得目的主机的硕件地址。ARP协议就起到这个作用。源主机发岀ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到
2、广播的ARP请求,发现其中的IP地址与木机相符,则发送一个ARP应答数据包给源主机,将自己的顽件地址填写在应答包中。每台主机都维护一个ARP缓存表,可以用arp-a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求來获得目的主机的硬件地址。想一想,为什么表项要有过期时间而不是一直有效?ARP数据报的格式如下所示(该图出自[TCPIPl):图36.7.ARP数据报格式以太网冃的地址以太网游:地址帧类型碘件i协议r[诜型op发
3、送端以太网地址发送端1P地址冃的以太网白的IP地址662221126464以太网首部28字节ARP请求/应签f谀件地址K度r*协议地址长度注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。下
4、面举一个具体的例子。请求帧如下(为了清晰在每行的而面加了字节计数,每行16个字节):以太网首部(14字节)0000:ffffffffffff00055d6158a80806ARP帧(28字节)0000:00010010:08000604000100055d6158a8cOa800370020:000000000000cOa80002填充位(18字节)0020:007731d250100030:fd7841d30000000000000000以太网首部:口的主机采用广播地址,源主机的MAC地址是0
5、0:05:5d:61:58:a8,上层协议类型0x0806表示ARPoARP帧:硕件类型0x0001表示以太网,协议类型0x0800表示IP协议,硕件地址(MAC地址)长度为6,协议地址(IP地址)长度为4,op为0x0001表示请求目的主机的MAC地址,源主机MAC地址为00:05:5d:61:58:a8,源主机IP地址为c0a80037(192.168.0.55),目的主机MAC地址全0待填写,目的主机IP地址为cOa80002(192.168.0.2)。由于以太网规定最小数据长度为46字节
6、,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。应答帧如下:以太网首部0000:00055d6158a800055da1b8400806ARP帧0000:00010010:08000604000200055da1b840cOa800020020:00055d6158a8cOa80037填充位0020:007731d250100030:fd7841d30000000000000000以太网首部:0的主机的MAC地址是00:05:5d:61:58:a8,源主机
7、的MAC地址是00:05:5d:a1:b8:40,上层协议类型0x0806表示ARPoARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址(IP地址)长度为4,op为0x0002表示应答,源主机MAC地址为00:05:5d:a1:b8:40,源主机IP地址为cOa80002(192.168.0.2),目的主机MAC地址为00:05:5d:61:58:a8,目的主机IP地址为cOa80037(192.168.0.55)。思考题:如果源
8、主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?
此文档下载收益归作者所有