1 / 52
文档名称:

uip源码分析.docx

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

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

分享

预览

uip源码分析.docx

上传人:459972402 2020/7/20 文件大小:1.26 MB

下载得到文件列表

uip源码分析.docx

相关文档

文档介绍

文档介绍: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第二项是 .位的,保存四个八位组.下来是ARP请求发送函数 :/*-----------------------------------------------------------------------------------*//**headertoanoutboundIPpacketandseeifweneedtosendoutanARPrequest.*为传出的 IP包添加以太网头并看是否需要发送 ..此函数应该在发送IP包时调用,它会检查IP包的目的IP地址,(maskandourIPaddress),,,thepacketintheuip_buf[](.,TCP)eventuallywillretransmitthedroppedpacket.*如果目的IP地址是在局域网中(由IP地址与子网掩码的与逻辑决定),,就取对应的MAC地址,加上以太网头,并返回,否则uip_buf[],此函数假设高层协议(如TCP),theIPaddressofthedefaultrouterisusedinstead.*如果目标 IP地址并非一个局域网 IP,则会使用默认路由的 ,apacketispresentintheuip_buf[]buffer,andthelengthofthepacketisintheglobalvariable*uip_len. 函数返回时,uip_buf[] 中已经有了一个包 ,其长度由*//*-----------------------------------------------------------------------------------*/voiduip_arp_out(void){structarp_entry*tabptr;uip_len指定./*'work,weusethedefaultrouter'sIPaddressinstead.//在ARP表中找到目的 IP地址,构成以太网头 .如果目的 IP地址不在局域网中 ,,weoverwritetheoriginalIPpacketwithanARPrequestfortheIPaddress.*/如果ARP表中找不到,则将原来的IP包替换成一个ARP请求./*Firstcheckifdestinationisalocalbroadcast. 首先检查目标是不是广播 */if(uip_ipaddr_cmp(IPBUF->destipaddr,broadcast_ipaddr)){memcpy(IPBUF->,broadcast_eth