首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

构造数据包的有关问题

2012-03-12 
构造数据包的问题C/C++ codesock_alloc_send_skb(sk,alloclen + hh_len + 15,(flags & MSG_DONTWAIT), &er

构造数据包的问题

C/C++ code
sock_alloc_send_skb(sk,    alloclen + hh_len + 15,    (flags & MSG_DONTWAIT), &err);

代码摘自linux-2.6.34/net/ipv4/icmp.c,为传送到IP的数据包分配skb空间时,第二个参数表示要分配的大小,alloclen + hhlen + 15,这里hh_len是以太网报头长,alloclen是报文内容长度,最后加上15。
前两个理解,alloclen + hh_len就是报文长,最后的15字节怎么理解?

之前我理解可能是要16字节对齐,这里先补上15Bytes,后面做size & ~15操作。但实际上并没有,在sock_alloc_send_skb()分配是会做字节对齐,但已经考虑了补位,(size+32)& ~31。

到底怎么解释呢

[解决办法]
预留空间?

热点排行