《TCP/IP详解卷2:实现》笔记--协议控制块

本文详细介绍了TCP/IP协议控制块(PCB)的作用,包括其在UDP和TCP中的应用,以及与socket结构的关系。重点讨论了inpcb的结构、创建与释放,以及如何通过bind、connect和分用操作来管理和使用PCB。同时,解释了SO_REUSEADDR和SO_REUSEPORT选项在端口绑定中的影响。
摘要由CSDN通过智能技术生成

协议层使用协议控制块(PCB)存放各UDP和TCP插口所要求的多个信息片。Internet协议维护Internet协议控制块

(internet protocol control block)和TCP控制块(TCP control block)。因为UDP是无连接的,所以一个端结点需要的

所有信息都在Internet PCB中找到,不存在UDP控制块。

Internet PCB含有所有UDP和TCP端结点共有的信息:外部和本地IP地址、外部和本地端号、IP首部原型、该端结点使用的

IP选项以及一个指向该端结点目的地址选路表入口的指针。TCP控制块包含了TCP为各连接维护的所有结点信息:两个方向

的序号、窗口大小、重传次数等等。

下图总结了协议控制块以及它们与file和socket结构之间的关系。

图中有几个要点要考虑:
1.当socket或accept创建一个插口后,插口层生成一个file结构和一个socket结构。文件类型是DTYPE_SOCKET,UDP端结点
的插口类型是SOCK_DGRAM,TCP端结点插口类型是SOCK_STREAM。
2.然后调用协议层。UDP创建一个Internet PCB(一个inpcb结构),并把它链接到socket结构上:so_pcb成员指向inpcb结构,
inp_socket成员指向socket结构。

3.TCP做同样的工作,也创建它自己的控制块(一个inpcb结构),并用指针inp_ppcb和t_inpcb把它链接到inpcb上。在两个

UDP inpcb中,inp_ppcb成员是一个空指针,因为UDP不负责维护它自己的控制块。
4.我们显示的其他四个inpcb结构的成员,从inp_faddr到inp_lport,形成了该端结点的插口对:外部IP地址和端口号,以及
本地IP地址和端口号。
5.UDP和TCP用指针inp_next和inp_prev维护一个所有Internet PCB的双向链表。他们在表头分配一个全局inpcb(命名为udb
和tcb),在该结构中使用三个成员:下一个和前一个指针,以及本地端口号。后一个成员中包含了该协议使用的下一个临时
端口号。
Internet PCB是一个传输层数据结构。TCP、UDP和原始IP使用它,但是IP、ICMP或IGMP不用它。

1.inpcb的结构

下图是inpcb结构的定义。

inp_next和inp_prev为UDP和TCP的所有PCB形成一个双向链表。另外,每个PCB都
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值