从我的理解,当一个套接字缓存(SKB)由内核堆栈(Tx通道上)分配时,“头”和“尾”指针指向启动和保留的内存空间结束。
我的QS是:究竟是什么决定了这个数额:(尾 - 头)个字节? 它是最大MTU? 似乎并不喜欢它作为一个小实验表明字节(尾头)的#可以相当小(320个字节等)。 因此,它是插座的应用程序,在这里扮演一个角色?
此外,AFAIK,这个想法是预留足够的存储器,使得没有进一步allocs要求进一步向下协议栈,即,保留空间可以比有效载荷更多。 如果是这样,那如果进一步封装完成(如VoIP,SSL等?)的情况下?
更新:这是否有助于回答了QS?
发现在网/支持IPv4 / tcp_output.c:
... tcp_make_synack(){... SKB = sock_wmalloc(SK,MAX_TCP_HEADER + 15 + s_data_desired,1,GFP_ATOMIC); ...}
这似乎是TCP状态M / C的SYN-ACK的一部分。 所以,通过这种方式,“大小”似乎摸出大约320。
- TCP分段的数据包..默认的“MSS”是512? < - 基于tcp_base_mss?
TIA!