TCP中的序列号

3
为什么我们需要TCP头中的序列号和下一个序列号字段?
以下是使用wireshark捕获的数据包中的TCP头。

TCP Header from a packet captured using wireshark

2个回答

4
首先,Wireshark中用[方括号]括起来的字段是计算字段 - 它们不在数据包中。Wireshark显示的下一个序列号字段就是这样的字段之一。Wireshark通过将“序列号”字段加上包的有效载荷大小来计算它。因此,这两个数字之间的差异为1430-这是常见的TCP有效载荷大小。
TCP中的序列号以字节为单位 - 它们基本上说,该数据包负载插入到TCP流中的哪个字节位置。
“确认”的序列号显示我已经接收了多少字节。
由于TCP是双向的,因此每端都必须声明:
1.其传输的字节应该在流中放置在哪里 2.我已经接收到了你发送给我的哪些字节。
因此,每个TCP数据包都有两个字段与序列号有关-“序列号”字段和“确认号”字段。
如果没有“序列号”字段,则接收端无法确定是否按顺序接收到数据包。如果没有“确认号”字段,则发送端将不知道他的某些数据包是否被丢弃,以及接收方是否从未接收到它们。

2
因为TCP是一条可靠的管道。这意味着即使更低层没有提供保证,数据包也会按顺序(且仅一次)传递。为了实现这一点,TCP需要维护数据、确认和否定等信息。
“下一个序列”是wireshark的一个特殊标记,实际上并不在TCP头部中,wireshark只是告诉你它捕获文件中的下一个数据包。
参考链接:https://en.wikipedia.org/wiki/Transmission_Control_Protocol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接