1 / 70
文档名称:

uip源码分析.doc

格式:doc   大小:544KB   页数:70页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

uip源码分析.doc

上传人:相惜 2020/10/16 文件大小:544 KB

下载得到文件列表

uip源码分析.doc

文档介绍

文档介绍:uIP的ARP协议代码分析之一ARP请求(是根据IP地址获取物理地址的一个TCP/IP协议同时将IP地址和硬件地址存入本机ARP缓存中,下次请求时直接查询ARP缓存。)对于一个设备用的ARP协议而言,重要的东西包括三方面:(:首先,定义一个缓存表的数据结构,99行起:structarp_entry{u16_tipaddr[2];structuip_eth_addrethaddr;u8_ttime;};只有三个项,很简单第一项是ip地址,16*2=4*8位的,:/*-----------------------------------------------------------------------------------*//***headertoanoutboundIPpacketandseeifweneed*tosendoutanARPrequest.*为传出的IP包添加以太网头并看是否需要发送ARP请求.**functionchecksthedestinationIPaddressoftheIPpackettosee*MACaddressthatshouldbeusedasadestinationMAC*.*此函数应该在发送IP包时调用,它会检查IP包的目的IP地址,看看以太网应该使用什么目的MAC地址.*work(determined*maskandourIPaddress),thefunction*checkstheARPcachetoseeifanentryforthedestinationIP*,headerisprependedandthe**destinationIPaddress,thepacketintheuip_buf[]isreplacedby**anditisassumedthattheyhigherlevelprotocols(.,TCP)*eventuallywillretransmitthedroppedpacket.*如果目的IP地址是在局域网中(由IP地址与子网掩码的与逻辑决定),函数就会从ARP缓存表中查找有*,就取对应的MAC地址,加上以太网头,并返回,否则uip_buf[]中的数据包会被替换成一个*,此函数假设高层协议(如TCP)会最终重传扔掉的包.*work,theIP*addressofthedefaultrouterisusedinstead.*如果目标IP地址并非一个局域网IP,则会使用默认路由的IP地址.*Whenthefunctionreturns,apacketispresentintheuip_buf[]*buffer,andthelengthofthepacketisintheglobalvariable*,uip_buf[]中已经有了一个包,其长度由uip_len指定.*//*-----------------------------------------------------------------------------------*/voiduip_arp_out(void){structarp_entry*tabptr;/*'work,weusethedefaultrouter'sIPaddressinstead.//在ARP表中找到目的IP地址,,则使用默认//,weoverwritetheoriginalIPpacketwithanARPrequestfortheIPaddress.*///如果ARP表中找不到,则将原来的IP包替换成一个ARP请求./**/i