首页 > 其他分享 >TCP-可靠传输-流量-拥塞控制

TCP-可靠传输-流量-拥塞控制

时间:2022-11-12 21:22:29浏览次数:47  
标签:重传 主机 TCP 发送 传输 拥塞 cwnd

1. TCP 的可靠传输

1.1 停止等待 ARQ 协议

主机采用 TCP 发出信息时会设置一个定时器, 若超出定时器所设定的时间还没有响应过来, 则主机会认为发出去的消息没有传达到目的主机, 故而将信息重新发送


当主机重传一定次数后仍然没有接收到对该消息的响应, 主机会判断网络有问题, 从而发送 RST 报文断开 TCP 连接

1.2 滑动窗口协议

对于停止等待协议, 其有一个很大的缺点: 每发送一份数据, 都需要收到来自目的主机的响应信息后才会发送下一份数据

而基于滑动窗口协议, 主机可以将一个滑动窗口内的所有数据包一次性都发出去而不用等待目的主机的响应


目的主机还是需要对每个数据包做出响应, 当发送端接收到响应后, 其窗口会向后移动相应的位置

1.2.1 滑动窗口协议的数据丢失问题

1.2.2 高速重发机制(快重传)

只要连续收到三个重复确认(总共4个相同的确认), 发送端就会立即重传对方尚未收到的数据包

2. 流量控制

目的主机在对每一个数据包的响应中告诉发送方自己接收数据的缓存大小还有多少, 而发送方则会根据该信息对发送窗口的大小进行调节

3. 拥塞控制

发送窗口(swnd), 拥塞窗口(cwnd), 接收窗口(rwnd)
swnd = min(cwnd, rwnd)

  • cwnd > rwnd: 网络状况限制了发送窗口的最大值
  • cwnd < rwnd: 接收方的接受能力限制了发送窗口的最大值

3.1 Tahoe

3.1.1 慢开始

拥塞窗口(cwnd)一开始被设置的比较小(cwnd = 1MSS), 而随着接收方返回的响应, cwnd 指数级增加(每有一次响应, cwnd 会变为以前的 2 倍)

但是这样的指数级增加也是有限制的: 当 cwnd 超过设定的慢启动阈值(slow start thresh)时, cwnd 就只能线性增大了(即进入了拥塞避免阶段)

注: 在 TCP 通信开始时默认并不会设置 ssthresh, 而是当出现了超时重发的情况后, 才有 \(ssthresh = cwnd \div 2\). (每当出现超时重发的情况, ssthresh 都会被重新更新一次)

3.1.2 拥塞避免

3.1.3 超时重传和快重传

Tahoe 算法允许超时重传和快重传两种重传机制

当使用快重传来代替超时重传机制时, 可以想象: 目的主机没有成功接收 A 数据, 但是却接收了 A 数据后面的三个连续的数据(因为需要发送端接收到三个连续的 ACK 才会触发快重传), 说明目前网络的状况并不算太差. 在这样的情况下, 令 cwnd = 1 MSS 的惩罚力度太大了(可能有发送给目的主机的信息还在路上, 而 swnd = 1 MSS 会导致发送端在短时间内只能发送少量的信息)

3.2 Reno

3.2.1 慢开始

TCP 通信开始时或者触发了超时重传机制时, 进入慢开始
cwnd = 1 MSS, 每经过一个 RTT, cwnd 翻倍. 当 cwnd >= ssthresh 时, 进入拥塞避免阶段

3.2.2 拥塞避免

当 cwnd > ssthresh 时, 每经过一个 RTT, cwnd += 1MSS

3.2.3 快重传

当快重传被触发时, 进入快恢复阶段

3.2.4 快恢复

当快恢复被触发时, 令\(ssthresh = cwnd \div 2\), \(cwnd = ssthresh\)
在快恢复阶段: 当发送端在此阶段中接收到新的 ACK 信息(触发快重传以外的 ACK 信息), \(cwnd = cwnd + 3 MSS\), 并进入拥塞避免阶段

标签:重传,主机,TCP,发送,传输,拥塞,cwnd
From: https://www.cnblogs.com/suzukaze/p/TCP-feature.html

相关文章

  • Android TCP客户端
    文章目录​​一、创建工程​​​​二、添加网络权限​​​​三、添加布局代码​​​​四、添加逻辑代码​​​​五、通信测试​​​​六、源码分享​​一、创建工程二、添加......
  • go错误汇总2:[ERROR] listen tcp: address 8082: missing port in address
    go错误汇总2:[ERROR]listentcp:address8082:missingportinaddress错误信息:[ERROR]listentcp:address8082:missingportinaddress 错误原因:代......
  • 【lwip】12-一文解决TCP原理
    目录前言12.1TCP协议简介12.2TCP相关的一些概念词12.2.1MSL12.2.2MSS12.3TCP工作特性12.3.1面向连接12.3.2全双工通信12.3.3可靠性12.3.4缓冲机制12.3.5拥塞控制......
  • 关于单机最大tcp连接数 及 linux …
    在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少?如何标识一个TCP连接ip, local port,remo......
  • TCP 三次握手-四次挥手
    TCP三次握手传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793[1]定义。TCP三次握手是TCP建立连接......
  • HDMI原理详解以及时序流程(视频是三对差分信号,音频Audio是PCM级(无压缩)传输,包含在数据包
    资料来源:HDMI介绍与流程-TaigaComplex-博客园最近要用ZYNQ开发版的HDMI做显示,看着硬件管脚和例程只能发呆,于是决心去弄清楚HDMI的工作原理,查找了很多资料,都是碎片化的......
  • TCP三次握手一二三问
    下面整理下TCP握手和挥手的几个问题,参考资料小林图解计算机网络1、什么是三次握手?Client端向Server端发送SYN为1的报文段,携带一个初始序列号x,client端进入SYN_SENT状态......
  • 为什么TCP 建连接要3次,断连接却要4次呢?
    大家好,今天聊聊传输层通信协议TCP的经典问题:建连接与断连接。网络上的传输是没有连接的,包括TCP也是一样的。而TCP所谓的“连接”,其实只不过是在通讯的双方维护一个“连接状......
  • HP-ERS-T244 RS485/RS232四串口工业级串口服务器RS232/485转以太网TCP/IP物联网网关
     HP-ERS-T244是一款四串口服务器,采用Cortex-M7方案,主频高达400MHz,性能更强,传输速度更快,可靠性更高。搭载深度优化的TCP/IP协议栈。双重看门狗和多种保活机制助力设备稳......
  • Linux——文件传输协议知识点梳理
    接触过Linux操作系统的同学一定对文件传输协议并不陌生,因为在Linux操作系统里我们对文件的上传下载通常不会像我们操作window系统那么直观,一般都是通过文件传输协议去完成......