欢迎来到天天文库
浏览记录
ID:40521267
大小:178.00 KB
页数:13页
时间:2019-08-04
《ARP+ICMP请求和回复信息》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、下图是ping装置时抓图工具显示的提示信息:电脑:MAC:00:25:11:6f:7b:16IP:192.168.2.30装置:MAC:ac:de:48:00:00:80IP:192.168.2.5图1图1显示先是ARP广播,然后电脑收到了ARP回复(信息如图2),之后电脑又发ICMP命令请求(信息如图3),但没有收到回复,ping不通。图2图2是ARP回复的信息,从上图可以看到ARPFramechecksequence不对,但ARP回复(reply)信息的MAC地址和IP地址都是正确的图3图3是电脑的ICMP请求信息,从图3来看 请求信息正常,校验也正确,但就是收不到回复ARP报文被封装
2、在以太网帧头部中传输,如图所示,是ARP请求协议报文头部格式。>上图中粗体的部分是以太网(这里是EthernetII类型)的帧头部。其中:第一个字段是广播类型的MAC地址:0XFF-FF-FF-FF-FF-FF,其目标是网络上的所有主机。第二个字段是源MAC地址,即请求地址解析的主机MAC地址。第三个字段是协议类型,这里用0X0806代表封装的上层协议是ARP协议。最后一个字段FCS,是4个字节的帧校验序列(FrameCheckSequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。接下来是ARP协议报文部分。其中各个字段的含义如下:
3、硬件类型:表明ARP实现在何种类型的网络上。协议类型:代表解析协议(上层协议)。这里,一般是0800,即IP。硬件地址长度:MAC地址长度,此处为6个字节。协议地址长度:IP地址长度,此处为4个字节。操作类型:代表ARP数据包类型。0表示ARP请求数据包,1表示ARP应答数据包。源MAC地址:发送端MAC地址。源IP地址:代表发送端协议地址(IP地址)。目标MAC地址:目的端MAC地址(待填充)。目标IP地址:代表目的端协议地址(IP地址)。ARP应答协议报文和ARP请求协议报文类似。不同的是,此时,以太网帧头部的目标MAC地址为发送ARP地址解析请求的主机的MAC地址,而源MAC地址为被
4、解析的主机的MAC地址。同时,操作类型字段为1,表示ARP应答数据包,目标MAC地址字段被填充以目标MAC地址。//////////////////////////////////////////////////////////////////////////////// 我也不知道怎么搞得,奇怪了,我的8019驱动为什么能收ARP,UDP包,却收不到ICMP和TCP包!! ARP已经通了,而中断对icmp(ping)和tcp(telnet)却不理??我是用Ethereal抓的包。 各位碰到没有,帮我想想问题出在那儿了!!多谢!!同样是数据包,差距咋这么大呢!!即然能正确接收A
5、RPUDP包,说明我的8019驱动应该是好的吧?怎么会有这种问题???ping172.16.4.15 这个ip不存在,发4个ARP包,都能接收并处理;ping17727 17727当作主机名,发3个NBNS包,nbns是udp,能收到;ping172.16.4.18 8019的ip,发4个ICMP包,网卡根本不中断;telnet172.16.4.187 发3个TCP包,没反应:(?????????????????????????兄弟们帮忙分析一下,想不通啊!!多谢答2:把驱动源代码贴出,这样才好帮你改,这样说鬼知道是什么问题答3:应该是软件问题,好好找
6、找。答4:是skyeye杨晔的驱动驱动太长了,能把人看晕的下面是8019中断的代码,我就在这里设断点,ARPUCP包能中断,而icmp和tcp就停不下来。????void__irq ne2k_isr(void){ u8_t isr,curr,bnry; structnetif*netif; rI_ISPC=BIT_EINT1; //closenic //********************addbymaokorfordebug,2005.6.17******* outb(CMD_PAGE2
7、CMD_NODMA
8、CMD_STOP,NE_CR);
9、 isr=inb(NE_IMR); //*****************************************************888888 //inPAGE0 outb(CMD_PAGE0
10、CMD_NODMA
11、CMD_STOP,NE_CR); isr=inb(NE_ISR); //ramoverflowinterrupt if(isr&ISR_OVW){
此文档下载收益归作者所有