第七章 域和协议

一、本章通过讲解Internet协议在系统初始化期间构造的数据结构,来为下文中讲解IP协议的各种操作提供了知识背景。文中会首先介绍协议域(同一个域下的各个协议在一个协议域中,但不一定在一层中,如IP协议和TCP协议都在Internet协议域中,但是他们不在一层)和一个叫做protosw的结构
二、系统在初始化阶段,建立起来的数据结构的总示意图在第154页的图7-16,图中用一个domains头指针将各个协议域用链表连接起来,每一个协议域(domain结构)有自己的一个protosw结构的数组,该数组中的每个元素表示该协议域内的一种协议。在数据结构的构造上,协议域有指针指向protosw结构的数组头部和尾部,protosw结构的数组有指针指向协议域地址。
三、协议域domain结构的功能:设置协议族的标识(如AF_INET等),设置域名称,对协议域的各种操作或者控制函数指针(根据协议域的不同,函数指针指向的函数会不同)
四、protosw结构的功能:该结构将一个协议域中的所有协议中的这个结构都组织到一个数组中。数组中的每一个元素表示该协议域下的一种协议。在protosw结构中,除了一些标识协议的常量,也有一些函数指针,这些函数指针负责对协议的各种操作(在图7-11中描述了协议的五个主要的入口点),当然函数指针里面也有初始化函数的函数指针。
五、系统初始化期间,内核调用domaininit函数来把domain结构和protosw结构连接到相应的地方(把他们搞成一个链表,如二中所述)
六、文中以IP协议的domain和protosw结构为例讲解了一下,比较好理解。
七、文中介绍了三个函数:

  • 1.pffindproto函数(有三个参数,源码没有看,不知道找的机制具体是什么):通过协议编号(如IPPROTO_TCP)查找protosw结构的数组中的一个元素(即协议)
  • 2.pffindtype函数(有两个参数,源码没有看,不知道找的机制具体是什么):通过类型(如SOCK_STREAM)查找protosw结构的数组中的一个元素(即协议)
  • 3.pfctlinput函数:该函数给每个域中的每个协议发送一个控制请求。在可能影响每个协议的事件发生时,该函数被调用。如接口被关闭,路由表发生改变等(但是如接口被关闭的情况,这一块跟前面章节中的那些ifnet,ip编址这些有什么样的联系,本章没有解释,估计是在pfctlinput函数里面调用的各个协议的函数指针及其参数里会与介绍)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值