TCP 是一个可靠传输的协议,那它是如何保证可靠的呢?

为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。
那么,TCP 是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的。
重点介绍 TCP 的重传机制、滑动窗口、流量控制、拥塞控制。





TCP中三个窗口的概念。
TCP连接的双方分别叫做接收方与发送方,接收方维护一个接收窗口,发送方维护一个发送窗口。可以简单的将窗口理解为内存单元。

1.接收窗口:这是接收方根据自己的缓存大小设置的值,并且要告诉发送方,反应接收方的接收能力。


2.拥塞窗口:这是发送方根据自己估算的网络拥塞程度而设置的窗口值,反应的是当前网络的容量。

3.发送窗口:发送窗口=min(拥塞窗口,接收窗口)。我们来理解一下这个公式。拥塞窗口是发送方自己算出来的,接收窗口是接收方告诉发送方的,发送窗口取这两者的最小值,也就是说发送的数据既不能超过网络的容量,也不能超过接收方的容量。

举个例子,图书馆顶楼有一个容量为30人的自习室,条件非常好,我们班有20个人都想去那里自习,都在一楼的电梯口排队,一楼大厅有一块LED屏幕,会实时显示这个自习室还剩多少个座位。这时候自习室有20个座位已经被别人抢走了!只剩下了10个(自习室的接收窗口为10),那我们班的人肯定得赶快去占位置!但是图书馆的电梯一次只能运12个人(网络的拥塞窗口12),不然就超载了。那我们一趟最多能送多少人上去自习室呢?第一不能超过10,因为自习室只剩下10个座位,第二不能超过12,因为电梯只能装下12个人,所以这一趟我们能上去的最大人数是:min(10,12)也就是10个人,即发送窗口为10