翻译:理解TCP/IP网络栈&编写网络应用(下)
原文地址:原文地址
原作者:Hyeongyeop Kim
翻译:@蛋疼的axb http://2baxb.me
上篇地址:翻译:理解TCP/IP网络栈&编写网络应用(上)
数据结构
以下是一些关键数据结构。我们了解一下这些数据结构再开始查看代码。
sk_buff_structure
首先,sk_buff结构或skb结构代表一个数据包。图6展现了sk_buff中的一些结构。随着功能变得更强大,它们也变得更复杂了。但是还是有一些任何人都能想到的基本功能。
图6:数据包结构
包含数据和元数据
这个结构直接包含或者通过指针引用了数据包。在图6中,一些数据包(从Ethernet到Buffer部分)使用了指针,一些额外的数据(frags)引用了实际的内存页。
一些必要的信息比如头和内容长度被保存在元数据区。例如,在图6中,mac_header、network_header和transport_header都有相应的指针,指向链路头、IP头和TCP头的起始地址。这种方式让TCP协议处理过程变得简单。… Read the rest