epoll 系统调用及内核实现


epoll 系统调用 应用层 epoll 三个系统调用函数的原型: #include <sys/epoll.h> int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event* event

套接字缓冲区&net_device


套接字缓冲区数据管理 在内核分析(收到)网络分组时,底层协议的数据将传递到更高层。分送数据时顺序相反,各种协议产生的数据(首部和净荷)依次向更低层传递,直到最终发送。这些操作的速度对网络子系统的性能有决定性影响,因此内核使用一种特殊的结构,称为套接字缓冲区(socket buffer),具体源码如下

传输层分析(SCTP&DCCP)


流控制传输协议(SCTP) SCTP(Steam Control Transmission Protocol,流控制传输协议)是在 2007 年发布的 RFC4906 中定义的,但它首次被定义是在 2000 年。SCTP 设计用于通过 IP 网络传输公共交换电话网络(Public Switched

Linux内核领接子系统分析


邻接子系统核心 基础知识 Linux 邻接子系统负责发现房钱链路上的节点,并且将 L3(网络层)地址转换为 L2(数据链路层)地址。在 IPv4 中,实现这种转化协议为地址解析协议(Address Resolution Protocol, ARP),而在 IPv6 则为邻居发现协议(Neighbou

传输层分析


套接字分析 每个操作系统都必须提供网络系统入口和 API,Linux 内核网络子系统提供的标准 POSIX 套接字向用户提供接口。在 Linux 传输层之上的一切都属于用户空间。Linux 也遵循 Unix 范式(一切皆文件),因此套接字也与文件相关联,使用统一套接字 API 会让应用程序移植更容易

网络层分析


网络访问层仍受到传输介质的性质和相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎是完全分离的。为什么是几乎呢?该层不仅负责发送和接受网络数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设备来发送分组,也涉及对底层地址簇的处理(比如特定硬件的 MA