面经之TCP如何实现可靠传输

众所周知,TCP/IP是面向链接的可靠传输协议,但是问题是如何实现可靠传输的呢?在我看来,TCP/IP可靠传输的基础是滑动窗口协议和连续ARQ协议,配合着流量控制和拥塞控制,使得整个传输过程保证:

  传输信道不产生差错

  不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据(通过累计确认、超时重传、拥塞控制三大模块保证)

1、超时重传,

  就是数据包发送后没有收到确认信息,一段时间后就认为这个数据包丢失了,就会重新发送一份。

 

2、累计确认, 

为了提高信道的利用率,实际上采用了流水线传输的方案。如图:

 

 

这时就需要使用连续ARQ协议和滑动窗口协议。发送方和接收方各自维持着发送窗口和接受窗口,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。接收方一般采用累计确认方式,即接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组位置的所有分组都已经正确收到了。

 

3、流量控制

  

3.1、发送窗口的确认

链接建立时,B根据自己的接受缓存大小确定窗口值大小,然后告诉A,我的窗口有多大,然后A就根据B给出的窗口值构造自己的发送窗口(发送缓存不一定比接受缓存大)。如图,窗口有前沿和后沿两个指针,二者都只能前移。

 

4、拥塞控制

若网络中有许多资源同时出现供应不足,网络性能就要明显变化,整个网络的吞吐量将随着输入负荷的增大而下降,这就是拥塞。拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。流量控制往往指点对点的通信量的控制,是一个端到端端额问题。拥塞控制则是当整个挽留过的输入负载超过网络所能承受的时候,向发送方发送控制报文,并告诉发送端,必须放慢发送速率。

 

来源:https://baijiahao.baidu.com/s?id=1702955104176585570&wfr=spider&for=pc

posted @ 2022-04-15 09:39  搬砖在路上  阅读(121)  评论(0编辑  收藏  举报