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