ARP数据报传送格式

一. ARP

    ARP协议是运行在网络体系中数据链路层的协议,用于在局域网内,当知道要发送目的地主机的IP地址和端口号但是却不知道MAC地址的时候,就需要用到ARP也被称为地址解析协议;因为数据链路层传输的数据格式是帧,接收方接收的时候是先经过物理层和数据链路层才到达网络层的,因此,在数据传输的时候是需要知道主机的MAC地址也就是其硬件地址的来发送和接收数据的;如果接收到的数据包的MAC地址与本机不符,则直接丢弃;若相符,则在解析之后误差错就交付给上一层处理。

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


二. ARP工作流程

  1. 当需要知道目的主机的MAC地址时,在发送数据帧之前需要先发送一个ARP请求数据报,而这个数据报是发送给局域网内所有主机的,也就是以广播的形式来告知局域网内的主机们要找的是IP地址为XXX的主机的MAC地址;

  2. 当主机们收到这个ARP数据报时,如果请求中的目的IP地址与自身的IP不相符,则直接丢弃不处理;当IP地址就是源主机要找的主机时,就对ARP请求进行处理,之后再给发送ARP请求的源主机一个ARP应答数据报,并将自身的MAC地址填充其中;

  3. 而最后源主机收到ARP应答数据报之后,再进行处理获得MAC地址,就可以直接将要发送的数据给发送过去了;

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


三. ARP数据报格式

不管是发送ARP请求的数据报还是ARP应答数据报,其格式如下:

wKioL1c0kd2QuxIOAAAfGWRg1HQ995.png其中:

  • 以太网目的地址是目的主机的MAC地址,共6个字节,当ARP作为请求发送时并不知道,因此是全F;当ARP作为应答回应时,以太网目的地址是请求的源主机MAC地址;

  • 以太网源地址就是发送ARP主机的MAC地址,也是6个字节,作为请求是源主机MAC地址,作为应答是目的主机MAC地址;

  • 帧类型就是ARP,2个字节来存放;

  • 硬件类型是处理当前网络的链路层网络类型,当前为以太网就是1,占用2个字节;

  • 协议类型是指要转换的地址类型,当前要转换的是IP地址,仍然占用2个字节;

  • 硬件地址长度也就是MAC地址的长度,为6个字节,因此“6”这个数字就用一个字节就能存放了;

  • 协议地址长度是指当前的IP地址长度,也是用一个字节就能存放了,IPv4为4个字节,IPv6为16个字节;

  • op为1的话表示请求,2表示应答;

  • 发送端以太网地址就是发送ARP数据报的以太网网地址,也就是前面的以太网源地址,同样为6个字节的空间;

  • 发送端IP地址就是发送ARP数据报的主机IP地址,4个字节;

  • 目的以太网地址当为请求时是全F,应答时就为源主机MAC地址,6字节;

  • 目的IP地址当请求时为目的主机的IP地址,当为应答时就为源主机IP地址,4个字节;


前面三个部分14个字节是以太网的头部信息,而后面的28个字节就是ARP数据报的请求/应答的有效载荷信息;


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

栗子时间:

下面举个具体的栗子来分析上面ARP数据报的信息;

wKioL1c1dL_h_cAXAAAxLFK_M_s250.png

因为以太网中数据报中的有效信息最小字节数为46最大为1500,因此,ARP数据报中不够46位需要填充,而填充位内容没有定义,与具体实现相关;

上面的数据报为ARP请求数据报,也就是源主机请求目的主机的MAC地址,从上面可以看出,源主机的IP地址为 c0 a8 00 37 也就是192.168.0.55,而目的主机的IP地址是 c0 a8 00 02 也就是192.168.0.2;


下面为对上面ARP请求的一个应答ARP:

wKioL1c1elfiA2goAACOvGi7sTk976.png

在ARP请求数据报中,发送端IP为192.168.0.55,接收端也就是目的IP为192.168.0.2;

在ARP应答数据报中,发送端IP为192.168.0.2,接收端为192.168.0.55;


    从上面对ARP请求数据报和ARP应答数据报的分析中可以看出,两个主机都作为目的主机和源主机,当一个源主机要给目的主机发送数据但不知道其MAC地址时,就可以使用ARP请求数据报在局域网内请求目的主句的MAC地址,而当目的主机在收到ARP请求数据报发现其请求的IP地址和自身相符的时候,就会做出ARP应答并将自己的MAC地址填充其中,这样源主机接收ARP应答数据报之后提取目的主机的MAC地址就能够实现发送数据了。



《完》

本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1773034

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值