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数据包)。IPv4的默认MSS为536字节,IPv6的默认MSS为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运行更快、更安全、更可靠。