TCP如何实现的可靠传输

可靠传输:在网络没有问题的情况下保证每个数据都要到达对端

TCP能够实现可靠传输是因为这几种机制

  1. 面向连接 ----------- 前提
  2. 确认应答机制 ---------- 确定对方是否收到自己发送数据
  3. 超时重传机制 ---------- 发送方等待超时没有,进行数据重传
  4. 序号和确认序号 --------- 实现了应答机制,以及进行接收方的包序管理,实现数据有序交付校验和字段
  5. 校验和字段 --------- 校验数据一致性,如果不一致则丢弃,对方法发送请求
  6. 避免丢包机制

超时重传机制

  • seq序号是告诉对方这条数据的起始序号是多少,通常三次握手的时候双方就会告诉对方自己的起始序号
  • ack确认序号:告诉发送方,下一次发送数据的起始序号地址
  • 三次握手时,在数据长度为0但是依然会在序号的基础上+1,而在正式通信时,确认序号等于起始序号+数据长度
  • 发送方连续发送多条数据,第一天数据丢失,但是接受方接受数据的时候,根据最初三次握手协商的起始序号判断,收到的不是第一条数据,就算收到第二条也不会对第二条进行确认回复

避免丢包机制

  1.滑动窗口机制 ------ 实现接收方控制发送方的发送速度(流量控制)

因为发送方发送大量的数据都会被接收方放在接收缓冲区中,等待recv取出,但是若接收方取出的速度太慢,导致缓冲区满了就会造成大量的数据丢失,就要发送方重新传包,通过流量控制就可以避免发送方发送数据太多导致的丢包重传

16位窗口大小是实现滑动窗口机制的关键信息,接收方接收到数据之后,会进行确认回复,确认回复中会在窗口大小字段中填入一个值,这个值不能大于接收缓冲区中的剩余空间大小,发送方收到回复之后,通过窗口大小就知道自己最多能够发送多少数据,从而实现流量控制

2.拥塞控制:防止网络不好,导致发的越多丢的越多,主要针对发送数据的发送方进行控制,主要控制发送数据的节奏,一开始不要太快,慢启动、快增长

发送方维护一个拥塞窗口,控制一次能够发送多少数据

 

tcp为了实现可靠传输,有非常多的控制机制,但是负面效果就是传输速度上的性能损失

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值