【深入理解 Linux 网络】收包原理与内核实现(下) 从 TCP 传输层到应用
本系列文章
- 【深入理解 Linux 网络】关键术语
- 【深入理解 Linux 网络】内核初始化流程
- 【深入理解 Linux 网络】收包原理与内核实现(上) 从网卡到协议层
- 【深入理解 Linux 网络】收包原理与内核实现(下) 从 TCP 传输层到应用
上一篇我们分析了从网卡到达数据包到 IP 层的处理流程,接下来我们将深入探讨 L4 层 TCP 协议栈的处理流程,也就是来到了图中第
Linux 收包的整体流程如下:
图片来自 Linux Networking Stack tutorial: Receiving Data
7.3 TCP 协议栈处理
TCP 协议栈的入口函数是 tcp_v4_rcv,这个函数比较复杂,主要完成以下几件事情:
- 检查 TCP 头部是否合法。
- 根据 TCP 头部信息查找对应的 socket。
- 将数据包交给对应的 socket 进行处理。
具体实现可以参考 tcp_v4_rcv 函数的代码。