互联网协议控制块详解:UDP与TCP的PCB结构

需积分: 50 158 下载量 121 浏览量 更新于2024-08-06 收藏 27.27MB PDF 举报
"协议控制块-jpeg标准的中文文档pdf" 在计算机网络中,协议控制块(Protocol Control Block,PCB)是一种重要的数据结构,用于存储网络协议层所需的各种信息。第22章主要讨论了在JPEG标准框架下,如何利用PCB来管理和控制网络通信,特别是针对UDP和TCP这两种主要的传输协议。 PCB被设计用来存储Internet协议(如IP)和传输层协议(如TCP和UDP)所需的多种信息。对于无连接的UDP,所有端点所需的信息都能在Internet PCB中找到,因为UDP没有单独的控制块。而TCP则有其特定的TCP控制块,用于维护每个连接的详细状态,如序号、窗口大小、重传次数等。 在Net/3体系结构中,Internet PCB包含了所有UDP和TCP端点共有的信息,如外部和本地IP地址、端口号、IP首部原型以及IP选项。此外,它还包含一个指向目的地址路由表入口的指针,以便进行数据包的转发。 当创建一个socket或通过accept函数建立连接时,系统会生成一个file结构和一个socket结构。socket结构中包含了与之关联的PCB的指针,反之PCB也包含了对socket结构的指针。对于TCP,除了Internet PCB之外,还有一个专门的TCP控制块(tcp_cb结构),通过指针链接到Internet PCB上。在UDP中,由于没有TCP那样的连接状态,所以它的PCB中的某些特定指针为空。 图22-1展示了PCB与其他数据结构(如file和socket)的关系,以及它们如何组成端口对(外部IP和端口号,以及本地IP和端口号)。此外,UDP和TCP使用双向链表通过指针i_n_next和i_n_prev管理所有的Internet PCB。 在实现TCP/IP协议时,不同的协议层会根据需要使用PCB。原始IP虽然也使用PCB,但它并不需要端口号成员。原始IP仅使用两个函数:in_pcballoc分配PCB,in_pcbdetach释放PCB。原始IP的具体实现将在第32章中详细讨论。 这一章还强调了PCB作为传输层数据结构的重要性,指出TCP、UDP和原始IP都会使用PCB,而IP、ICMP或IGMP等较低层次的协议则不直接依赖于PCB。 在第1章的概述中,介绍了伯克利联网程序代码的基本情况,包括源代码的表示方式、历史背景、编程接口以及一个简单的UDP用户程序示例,这个示例展示了数据报从发送到接收的整个过程,同时也揭示了许多核心数据结构和概念,为后续章节的学习奠定了基础。源代码的组织和在整个系统中的位置也在本章末尾进行了说明。