Data path (move) tcp data from syscall "write" to I / O register programming
Is there a good overview of the tcp data path in Linux (2.6, not 2.4 if the path is really different)? Where is the packet at different stages of tcp / ip packet processing?
How the packet is packed into a tcp segment and then an ip packet. How is it transferred to the network card? (with the write sequence of the I / O and DMA registers?) Is it passed to the network card in the "write" syscall handler (with some deep call) or is it passed at some other point?
a source to share
http://www.linuxfoundation.org/collaborate/workgroups/networking/kernel_flow
I think this is what you want. It shows the entire process from sendmsg () to dev_hard_start_xmit (), where the network stack passes the packet to the NIC driver.
a source to share
Try this: Linux TCP / IP Stack: Networking for Embedded Systems
Column TCP / IP Linux: Networking for Embedded Systems / Thomas Herbert (Author). TCP / IP Stack for Linux: Networking for Embedded Systems provides detailed guidance for implementing and using the Linux TCP / IP stack in embedded systems projects. It starts with a general overview of TCP / IP networks, with background information on applicable networking standards. From there , the implementation of TCP / IP in Linux 2.6 is detailed, after executing the packet data passing through the stack from the sending system, draw the wire, and back through the input side of the stack to the receiving machine. This unique approach gives programmers an “inside” view of the entire process. Throughout the text of the topic of particular interest to the engineers of the implementation of the implemented systems, for example, sockets, network interfaces, application layer of protocols and practical considerations were discussed. This is a great resource for embedded system programmers and engineers, as well as networking professionals interested in learning more about the Linux TCP / IP implementation in the 2.6 kernel.
a source to share