终于明白了为什么网络协议的标准里都是bit 0 1 2 3 4 5 6 7 8.... 了。今天还花了那么长时间想弄清楚例子代码里的各个bit的赋值,原来
1, 我们所看到的,加上htons后就是从左向右对应写下来的。
2, 作者之所以有的header加了htons,有的没有加,是因为,对于一个字节的值,如0x01,加了htons和没加htons,也就是说大端小端对于一个字节的值存储相同,而0x0001的大端和小端存储不同
3, 按照字节,对应地址的高低存储,也就是说对于大端,MSB所在的字节在大地址,而不是MSB在大地址里的大bit
比如代码中是htons(0x0040),和协议对应的时候是
0 1 2 3 | 4 5 6 7 || 8 9 10 11 | 12 13 14 15
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
而代码中对于0x04就直接赋值了,因为大小端是一样的
http://www.cnblogs.com/jacktu/archive/2008/11/24/1339789.html