原文地址:原文地址
原作者:Hyeongyeop Kim
翻译:@蛋疼的axb http://2baxb.me
上篇地址:翻译:理解TCP/IP网络栈&编写网络应用(上)

数据结构

以下是一些关键数据结构。我们了解一下这些数据结构再开始查看代码。

sk_buff_structure

首先,sk_buff结构或skb结构代表一个数据包。图6展现了sk_buff中的一些结构。随着功能变得更强大,它们也变得更复杂了。但是还是有一些任何人都能想到的基本功能。

图6 图6:数据包结构

包含数据和元数据

这个结构直接包含或者通过指针引用了数据包。在图6中,一些数据包(从Ethernet到Buffer部分)使用了指针,一些额外的数据(frags)引用了实际的内存页。

一些必要的信息比如头和内容长度被保存在元数据区。例如,在图6中,mac_header、network_header和transport_header都有相应的指针,指向链路头、IP头和TCP头的起始地址。这种方式让TCP协议处理过程变得简单。… Read the rest