当前位置:首页>综合>正文

请说明传输层TCP协议采用了哪些机制来保证端到端结之间的可靠传输

2023-04-24 23:21:08 互联网 未知 综合

请说明传输层TCP协议采用了哪些机制来保证端到端结之间的可靠传输?

请说明传输层TCP协议采用了哪些机制来保证端到端结之间的可靠传输

作为资深数据通信从业者,我可以回答您的问题,我可以明确的讲,TCP传输是十分可靠的,可靠到什么程度,它可以一个字节都不错而且不少的传送给对方。同时tcp传送是尽可能的使用最大带宽来传送的。

首先,介绍为什么tcp传送是可靠的

Tcp传送是依靠滑动窗口来控制传送的,使用发送报文,接收响应报文,来确定所发送的数据是否正确的到达对方。

请说明传输层TCP协议采用了哪些机制来保证端到端结之间的可靠传输


如上图,比如报文发送的数据,依次是1、2、3、4……12。Tcp会使用一个滑动窗口(如图)控制发送的节奏。

窗口左边:已发送并ack确认的数据,比如图中,1、2、3,已经收到对方的确认,那么这些数据已经正确发送过去。

窗口大小:接收方通告

发送方只能发送窗口里面覆盖的数据,比如,已经发送了4、5、6。这些报文已经发送,但是还没有收到对方确认,所以窗口不右移。

如果收到了4的确认,那么窗口才会右移,说明4已经成功的发送到了对方。

窗口的移动,说明左边已经成功被对方接受,不会出现丢包的现象。

如果长时间收不到对方确认(一般对方三个报文确认请求都不是4,比如都是5),就会重发报文4,

那么tcp怎么尽可能使用最大带宽呢?

首先窗口大小,也就是对方能接受多少数据,如果窗口范围内,比如上图4、5、6、7、8、9,这些报文在窗口内,发送方尽可能发送,也就是尽可能使用带宽。

在窗口允许发送的范围内,比如,允许发送4——9的数据,Tcp不是一下突发这6个报文,它会根据指数退避算法,试探性的增加发送速率,

比如,第一次发送1个,没丢包,说明网络带宽可以,第二次发送2个,还没丢包,第三次发送4个,这样指数递增。

这种发送方法,避免一次突发很多数据,造成网络拥塞而丢包,当没有丢包情况下,发送数量会指数递增,增加发送报文数量,尽可能的使用现有网络带宽,直到增加到对方发送窗口限制。

传输层使用的两个主要协议:TCP和UDP。TCP面向连接,提供有序可靠的传输;Udp无连接,提供无序不可靠的传输。TCP用三次握手和滑动窗口机制来保证传输的可靠性和进行流量控制。第一次握手:客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(SequenceNumber)字段里。第二次握手:服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(AcknowledgementNumber)设置为客户的ISN加1以.即X 1。第三次握手.客户端再次发送确认包(ACK)SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段 1,放在确定字段中发送给对方.并且在数据段放写ISN的 1