是否对Linux中的tcp数据路径有一个很好的概述(2.6,如果路径实际不同,则不是2.4)?在tcp / ip堆栈处理的不同阶段的数据包在哪里?
如何将数据包打包到tcp段,然后打包ip包。它是如何传输到网卡的? (一系列I / O寄存器写入和DMA?)它是在“写入”系统调用处理程序(带有一些深度调用堆栈)中传输到网卡还是在其他时刻传输?
答案 0 :(得分:4)
http://www.linuxfoundation.org/collaborate/workgroups/networking/kernel_flow
我认为这就是你想要的。它显示了从sendmsg()到dev_hard_start_xmit()的整个过程,这是网络堆栈将数据包传递给NIC驱动程序的地方。
答案 1 :(得分:3)
试试这个:The Linux TCP/IP Stack: Networking for Embedded Systems
Linux TCP / IP协议栈:网络连接 嵌入式系统/ Thomas Herbert (作者)。Linux TCP / IP协议栈: 嵌入式系统的网络化 提供深入的指南 实现和使用Linux 嵌入式系统中的TCP / IP堆栈 项目。它以一般将军开始 TCP / IP网络概述 适用的背景资料 网络标准。从那里,它 详细介绍了TCP / IP的实现 Linux 2.6通过以下数据包 数据流经堆栈 从发送系统,出线, 并通过输入端返回 堆叠在接收机器中。这个 独特的方法给程序员一个 “内部”看整个过程。 在整篇文章中,主题是 对工程师特别感兴趣 实施嵌入式系统 讨论过,比如套接字,网络 接口,应用层 协议,实用 注意事项。这太好了 嵌入式系统的资源 程序员和工程师,以及 网络专业人士感兴趣 了解有关实施的更多信息 2.6内核中的Linux TCP / IP。