您的位置:首页 > 理论基础 > 计算机网络

第三章 接口层

2016-08-26 17:43 387 查看
一、ifnet结构是一个通用的数据结构。系统初始化期间,每个设备被分配一个独立的ifnet结构,一个ifnet结构包含一个或多个设备的地址。用链表的形式组织。

二、ifnet结构包含了接口的若干信息,用来描述一个接口。其中ifaddr结构为接口地址结构

三、ifaddr结构用来描述一个接口地址,其中sockaddr结构用来描述地址。

四、socketaddr结构中有三个成员,分别表示结构的总长度、协议族及协议地址。该结构是一个通用的结构,但是每一种协议会定义自己专有的地址结构,如Internet地址结构sockaddr_in等,结构的大小和socketaddr相同。

五、在二和三通用的结构的基础上,各个设备为每一种协议定义了专用版本的ifnet和ifaddr。同时,不同协议还有专有的结构,如:

以太网:le_softc[]

环回:loif(与ifnet等价)

六、网络初始化概述:(1)一个名为pdevinit的结构数组来表示将要初始化的接口的初始化函数和数量(2)调用main函数开始进行初始化

七、设备及其初始换函数

LANCE以太网:leattach

SLIP(没人用了):slattach

环回接口:loopattach

八、以太网初始化概述:以太网使用leattach函数进行初始化,函数主要流程是将以太网的专有结构le_softc中的元素进行初始化,然后调用if_attach函数。

九、环回初始化概述:环回使用loopattach函数将其专有结构loif进行初始化,然后调用if_attach函数。

十、在七中的三个初始化函数中,其中均有一个函数if_attach,该函数的作用比较复杂,if_attach函数将接口的ifnet结构初始化完(前面做了一些但没有完成,函数中所做的是创建一个ifaddr结构,且其中包含着两个sockaddr_dl结构,并且初始化它们),然后将ifnet结构插入到先前配置好的接口列表上。

十一、在网络初始化的main函数中,ifinit函数的工作比较简单,其(1)将接口列表中没有设置输出队列长度的接口进行设置(2)设置一个监视计时器(还不太懂是个啥)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息