【发布时间】:2015-10-10 02:35:03
【问题描述】:
【问题讨论】:
标签: networking tcp tcp-ip
【问题讨论】:
标签: networking tcp tcp-ip
首先,Wireshark 中由 [括号] 括起来的字段是计算字段 - 它们不在数据包中。 Wireshark 显示的下一个序列号字段就是这样一个字段。 Wireshark 通过获取“序列号”字段并将其添加到数据包的有效负载大小来计算它。毫不奇怪,这两个数字之间的差异为 1430 - 一个常见的 TCP 有效负载大小。
TCP 中的序列号以字节为单位 - 它们基本上是说,该数据包的有效负载插入 TCP 流中的哪个字节位置。
“已确认”序列号显示我确认已收到多少字节。
由于TCP是双向的,所以每一端都要声明
因此,每个 TCP 数据包都有两个引用序列号的字段——“序列号”字段和“确认号”字段。
如果没有“序列号”字段,接收端将无法判断数据包是否被乱序接收。如果没有“确认号”字段,发送端将不知道他的某些数据包是否已被丢弃,而接收方从未收到它们。
【讨论】:
因为 TCP 是可靠的管道。这意味着即使较低层不提供该保证,数据包也会按顺序传递(并且仅一次)。为了做到这一点,TCP 需要管理数据、acks、nacks……
https://en.wikipedia.org/wiki/Transmission_Control_Protocol
“下一个序列”是wireshark的产物,它实际上不在TCP头中,ws只是告诉你捕获文件中的下一个数据包
【讨论】: