卷2 第7章 域和协议
7.1 引言
Net/3支持多种协议域,每种域使用相同编址方法。
协议域
| 协议族 | 地址族 | 说明 |
|---|
| PF_INET | AF_INET | Internet |
| PF_OSI | AF_OSI | OSI |
| PF_LOCAL/PF_UNIX | AF_LOCAL | Unix域 |
| PF_ROUTE | AF_ROUTE | 选路 |
7.2 代码介绍
netinet/domain.h:domain结构
netinet/protosw.h:protosw结构
netinet/in_proto.c:IP domain和protosw
kern/uipc_domain.c:初始化
7.3 domain结构
| 成员 | 说明 |
|---|
| dom_family | 地址族 |
| dom_name | 名称 |
| dom_init | 初始化函数 |
| dom_protosw | 协议交换表 |
| dom_rtattach | 选路初始化 |
7.4 protosw结构
| 成员 | 说明 |
|---|
| pr_type | 插口类型 |
| pr_domain | 所属域 |
| pr_protocol | 协议号 |
| pr_flags | 标志 |
| pr_input | 输入处理 |
| pr_output | 输出处理 |
| pr_usrreq | 用户请求 |
| pr_init | 初始化 |
| pr_fasttimo | 快速定时器 |
| pr_slowtimo | 慢速定时器 |
| pr_drain | 资源释放 |
pr_type
| 类型 | 说明 |
|---|
| SOCK_STREAM | TCP |
| SOCK_DGRAM | UDP |
| SOCK_RAW | 原始IP |
7.5 IP的domain和protosw结构
inetsw数组
| 索引 | 协议 | 说明 |
|---|
| 0 | IP | 管理函数 |
| 1 | UDP | SOCK_DGRAM |
| 2 | TCP | SOCK_STREAM |
| 3 | ICMP | SOCK_RAW |
| 4 | IGMP | SOCK_RAW |
| 5 | 原始IP | SOCK_RAW |
7.6 pffindproto和pffindtype函数
7.8 IP初始化
ip_protox数组
ip_init函数
- 查找原始协议
- 初始化ip_protox
- 初始化重装队列
- 设置IP输入队列大小(50)
7.9 sysctl系统调用
- 访问/修改系统参数
- IP转发标志:
CTL_NET.PF_INET.0.IPCTL_FORWARDING
7.10 小结
domain和protosw结构组织协议。pffind函数查找协议。IP初始化建立分用表。