TCP 首部中的选项字段
TCP 用户发送包含数据和 TCP 首部信息的报文段。首部包含源地址、目的地址和其他变量。在传输过程中,每个网络设备都会处理 TCP 首部。数据保持不变,但首部细节(如 IP 地址)可能会发生变化。
TCP 首部中的选项字段
TCP 首部有一个可选的选项字段,用于增强功能。它可以是 0 到 320 位,具体取决于数据偏移量的大小。选项字段包含各种类型:最大报文段大小、窗口缩放、时间戳等。此字段显示总选项长度,包括类型和长度。选项数据字段包含选项详细信息,例如数值或时间戳。

此字段提高了 TCP 连接的性能、可靠性和安全性。它根据网络状况调整报文段和窗口大小。它检测并防止报文段重新排序和欺骗。选项字段在连接建立期间协商发送方和接收方之间的功能。在 IPv4 报文段中,选项字段位于首部之后,包含额外信息。它最多可以为 40 字节,但实际大小因报文段而异。并非所有报文段都包含选项字段;这取决于使用情况和目的。
TCP 首部中选项字段的重要性
TCP 首部中的选项字段是为了 TCP 协议的未来改进而创建的。但是,它并没有被广泛使用,其内容也没有标准化。
TCP 最初创建时,互联网规模较小且不太复杂。最初的 TCP 首部可以很好地处理两个设备之间的通信。但随着互联网的发展,出现了新的需求,例如传输更大的数据并确保更可靠和安全的通信。
选项字段旨在满足这些新需求,而无需完全更改 TCP 协议。但是,它并没有得到广泛采用,并且不建议使用它。以下是一些原因
选项字段不是强制性的,因此并非所有 TCP 实现都支持它。
选项字段的内容没有标准化,导致兼容性问题。
选项字段为每个 TCP 报文段添加了额外信息,这可能会降低性能。
由于这些原因,选项字段现在很少使用。如果您需要标准 TCP 首部不支持的新功能,最好使用 TCP 协议扩展(如选择性确认 (SACK) 选项)。
TCP 选项字段中的各种选项
TCP 选项字段使数据传输更快、更安全、更可靠。它帮助 TCP 选择数据大小,检测和修复问题。选项字段支持与其他计算机协商功能。TCP 有 35 个选项,具有不同的名称和编号。有些是常见且已知的,而另一些则是新的或未使用的。
常见选项
选项列表结束:标记选项字段的结束。
无操作:填充空闲空间以对齐选项。
最大报文段大小 (MSS):告知要发送的最大数据大小。
窗口缩放:使窗口大小更大,以加快传输速度。
允许 SACK:允许选择性确认来修复数据问题。
SACK:提供选择性确认部分,以避免数据重传。
时间戳:测量报文段时间并提高连接效率。
TCP 适应互联网需求,与旧计算机配合使用,并变得更快、更安全、更可靠。
数据偏移字段
TCP 首部中的数据偏移字段指定首部大小(以字为单位)。一个字是 32 位或 4 字节的数据。数据偏移量显示 TCP 首部大小。
最小大小:5 个字(20 字节),没有选项,只有必需字段。
最大大小:15 个字(60 字节),其中 10 个字(40 字节)为选项。
数据偏移量帮助接收方在 TCP 报文段中定位数据。它避免了选项和数据之间的混淆,提高了效率。
分片和 MSS
当大型报文段无法适应网络链路的限制时,就会发生分片。每个分片都有自己的 IP 首部,其中包含位置和长度信息。目的地使用此信息重新组装分片。
分片以多种方式影响 TCP 性能
每个分片的额外 IP 首部会增加开销。
由于分片是单独传输和确认的,因此报文段丢失的风险增加。
由于每个跳点都会处理分片,因此延迟会增加。
TCP 使用 MSS 选项设置最大数据大小来避免分片。MSS 在连接建立(SYN 报文段)期间协商。默认 MSS:IPv4 为 536 字节,IPv6 为 1220 字节。MSS 帮助 TCP 发送较小的报文段,避免分片。它提高了 TCP 连接的吞吐量、可靠性和延迟。
窗口大小和窗口缩放
窗口大小控制 TCP 中两台计算机之间的数据流。它限制了可以发送或接收的数据量。TCP 首部有一个 16 位的窗口大小字段。最大大小为 65535 字节,对于快速或远程网络而言并不总是足够。TCP 使用窗口缩放选项来增加窗口大小。在连接开始时,缩放因子决定实际窗口大小。缩放因子可以是 0 到 14,允许最大 1 GB 的窗口。窗口缩放帮助 TCP 使用更大的窗口大小,在长距离或繁忙的网络上速度更快。
报文段丢失和 SACK
报文段丢失是指由于各种原因导致报文段从未到达其目的地。TCP 使用序列号来跟踪已发送和接收的报文段。确认号告诉发送方已收到哪些报文段。有时,某些报文段会丢失,导致已接收数据的重传。TCP 使用选择性确认 (SACK) 来避免重传已接收的数据。SACK 告诉发送方哪些部分数据已收到,哪些数据丢失。SACK 帮助 TCP 更快地解决数据丢失问题并提高可靠性。
旧的重复报文段和时间戳
旧的重复报文段是指由于错误而多次发送报文段。TCP 使用时间戳来区分旧报文段和新报文段。时间戳记录发送方和接收方时间以检查报文段的新鲜度。通过使用时间戳,TCP 确保仅处理新报文段,从而提高安全性和速度。
结论
TCP 首部中的选项字段是一个额外的部分,它使 TCP 能够执行更多操作并更好地工作。选项字段可以包含许多选项,这些选项可以帮助 TCP 更快、更安全、更可靠地发送和接收数据。一些常见且重要的选项包括
MSS:告知可以一次发送的最大数据大小。
窗口缩放:告知如何使窗口大小更大。
SACK:告知哪些部分数据良好,哪些数据丢失。
时间戳:告知每个报文段的两个时间。
选项字段还取决于 TCP 首部的一些其他部分,例如
数据偏移量:告知 TCP 首部的大小(以字为单位)。
序列号:告知发送和接收了哪些报文段。
确认号:告知哪些报文段良好。
选项字段是 TCP 随着时间的推移而变化和改进的一种方式。通过使用选项字段,TCP 可以满足互联网的需求和愿望,同时仍然与旧计算机配合使用。选项字段还可以让 TCP 执行新操作,从而使 TCP 速度更快、更安全、更可靠。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP