当前位置: 技术问答>linux和unix
构造数据包的问题
来源: 互联网 发布时间:2017-01-10
本文导语: 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是报...
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。
到底怎么解释呢
|
预留空间?