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

网络协议初始化2

2013-12-22 15:37 260 查看
本文笔记基础:linux tcp ip 协议栈分析

Linux 内核中为了支持多个地址族, 定义了这么一个变量: static struct net_proto_family

*net_families[NPROTO],NPROTO 等于32,也就是说Linux 内核支持最多32 种地址族。不过目前已经

够用了,我们常用的不外乎就是PF_UNIX(1)、PF_INET(2)、PF_NETLINK(16),Linux 还有一个自

有的PF_PACKET(17),即对网卡进行操作的选项。它们都通过如下的结构来定义,这个结构没有太多

的成员:

1. struct net_proto_family {

2. int family; /* 这个值就是地址族的标识 */

3. int (*create)(struct socket *sock, int protocol);

4. ......

5. };

在 PF_INET 地址族之内,BSD 套接字还定义了多种我们熟知套接字类型,如流(stream),数据报

(datagram),原始包(raw)等。

为了支持多种套接字类型,内核中是有多种相应的全局变量与之对应,而不是只有一种。比如proto{}

结构类型的,有inet_protocol{}结构类型的,有inet_protosw{}结构类型的,有proto_ops{}结构类型。

网络协议在网络设备初始化之前完成的。

tcp_v4_init( )和tcp_init( )的不同:前者什么都不做(即不在本书的讨论范围内),而后者才是用来初

始化TCP 协议需要的各项hash 表和sysctl_xxx 全局配置项的。

arp_init 完成系统neighbour 表的初始化。

ip_rt_init 初始化IP 路由表rt_hash_table,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: