TCP报头中字节的正确顺序是什么?
问题描述:
我想自己编码一个TCP头,但不明白什么是正确的位/八位组。这是RFC 793说:TCP报头中字节的正确顺序是什么?
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
...
这意味着Source Port
应该采取前两个字节,最低位应该是第一个字节。这意味着,我认为以编码源端口180我要开始我的TCP报头与这两个字节:
B4 00 ...
然而,所有的例子我能找到告诉我做的其他方式:
00 B4 ...
为什么?
答
这意味着,源端口应该采取的两个字节
正确的。
最低位应该在第一个八位位组中。
不正确。这并不意味着这一点。它没有提到任何关于它的事情。
所有IP头中的所有多字节整数都是以网络字节顺序表示的,这是大端的。这在RFC 1700中指定。
看起来像这个问题是相关的:http://stackoverflow.com/questions/13514614/why-is-network-byte-order-defined-to-be-big-endian – yegor256 2015-03-02 21:02:43