我自己尝试编码TCP标头,但无法理解其中的位/八位字节的正确顺序。这就是RFC 793所说的:
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 ...
为什么?
答案 0 :(得分:2)
这意味着源端口应该占用前两个八位字节
正确。
,最低位应位于第一个八位位组。
不正确的。这并不意味着。它没有说什么。
所有IP头中的所有多字节整数都以网络字节顺序表示,这是big-endian。这在RFC 1700中指定。