本文的部分内容可能来源于网络,该内容归原作者所有,如果侵犯到您的权益,请及时通知我,我将立即删除,原创内容copyleft
归tingkman@163.com所有,使用GPL
发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。欢迎加入嵌入式交流群:3462094
在tcp ip 协议分析1中讲到网络报文帧,可以大致分3中一是ip数据包,一是arp数据包,还一个是rarp数据包,
tcp ip协议分析和实现2中讲了ip,本节则主要介绍arp处理流程。
1、首先先看一下arp数据包的在网络报文帧中的位置,tcp ip 协议分析1有,如下图。
2、然后查看arp报文格式,摘自tcp ip协议详解卷一4.4:
3、tcp ip协议中arp协议首先判断arp报文的第7、第8字节的op是arp请求,还是arp响应,如果是op为0x1即是arp请求,如果op为0x2即是arp响应。
4、当op为0x1时,即请求时,首先检查目标ip地址,目的ip地址为arp数据报文的最后四个字节,,检查方法和
tcp ip协议分析和实现2-ip报文分析流程2014-2-15,中的destination ip检查方法一样,假如目标ip地址是属于自己的
数据包,然后,将发送端的以太网地址(mac地址)和ip地址组成一个arp缓存,添加到arp缓存表中,我们知道,网络数据传输,数据的转发是依赖于arp缓存的。关于一个arp缓存包括哪些信息在以后的分析中会将介绍,
5、将发送端的信息加入arp缓冲表后,接着会附送一个arp replay 报文,即arp回应报文。申请一个网报报文缓冲区,
开始组装arp replay报文,主要是填充arp各个数据段,包括协议为ip,硬件物理地址即mac包括发送和接收、协议长度、操作码即op为0x2,还有接收ip、发送ip等等。最后将数据包传给网卡驱动程序,然后发送由网卡驱动程序发送给物理层phy,再由phy经网线发送到网络。
6、同时还要检查发送端ip地址,检查方法和上面一样,主要是确定发送ip是否和在这个子网内冲突,如果冲突,发送一个冲突警告信息到串口供用户查看
7、当arp报文是操作码(op)是0x2的时候,代表接收到的报文是一个arp相应报文,此种报文的目的地址是发送请求的mac地址,所以所arp请求目的地址是广播地址FF:FF:FF:FF:FF:FF,而arp响应的目的mac地址是单播,即针对请求发送的,
8、此时,首先也是先检查arp响应报文的目的ip 是否,和本地ip,组播,广播等等是否一致,检查方法和上面一致。同时,检查报文的发送ip是否在本地ip,如果不在本地ip范围内,则添加arp缓存,到本地arp缓存表,到此的已经介绍了两种缓存的添加方法,都是在arp请求响应中添加。
9、其实,添加完本地arp缓存之后,arp协议还有个工作,就是检查arp waiter,arp waiter就是arp发送一个广播请求后,会设置等待时间,在等待时间内没有应答,就在次发送arp广播请求,这个策略就是arp waiter所做的事情,
10、主机在发送arp请求的同时,会记录当前arp请求,把它加入到arp waiter中链表中,arpwaiter不断检查,有没有arp相应,每隔1.5s检查一次,如果没有响应,就在发一次请求,一般协议会设置连续发六次arp请求,每次发送的间隔会逐渐增大。
11、说到arp waiter,是在请求的时候记录的,那么什么时候清除那,就是在arp有相应的时候清除,清除后就不会进行10步骤的重发。
12、arp 添加相应对应删除,多久会删除那,一般设置的是120s也即是2分钟一旦有应答,arp waiter删除在次发送arp广播请求服务,这里讲的比较简单,只是个流程。以后可以慢慢详解
----------------
到此arp先讲到这里,arp主要用于arp缓存的添加。附件里有上面用到的数据包。
使用wireshark等网络分析工具查看,请将下载报文文件名改成arp.pcap,因为受上传限制,所以改了后缀名字
现在ip、arp讲了,rarp我们现在不做介绍,如果
需要以后再讲,rarp对简单协议来讲,可以不做实现,对于复杂应用,还是要实现的。
arppcap.jpg
阅读(1727) | 评论(0) | 转发(0) |