第三章 接口层
本章开始讨论 Net/3 在协议栈底部的接口层,它包括在本地网上发送和接收分组的硬件与软件。
我们使用术语设备驱动程序来表示与硬件及网络接口(或仅仅是接口)通信软件,网络接口是指在一个特定网络上硬件与设备驱动器之间的接口。
Net/3 接口层试图在网络协议和连接到一个系统的网络设备的驱动器间提供一个与硬件无关的编程接口。这个接口层为所有的设备提供以下支持:
1)一套精心定义的接口函数;
2)一套标准的统计与控制标志;
3)一个与设备无关的存储协议地址的方法;
4)一个标准的输出分组的排队方法。
这里不要求接口层提供可靠的分组传输,仅要求提供最大努力的服务。更高协议层必须弥补这种可靠性缺陷。本章说明为所有网络接口维护的通用数据结构。为了说明相关数据结构和算法,我们参考 Net/3 中三种特定的网络接口:
1)一个 AMD 7990 LANCE 以太网接口:一个能广播局域网的例子。
2)一个串行线 IP(SLIP)接口:一个在异步串行线上的点对点网络的例子。
3)一个环回接口:一个逻辑网络把所有输出分组作为输入返回。
总的来说,本章研究了结构 ifnet 和 ifaddr,它们被分配给在系统初始化时发现的每一个网络接口。结构 ifnet 链接成 ifnet 链表。每个接口的链路层地址被初始化,并被加到 ifnet 结构的地址链表中,还存放到数组 if_addrs 中。
还讨论了通用 sockaddr 结构及其成员 sa_family 和 sa_len,它们标识每个地址的类型和长度。还查看了一个链路层地址的 sockaddr_dl 结构的初始化。
希望我的总结可以帮助大家,感谢阅读我的博客!