您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 网络设计课程报告参考
1111以下内容仅供参考(如有错误,纯属意外)BSD4.3网络协议栈源码分析1.给出TCP/IP协议栈中网络数据流图2.给出数据在TCP/IP协议栈中每层协议的主要处理函数,给出函数的功能、输入与输出参数含义。3.找出数据发生变化处的程序实现代码。输入时:1.网络数据流图以太网数据帧leintr(unit)LER_INTlerint(unit)leread(unit,buf,len)ether_input(ifp,eh,m)schednetisr(NETISR_IP)soft01intr(fp)ipintr()2222udp_input(m,iphlen)sbappendaddr(sb,asa,m0,control)sorwakeup(inp-inp_socket)soreceive(so,paddr,uio,mp0,controlp,flagsp)2.函数功能见课本3.数据发生变化处的程序实现代码分析:leread(unit,buf,len)函数:et=(structether_header*)buf;//提取以太网帧首部len=len-sizeof(structether_header)-4;//提取除以太网首部和CRC的数据长度m=m_devget((char*)(et+1),len,off,&le-sc_if,0);//提取除以太网首部的数据帧,并存放于mbufether_input(ifp,eh,m):inq=&ipintrq;//选择IP输入队列IF_ENQUEUE(inq,m);//将数据插入IP输入队列ipintr()函数:ip=mtod(m,structip*);//从第一个mbuf中获取ip首部hlen=ip-ip_hl2;//获取IP首部的字节长度ip-ip_len-=hlen;//获取IP数据报除首部的数据长度udp_input(m,iphlen)函数:m_adj(m,len-ip-ip_len);//从m指向的mbuf中移走ip_len字节,即移走除ip首部的IP数据报iphlen+=sizeof(structudphdr);//获取ip首部和udp首部长度m-m_len-=iphlen;//将从m_data开始的数据的字节数m_len更新m-m_pkthdr.len-=iphlen;//将分组mbuf链表中所有的数据长度更新m-m_data+=iphlen;//将指向mbuf缓存的指针位置更新if(sbappendaddr(&inp-inp_socket-so_rcv,(structsockaddr*)&udp_in,m,opts)==0)//将UDP数据报放入到相应的插口队列输出时:1.协议栈中输出网络数据流图sosend(so,addr,uio,top,control,flags)PRU_SEND3333udp_usrreq(so,req,m,addr,control)udp_output(inp,m,addr,control)ip_output(m0,opt,ro,flags,imo)ether_output(ifp,m0,dst,rt0)lestart(ifp)leput(lebuf,m)输出分组2.功能见课本。3.数据发生变化处的程序实现代sosend(so,addr,uio,top,control,flags)函数:m-m_len=len;//更新mbuf的长度udp_output(inp,m,addr,control)函数:M_PREPEND(m,sizeof(structudpiphdr),M_DONTWAIT);ui=mtod(m,structudpiphdr*);ui-ui_next=ui-ui_prev=0;ui-ui_x1=0;ui-ui_pr=IPPROTO_UDP;ui-ui_len=htons((u_short)len+sizeof(structudphdr));ui-ui_src=inp-inp_laddr;ui-ui_dst=inp-inp_faddr;ui-ui_sport=inp-inp_lport;ui-ui_dport=inp-inp_fport;ui-ui_ulen=ui-ui_len;ip_output(m0,opt,ro,flags,imo)函数:ip=mtod(m,structip*);ip-ip_v=IPVERSION;4444ip-ip_off&=IP_DF;ip-ip_id=htons(ip_id++);ip-ip_hl=hlen2;ipstat.ips_localout++;ether_output(ifp,m0,dst,rt0)函数:eh=mtod(m,structether_header*);
本文标题:网络设计课程报告参考
链接地址:https://www.777doc.com/doc-8567824 .html