欢迎来到天天文库
浏览记录
ID:45758142
大小:218.67 KB
页数:19页
时间:2019-11-17
《TCPIP详解卷三:TCP事务协议HTTPNNTP和UNIX域协议10》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第10章T/TCP实现:TCP函数10.1概述木章包括了T/TCP作过修改的各个TCP函数。也就是说,tcp_output(前一章)、tcp_input,flltcp_usrreq(/5两章)以外的所有函数。木章定义了两个新的函数,tcp_rtlookup和比卩_96七208<3116,用在TAO缓存中查找记录项。tcp_closeW数修改以后,当使用T/TCP的连接关闭时,可以在路由表中记录往返时间估计值(平滑的平均值和平均偏差估计)。常规协议只在连接上传送了一至少16个满数据报文段后才记录。然而,T/TCP通常只发送少量数据,但与同一对等端之间的这些不同连接的估计值应该保留下来。T
2、/TCP屮对MSS选项的处理也有所改变。有一部分改变是为了在Net/3中淸理过载的tcp_mss函数,这样就把它分成了一个计算MSS以便发送的函数(tcp_mssend)和另一个处理接收到的MSS选项的函数(tcp_mssrcvd)oT/TCP同时也将从対等端收到的最新MSS值保存到TAO缓存记录项屮。在接收到服务器的SYN和最新的MSSZ前,如果要随SYN发送数据,T/TCP就用这个记录來初始化发送MSS。Net/3屮的tcp_dooptions函数修改以后能够识别三个新的T/TCP选项:CC^CCnew和CCechOo10.2tcp_newtcpcbi<^
3、用PRU_ATTACH请
4、求创建新的插口时要调用该函数。图10-1中的五行代码用來代替卷2第667页的第177〜178行。tcpjsubr.c181if(tcp_do_rfC1323)182>t_flags=(TF_REQ_SCALE
5、TF.REQ_TSTMP);183if(tcp_do_rfC1644)184tp->tflags
6、=TFREQCC;180Jmaxseg=tp->t_maxopd=tcp_mssdflt;tcpjsubr.c图10・ltcp』ewtcpcb函数:T/TCP所做的修改180在前而图8-3有关的介绍屮提到过,t_maxopd是每个报文段中可以发送的TCP选项加上数据的最大字节数。它和
7、t_maxseg的默认值均为512(tcp_mssdflt)o由于这两个值和等,表明报文段屮不能再有TCP选项。在后面的图10・13和图10-14屮,如果时间戳选项或者CC选项(或者两者同时)需要在报文段中发送,就要减小t.maxseg的值。183-184如果全局变量tcp_do_rfcl644非零(它的默认值为1),且设置了TF_REQ_CC标志,这将使tcp_output伴随SYN发出CC或CCnew选项(图9-6)。下载—10.3tcp_rtlookup函数tcp_mss(卷2第717-718页)执行的第一项操作是读取为该连接所缓存的路山(存储在46structroute{rou
8、te.h47structrtentry*ro_rt;48structsockaddrro_dst;49);/・pointertostructwithinformation♦//*destinationofthisroute♦/route.h432structrtentry•433tcp_rtlookup(inp)434structinpcb*inp;435{436structroute*ro;437structrtentry*rt;tcpjsubr.c438439440441442443444445446447448449450451452}ro=np->inp_route;rt=ro
9、・>ro_rt;if(rt-=NULL){/■Norouteyetfsotrytoacquireone*/i£(inp->inp_faddr.s_addr!«INADDR_ANY){ro->ro_dst.sa_family=AF.INET;ro・>ro_dst.sa_len=sizeof(rro_dst);((structsockaddr_in♦)&ro->ro_dst)->sin_addr=inp->inp_faddr;rtalloc(ro);rt=ro->ro_rt;})return(rt);tcpjsubr.crtentry{}其中rn_key•为128.32.33.5Ixtpa
10、bO插口对Atcpcbf)212832330T5inp^routerouteOinp_ppcbro_rt16InternetPCBfi
此文档下载收益归作者所有