互联网协议控制块-PCB详解与UDP/TCP的关系

需积分: 50 98 下载量 13 浏览量 更新于2024-08-05 收藏 36.37MB PDF 举报
"协议控制块-现代微分几何与Mathematica的应用" 在计算机网络中,协议控制块(Protocol Control Block, PCB)是一个重要的概念,它用于存储和管理网络协议层所需的各种信息。在TCP/IP协议栈中,PCB主要用于UDPI(User Datagram Protocol)和TCP(Transmission Control Protocol)的插座(socket)操作。根据标题和描述,本章主要讨论的是协议控制块在网络协议中的应用,特别是与UDP和TCP相关的PCB。 TCP/IP协议族中,Internet PCB(Internet Protocol Control Block)是一个通用的数据结构,用于存储UDP和TCP端点共享的信息,如外部和本地IP地址、端口号、IP头部原型和IP选项等。TCP控制块则包含更具体连接状态的信息,比如两个方向的序列号、窗口大小、重传计数等,这些都是TCP为了维护面向连接的服务所必需的。 在Net/3系统中,当创建一个socket或者通过accept函数建立连接时,会生成file结构和socket结构。socket结构的类型依据协议的不同而变化,UDP是SOCK_DGRAM,TCP是SOCK_STREAM。接着,协议层会被调用,对于UDP,会创建一个i npcb结构(Internet PCB)并与socket结构关联;对于TCP,除了创建i npcb,还会创建tcpcb结构(TCP控制块),并用指针连接这两个结构。 在图22-1中,展示了PCB与其他数据结构的关系。一个关键点是,UDP的i np_pcb成员为空,因为UDP不需要维护自己的控制块。而TCP的i np_ppcb和t_inpcb成员则链接到i npcb上,形成一个双向链表,方便管理所有Internet PCB。此外,i npcb结构中还有i np_faddr到i np_lport等成员,这些字段用于标识端点的IP地址和端口号。 TCP和UDP通过i np_next和i np_prev指针维护所有Internet PCB的链表。全局的i npcb结构(如udb和tcb)用于管理这些链表,其中包含下一个和前一个指针,以及本地端口号的分配。原始IP(raw IP)虽然也使用PCB,但不使用端口号,并且仅使用两个函数:in_pcballoc分配PCB,in_pcbdetach释放PCB。原始IP的详细讨论将在第32章中进行。 协议控制块是TCP/IP协议栈中不可或缺的部分,它为UDP和TCP提供必要的信息存储空间,使得网络通信得以高效和可靠地进行。在实现和理解网络协议时,了解和掌握PCB的工作原理和使用方法至关重要。