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中指定。

+0

看起来像这个问题是相关的:http://stackoverflow.com/questions/13514614/why-is-network-byte-order-defined-to-be-big-endian – yegor256 2015-03-02 21:02:43