为什么连接的时候是三次握手,关闭的时候却是四次挥手?TCP协议如何保证传输的可靠性?

(1)为什么连接的时候是三次握手关闭的时候却是四次挥手

服务器在收到客户端的 FIN 报文段后,可能还有一些数据要传输所以不能马上关闭连接,但是会做出应答,服务器向客户端响应 ACK 报文段。接下来,服务器会继续发送数据,在数据发送完后,服务器会向客户单发送 FIN 报文,表示数据已经发送完毕,可以关闭连接。然后客户端会响应一个ACK报文,说好。(简略版:服务器的ACK和FIN一般都会分开发送,因为还有一些数据要传输,从而导致多了一次,所以需要四次挥手)

(2)TCP协议如何保证传输的可靠性

TCP主要提供了检验和、序列号/确认应答、超时重传、滑动窗口、拥塞控制和流量控制等方法实现了可靠性传输。

1. 检验和:通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如如有差错就会直接丢弃TCP段,让发送方重新发送。

2. 序列号/确认应答:序列号的作用,能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。TCP传输的过程中,每次接收方收到数据后,都会对发送方进行确认应答。也就是发送ACK报文,这个ACK报文中带有对应的确认序列号,告诉发送方,确认接收到了哪些数据,下一次的数据从哪里发。

3. 滑动窗口:滑动窗口限制了发送方向接收方发送数据的速率。避免了发送方发送过多的数据而导致接收方无法正常处理。发送方维护一个动态调整大小的窗口。窗口大小决定了下一次可以发送的数据量。窗口大小由接收方缓冲区大小、报文数据部分的最大长度决定。

4. 超时重传:如果发送方在预设时间内没有收到某个数据段的确认应答,那么TCP协议就会假设这个数据段在网络中丢失了。在超时时间过后重新发送未被确认的数据段,直到接收到相应的确认应答为止。超时时间,是动态计算的。

5. 拥塞控制:拥塞控制是为了防止过多的数据注入到网络中,导致网络拥堵和数据包丢失。TCP采用慢启动、拥塞避免、快速重传和快速恢复等算法来探测网络的状态并动态调整发送速率。当发生网络拥塞时,TCP会减少其数据发送速率,减轻网络负担。

6. 流量控制:主要通过滑动窗口机制实现。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值