TCP协议

TCP协议是一个可靠的传输层协议,通过确认应答和超时重传来保证数据的可靠性。三次握手用于建立连接,四次挥手用于断开连接。滑动窗口和流量控制机制则优化了数据批量传输的效率,防止接收端缓冲区溢出。此外,TCP还使用拥塞控制来预防网络拥堵。延迟应答和捎带应答进一步提升了通信效率。
摘要由CSDN通过智能技术生成

TCP协议是一个很典型传输层协议。

TCP协议报文格式

在这里插入图片描述


可靠传输

可靠传输是 TCP 存在的初心!最核心的机制!

可靠传输的意思不是说100%可以传输成功,而是尽可能的传输,如果传输不过去,发送方可以知道自己传输失败,接收方有没有收到数据,会有个回应。

TCP 如何实现可靠传输:确认应答+超时重传

确认应答

确认应答指的是:接收方收到数据,会返回应答报文,ACK(acknowledge)报文。
在这里插入图片描述

TCP 报头中有一个序号字段和一个确认序号字段。
发送方,报头中序号是1,后面数据有1000个字节。
接收方,收到数据,返回的应答报文的报头中确认序号是1001。
那么发送方通过应答报文中的确认序号,就知道前面1000个字节已经成功传输了,接下来要传输 1001 往后的数据。

TCP 是针对数据的每个字节去编号的。在这里插入图片描述

‌超时重传

丢包

丢包是网络上非常常见的情况。

网络传输过程中,通过很多的路由器,交换机进行转发,这些网络设备转发能力是有上限的,当这中间某一个网络设备太忙了,要转发的数据太多了,这种情况下有些数据就会丢失。

  1. 数据包丢失

如果数据丢包了,接收方就不会返回应答报文。发送方接收不到应答报文,如果迟迟收不到应答报文,发送方就会重新发送这个数据,这就是 超时重传
在这里插入图片描述

  1. ACK丢失

如果应答报文也可能丢包,发送方也收不到应答报文,也会重发送数据,那么接收方就会收到两份一样的数据,但是没关系,TCP 会通过序号在接收缓冲区帮我们去重, 上层的应用程序不会读到重复的数据。
在这里插入图片描述

  1. 连续丢包

如果连续丢包,这种情况可能是网络出现了严重故障。

TCP 面对这种连续丢包的情况,也会重传,但是每次丢包都会延长超时等待的时间(TCP认为网络出问题了,重传大概率也不能成功,干脆摆烂)。

连续多次重传,都没收到应答报文,TCP 就会尝试重新连接,如果重连也失败,TCP 就会关闭连接, 放弃网络通信。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值