TCP如何保证数据的可靠传输的?

请先 登录 后评论

1 个回答

匿名

在TCP连接中,数据流必须以正确的顺序传送给对方。TCP的可靠性是通过顺序编号和确认(ACK)实现的。

TCP在开始传送一个段时,为准备重传而首先将该段插入到发送队列中,同时启动时钟。然后,如果收到了接收端对该段的ACK信息,就将该段从队列中删去。

如果在时钟规定的时间内,ACK未返回,那么就从发送队列中再次送出这个段。TCP在协议中就对数据可靠传输做了保障,握手与断开都需要通讯双方确认,数据传输也需要双方确认成功,在协议中还规定了:分包、重组、重传等规则;而UDP主要是面向不可靠连接的,不能保证数据正确到达目的地。


TCP通过以下具体方式保证可靠传输


1.确认和重传

接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。

TCP是怎么保证错误重传的?

1)接收方受到错误的分组,就直接丢弃,而不做任何操作。

2)发送方在规定的时间(比平均往返时延大一些)没有收到分组的确认分组,就会自动重传。

3)为了让对方知道哪个分组出现了问题,就为分组也编了序号。


2.数据校验

TCP检验和的计算与UDP一样,在计算时要加上12byte的伪首部,检验范围包括TCP首部及数据部分。

但是UDP的检验和字段为可选的,而TCP中是必须有的。

计算方法为:

在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存在错误。



3.数据合理分片和排序

TCP会按MTU合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。


4.流量控制

利用滑动窗口实现流量控制,如果发送方把数据发送的过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方降低发送速率,让接收方来得及接收。

时机:目的主机缓冲区变小而不能接收源主机更多的数据时,就要流量控制。

改变接收窗口:可随时改变窗口大小。目的主机在确认时,还向源主机告知目的主机接收缓冲区的大小。

滑动窗口机制:TCP协议里窗口机制有2种,一种是固定的窗口大小、一种是滑动的窗口。这个窗口大小就是我们一次传输几个数据。


5.拥塞控制

当网络拥塞时,减少数据的发送。

1)原理:在某段时间,若对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变化,这种情况叫做拥塞。

2)方法:因特网建议标准RFC2581定义了进行拥塞控制的四种算法,即慢开始、拥塞避免、快重传和快恢复。

3)拥塞:交换节点(如路由器)数据报负载国中的现象。ICMP源站抑制报文,是一种被动机制。

4)必要性:在TCP层,拥塞造成时延增加,这又会造成超时重传,控制不当会进一步加重拥塞。TCP采用了一种主动控制机制。

请先 登录 后评论

扫一扫下方二维码,关注本站官方公众号
回复:面试题
获取永久解锁本站全部文章的验证码