struct sock结构体
时间: 2023-08-23 10:08:28 浏览: 150
struct sock详解
`struct sock` 是 Linux 内核网络编程中非常重要的一个结构体,它定义在 `<linux/net.h>` 头文件中,用于表示一个网络协议中的连接。每当一个新的连接建立时,内核会为其创建一个 `struct sock` 结构体来描述这个连接。`struct sock` 结构体的定义如下:
```c
struct sock {
/* ... */
unsigned short sk_family; /* 协议类型 */
unsigned short sk_type; /* 套接字类型 */
unsigned short sk_protocol; /* 协议编号 */
/* ... */
struct module *sk_owner; /* 指向拥有这个 sock 结构体的模块 */
/* ... */
};
```
其中,`sk_family` 表示协议类型,可以是 `AF_INET` 表示 IPv4 协议,也可以是 `AF_INET6` 表示 IPv6 协议,还可以是 `AF_UNIX` 表示 Unix 域套接字等。`sk_type` 表示套接字类型,可以是 `SOCK_STREAM` 表示流式套接字,也可以是 `SOCK_DGRAM` 表示数据报套接字等。`sk_protocol` 表示协议编号,通常是 0,表示使用默认协议。`sk_owner` 指向拥有这个 `struct sock` 结构体的模块,以便内核可以自动卸载这个模块。除此之外,`struct sock` 中还包含了很多其他的字段,用于表示连接状态、发送缓冲区、接收缓冲区、协议参数等等。
阅读全文