tcp-ip详解卷二:实现022

tcp-ip详解卷二:实现022

ID:34406401

大小:1.21 MB

页数:33页

时间:2019-03-05

tcp-ip详解卷二:实现022_第1页
tcp-ip详解卷二:实现022_第2页
tcp-ip详解卷二:实现022_第3页
tcp-ip详解卷二:实现022_第4页
tcp-ip详解卷二:实现022_第5页
资源描述:

《tcp-ip详解卷二:实现022》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第22章协议控制块22.1引言协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。Internet协议维护Internet协议控制块(Internetprotocolcontrolblock)和TCP控制块(TCPcontrolblock)。因为UDP是无连接的,所以一个端结点需要的所有信息都可以在InternetPCB中找到;不存在UDP控制块。InternetPCB含有所有UDP和TCP端结点共有的信息:外部和本地IP地址、外部和本地端号、IP首部原型、该端结点使用的IP选项以及一个指向该端结点目的地址选路表入口

2、的指针。TCP控制块包含了TCP为各连接维护的所有结点信息:两个方向的序号、窗口大小、重传次数等等。本章我们描述Net/3所用的InternetPCB,在详细讨论TCP时再探讨TCP控制块。我们将研究几个操作InternetPCB的函数,会在描述UDP和TCP时遇到它们。大多数的函数以in_pcb开头。图22-1总结了协议控制块以及它们与file和socket结构之间的关系。该图中有几点要考虑:¥当socket或accept创建一个插口后,插口层生成一个file结构和一个socket结构。文件类型是DTYPE_SOCKET,UDP端结点的插口

3、类型是SOCK_DGRAM,TCP端结点的插口类型是SOCK_STREAM。¥然后调用协议层。UDP创建一个InternetPCB(一个inpcb结构),并把它链接到socket结构上:so_pcb成员指向inpcb结构,inp_socket成员指向socket结构。¥TCP做同样的工作,也创建它自己的控制块(一个tcpcb结构),并用指针inp_ppcb和t_inpcb把它链接到inpcb上。在两个UDPinpcb中,inp_ppcb成员是一个空指针,因为UDP不负责维护它自己的控制块。¥我们显示的其他四个inpcb结构的成员,从inp_f

4、addr到inp_lport,形成了该端结点的插口对:外部IP地址和端口号,以及本地IP地址和端口号。¥UDP和TCP用指针inp_next和inp_prev维护一个所有InternetPCB的双向链表。它们在表头分配一个全局inpcb结构(命名为udb和tcb),在该结构中只使用三个成员:下一个和前一个指针,以及本地端口号。后一个成员中包含了该协议使用的下一个临时端口号。InternetPCB是一个传输层数据结构。TCP、UDP和原始IP使用它,但IP、ICMP或ICMP不用它。我们还没有讲过原始IP,但它也用InternetPCB。与TC

5、P和UDP不同,原始IP在PCB中不用端口号成员,原始IP只用本章中提到的两个函数:in_pcballoc分配PCB,in_pcbdetach释放PCB。第32章将讨论原始IP。第22章协议控制块计计573下载描述符描述符描述符描述符插口层协议层所有UDP的双向循环链表Internet协议控制块所有TCP的双向循环链表Internet协议控制块和相关的TCP控制块图22-1Internet协议控制块以及与其他结构之间的关系22.2代码介绍所有PCB函数都在一个C文件和一个包含定义的头文件中,如图22-2所示。文件描述netinet/in_pc

6、b.hin_pcb结构定义netinet/in_pcb.cPCB函数图22-2本章中讨论的文件574计计TCP/IP详解卷2:实现下载22.2.1全局变量本章只引入一个全局变量,如图22-3所示。变量数据类型描述zeroin_addrstructin_addr32bit全零IP地址图22-3本章中引入的全局变量22.2.2统计量InternetPCB和TCPPCB都是内核的malloc函数分配的M_PCB类型。这只是内核分配的大约60种不同类型内存的一种。例如,mbuf的类型是M_BUF,socket结构分配的类型是M_SOCKET。因为内核

7、保持所分配的不同类型内存缓存的计数器,所以维护着几个PCB数量的统计量。vmstat-m命令显示内核的内存分配统计信息,netstat-m命令显示的是mbuf分配统计信息。22.3inpcb的结构图22-4是inpcb结构的定义。这不是一个大结构,只占84个字节。图22-4inpcb结构43-45inp_next和inp_prev为UDP和TCP的所有PCB形成一个双向链表。另外,每个PCB都有一个指向协议链表表头的指针(inp_head)。对UDP表上的PCB,inp_head总是指向udb(图22-1);对TCP表上的PCB,这个指针总是

8、指向tcb。46-49下面四个成员:inp_faddr、inp_fport、inp_laddr和inp_lport,包含了这个IP端结点的插口对:外部IP地址和端口

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。