面试中常被问到的(21)TCP/UDP如何保持可靠性

Tcp保持可靠性从以下三个方面描述:

1,可靠传输:面向连接,包序管理,确认应答,超时重传,校验和

2,避免丢包:滑动窗口流量控制,拥塞机制(慢启动快增长)

3,提高性能:确认序号快速重传,延迟应答,捎带应答

  • 面向连接

tcp通信首先要建立连接,确保通信双方都具有收发数据的能力

  • 序列号,确认应答,超时重传

tcp协议中有序号确保数据有序传输,同时序列号也为后续包序管理提供基础

数据达到接收方,接收方会发出一个确认应答,表示已经收到了该数据,并且确认序号说明下一次需要接受的数据序列号

如果长时间未收到确认应答,认为发送数据丢失,发送方会等待一定间隔时间再次重传

  • 窗口控制

滑动窗口的目的是解决发送数据过快过多导致接收方缓冲区满溢而丢包问题,实现流量控制 

此时,窗口大小的控制也可提高传输速度,在一个窗口大小内,不用等到应答才发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值。如果不使用窗口大小,那么每一个没收到确认需要重发,消耗大量资源

  • 拥塞控制与慢启动

如果把窗口大小设置很大,那么发送端发送大量数据会造成网络拥堵,通过设置慢启动,此时发送端维护一个拥塞窗口,慢启动时,将窗口大小设为1,每收到确认应答一次,拥塞窗口扩充2倍,以指数级增长,当达到设定阈值65536,开始加法扩充,慢启动快增长

  • 快速重传

接收方在接受数据时,先接收到了后发的数据,则认为前边的数据有可能丢失,则连续间隔发送三条前边数据的重传请求(确认序号为丢失的数据起始序号)

发送方收到三条连续重传请求(防止延迟到达的误判),则将对应确认序号的数据重传

  • 延迟应答与捎带应答机制

延迟应答机制:接收到数据后,延迟确认回复

接收方接收数据后如果立即回复,上层尚未将数据取出导致滑窗大小会减小,延迟期间,上可能会将数据取出,恢复滑窗大小,保证窗口大小,保证传输吞吐量

捎带应答机制:将确认回复信息放到即将要发送的数据报头中,捎带一块传输给对方,尽量减少纯报头的回复确认

UDP如何实现可靠传输

udp是无连接协议,在传输层上无法保证可靠传输,要想实现可靠传输,只能程序员在应用层实现tcp确认序号,快速重传,延迟应答,捎带应答机制等

但tcp面向字节流传输由于边界无法自行维护管理会产生粘包问题,需要程序员在应用层手动解决而udp面试数据报传输,数据在缓冲区整条交付不会产生粘包问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HT . WANG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值