Linux操作系统原理—内核网络协议栈( 二 )
网络协议层(Network protocols):对应 IP layer 和 Transport layer 。 毫无疑问 , 这是整个内核网络协议栈的核心 。 这一层主要实现了各种网络协议 , 最主要的当然是 IP , ICMP , ARP , RARP , TCP , UDP 等 。
协议无关层(Protocol agnostic interface) , 又称协议接口层 , 本质就是 Socket 层 。 这一层的目的是屏蔽网络协议层中诸多类型的网络协议(主要是 TCP 与 UDP 协议 , 当然也包括 RAW IP ,SCTP 等等) , 以便提供简单而同一的接口给上面的系统调用层调用 。 简单的说 , 不管我们应用层使用什么协议 , 都要通过系统调用接口来建立一个 SOCKET , 这个 SOCKET 其实是一个巨大的 sock 结构体 , 它和下面的网络协议层联系起来 , 屏蔽了不同的网络协议 , 通过系统调用接口只把数据部分呈献给应用层 。
BSD(Berkeley Software Distribution)socket:BSD Socket 层 , 提供统一的 SOCKET 操作接口 , 与 socket 结构体关系紧密 。
INET(指一切支持 IP 协议的网络) socket:INET socket 层 , 调用 IP 层协议的统一接口 , 与 sock 结构体关系紧密 。
系统调用接口层(System call interface) , 实质是一个面向用户空间(User Space)应用程序的接口调用库 , 向用户空间应用程序提供使用网络服务的接口 。
本文插图
协议栈的数据结构
本文插图
msghdr:描述了从应用层传递下来的消息格式 , 包含有用户空间地址 , 消息标记等重要信息 。
iovec:描述了用户空间地址的起始位置 。
file:描述文件属性的结构体 , 与文件描述符一一对应 。
file_operations:文件操作相关结构体 , 包括 read、write、open、ioctl 等 。
socket:向应用层提供的 BSD socket 操作结构体 , 协议无关 , 主要作用为应用层提供统一的 Socket 操作 。
sock:网络层 sock , 定义与协议无关操作 , 是网络层的统一的结构 , 传输层在此基础上实现了 inet_sock 。
sock_common:最小网络层表示结构体 。
inet_sock:表示层结构体 , 在 sock 上做的扩展 , 用于在网络层之上表示 inet 协议族的的传输层公共结构体 。
udp_sock:传输层 UDP 协议专用 sock 结构 , 在传输层 inet_sock 上扩展 。
proto_ops:BSD socket 层到 inet_sock 层接口 , 主要用于操作 socket 结构 。
proto:inet_sock 层到传输层操作的统一接口 , 主要用于操作 sock 结构 。
net_proto_family:用于标识和注册协议族 , 常见的协议族有 IPv4、IPv6 。
softnet_data:内核为每个 CPU 都分配一个这样的 softnet_data 数据空间 。 每个 CPU 都有一个这样的队列 , 用于接收数据包 。
- Windows|New Windows 11操作系统壁纸灵感来源,新的视角,一个新的时代
- 操作系统|如何从一个静态库中访问当前模块的实例句柄
- Windows11|win11操作系统与win10:差距无法接受
- 操作系统|全新手机操作系统ocean遭曝光:支持应用小窗,采用双系统设计
- 核聚变|核聚变的原理是什么?一次可以产生多少能量、掌握后的前景有多大
- 抗衰老|干细胞美容防衰原理,中科西部细胞研究院
- 显卡|鸿蒙OS靠边站,中兴百分百自研操作系统,电脑和高铁都已经用上了
- 操作系统|新款笔记本电脑的操作系统“装不上”怎么回事?拿走不谢
- 操作系统|国内三大操作系统:UOS统一操作系统,银河麒麟,鸿蒙系统
- 操作系统|为什么说我们现在能做好操作系统