环绕概念和 TCP 序列号
什么是 TCP?
传输控制协议 (TCP) 是一种网络通信协议,允许数据包通过互联网发送。
TCP 是一种 OSI 传输层协议,用于通过支持网络和互联网传送和确保消息传递来连接远程计算机。
传输控制协议是互联网协议套件(有时称为 TCP/IP 套件)的成员,并且是数字网络通信中使用最广泛的协议之一。
TCP 主要用于确保不同节点之间的端到端数据交付。
TCP 与互联网协议协同工作,互联网协议确定远程节点的逻辑位置,而 TCP 传输数据并确保数据到达其预期目的地。
TCP 在传输数据之前在源节点和目标节点之间建立连接,并在对话完成之前保持连接。
TCP 将大量数据分解成较小的数据包,并确保数据完整性在到达目标节点后得以保留。
什么是序列号?
32 位序列号字段指定分配给段数据的第一字节的编号。TCP 是一种用于以流方式传输数据的协议。要传输的每个字节都编号以确保连接性。每个参与方在连接建立期间使用随机数生成器生成初始序列号 (ISN),在每个方向通常是不同的。众所周知,TCP 序列号为 32 位长。
因此,它具有有限数量的序列号(范围从 0 到 (232-1) = 4 千兆),这意味着我们将使用唯一的序列号通信不超过 4GB 的数据。
它有助于分配与通过 TCP 连接发送的其他数据字节兼容的序列号。每个连接都有自己的 ISN,由设备分隔。
环绕概念
当存在大量流量时,所有序列号都可能用完。每个数据包的序列号必须唯一;但是,由于它是有限的(4 千兆),因此序列号在某个时刻会被用尽。当可用时,以前使用过的序列号可以根据需要重复使用,这种序列号的重复使用被称为环绕的概念。
环绕定义为“在所有序列号都用完后,反复使用序列号,以保持数据传输的连续性”。
这使您能够传输越来越多的数据,而不必担心发送了多少数据。由于序列号可以重复使用,因此存储的数据量没有限制。
何时以及如何使用环绕?
例如,如果我下载一个 4GB+2 字节的软件,但可用的序列号只有 4GB,则剩余的两个字节将不会收到序列号。在这种情况下,序列号会被环绕,这意味着它们会根据需要重复使用。随机初始序列号会影响此环绕。我们可能会首先收到较少的序列号,但是一旦所有序列号都被用完,序列号将重置为 0。
我们将从任何开始使用序列号的地方获得 232 个序列号。因此,我们可以说 TCP 序列号的环绕概念涉及根据需要循环使用序列号。
环绕时间
环绕时间是环绕所需的时间。它表示如果我们从序列号 0(或任何其他数字)开始,我们将经过多长时间再次使用相同的序列号。从开始重复使用相同序列号的时间,或根据需要重复序列号所需的时间,称为“环绕时间”。
可用序列数和带宽定义了环绕时间。位(序列号)的使用速率称为带宽。消耗速度越快,序列号消耗的速度越快。
$$ \mathrm{环绕时间 =\frac{总序列号}{带宽}=\frac{232}{带宽}}$$
如何减少环绕时间?
环绕时间与带宽成反比,与序列数(数据流速率)成正比。
可用的序列号越多,环绕时间就越长。
环绕时间越长,带宽越低。
因此,要缩短环绕时间,我们必须:
减少序列号,或
增加可用带宽(可能)