TCP为什么是可靠的呢

众所周知,TCP需要经过三次握手才能建立起来,目的是为了使得数据包的发送和接收同步,经过三次“对话”之后,主机之间才正式发送数据。

主要问题集中在,TCP与UDP相比,是如何保证数据的可靠性的。

  1. 应用数据会被分割成TCP认为的最适合发送的数据块,由TCP传给IP的信息单位叫做报文段或者段(segment)。UDP传输中,应用程序产生的数据报长度将保持不变。
  2. TCP发送一个segment,它将启动定时器,等待目的端确认接收这个segment。当未在定时器结束前收到确认,将重传这个segment(TCP协议中的自适应的超时及重传策略)。注意,当目的端收到了发自TCP连接的另一端的数据,它将发送一个确认。这个确认通常不是立即发送,会推迟几分之一秒的时间再发送。
  3. TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化,若收到的segment检验和有差错,TCP将丢弃这个segment,且不发送确认,目的是希望发送端超时并重传。
  4. TCP的segment作为IP数据报来传输,IP数据报的到达会失序,那么segment的到达也可能会失序,如有必要,TCP将对收到的数据进行重新排序,收到的数据将以正确的顺序交给应用层。
  5. 同时,IP数据报会发生重复,TCP的接收端必须丢弃重复数据
  6. TCP还会提供流量控制(滑动窗口)。TCP连接的每一方都有固定大小的缓存空间,TCP接收端只允许另一端发送接收端缓存区所能接纳的数据。防止较快主机使得较慢主机的缓存区溢出。

总的来说,TCP通过重传机制(两种)、校验和、有序性、流量控制、拥塞控制来保证接收数据的可靠性,也正是其与UDP的不同。

后续会对上述几种方式做详细补充。


作为无连接的传输协议,UDP应用于实时性要求较高的场合,比如音视频会议。然而,任何应用都不能完全没有可靠性的保障,那么UDP是如何保证可靠性的呢

使用UDP协议的传输层无法保证数据的可靠传输,所以需要转移可靠性保障的阵地,那就在应用层来实现。实现方式类似于上述TCP在传输层保障可靠性的方案,不同的是这些方案在应用层实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值