| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP 协议如何保证可靠传输 -> 正文阅读 |
|
[网络协议]TCP 协议如何保证可靠传输 |
这个讲的相对简单一点: TCP 协议如何保证可靠传输 - 云+社区 - 腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1679937这个讲的更详细: 总结一下:滑动窗口:
累计确认:
比如发送方发了包1,包2,包3,包1含字节1到10,包2含字节11到20,包3含字节21到30。接受方成功收到包1,包3。那么接受方发回一个包含确认序号11的包,发送方就知道包1成功收到,必要时重发从字节11开始,此时包3存在被重复接收的可能。
流量控制:简单来说就是接收方处理不过来的时候,就把窗口缩小,并把窗口值告诉发送端。 当窗口值为0,而接受方把窗口值恢复(比如ACK=1,ack=601,rwnd=200),但确认丢失,进入相互等待的死锁局面。所以如果窗口值为0,发送端就会开启一个持续计数器,每个一段时间询问一下接收方。 拥塞控制:swnd<=min(rwnd,cwnd),cwnd就是拥塞窗口大小,SSthresh:处理拥塞时的一个阈值。 控制步骤: 1)当cwnd> SSthresh,cwnd从1开始以指数增长; 2)当cwnd< SSthresh,cwnd以线性增长; 3)当cwnd增长到出现网络拥堵,SSthresh变为当前cwnd的一半; 4)慢恢复:cwnd变为1,重新从1)开始; 5)快恢复:是对慢恢复算法是改进,cwnd不是从1重新开始指数增长,而是从新的SSthresh开始线性增长。 快重传:收到3个同样的确认就立刻重传,不等到超时;接收方收到同样的确认信号,表示接收方可能未按序收到数据,确认帧必须是按序收到数据的最大序号。 TCP标志位:深度好文:TCP三次握手和四次挥手深入实践https://baijiahao.baidu.com/s?id=1708621911214426696&wfr=spider&for=pc 以三次握手为例: ACK:表示前面的确认号字段是否有效。ACK=1时表示有效。只有当 ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为 1。 确认号ack:理解起来就一句话,所期望收到的下一个顺序号seq。 顺序号seq:用来标识从TCP源端向TCP目的端发送的数据字节流,它表示在这个报文段中的第一个数据字节的顺序号。 ack是本机发出的确认号,确认源发出的seq,seq是本机发出的数据序列号。 流量控制时的报文标志位: ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:00:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |