IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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相比于UDP,可靠。

而拥塞控制,流量控制可以理解为,为了实现这种可靠传输的几种方法。

?基本的概念

TCP接收方维护接收窗口,发送放维护发送窗口。窗口能够理解为内存空间,即对有限空间合理使用。

  • 接收窗口:接收方根据自己的缓存大小设置的值,并且要告诉发送方,自己的接收能力。
  • 拥塞窗口:发送方根据自己估算的网络拥塞程度而设置的值,是当前网络容量的反映。
  • 发送窗口:发送窗口=min(拥塞窗口,接收窗口),发送窗口取的是,拥塞窗口和接收窗口之间最小的那个。

举例:

自助餐馆很多人去吃,但是该店铺只有50个位置,且餐厅在2楼(一共5层的大楼,那么什别的楼层的人也需要坐电梯,这就是拥塞控制解决的问题,后面会讲到)。

为了避免上楼的人没有位置,楼下设立等待区域。

所以店铺门口电梯处有一个LED大屏幕,用来显示目前剩余的位置数量。

例如,这时候已经有20个位置已经坐了人了,只剩下30个位置(接收窗口为30)。但是电梯一次只能坐上10个人(网络拥塞窗口为10),所以可以计算发送窗口=min(30,10),即同时满足两个条件的最小,取最小值为10。

PS:因为还有吃完离开的人,数据会发生变化,这个就是后面的4种控制算法来计算的。

流量控制

流量控制的任务:流量控制就是,接收方告诉发送方的大小。即餐馆还剩多少位置。

流量控制的方法:滑动窗口机制。

  1. ? ? ? ? 接收方在确认报文段当中,将接收窗口(rwnd)告诉发送方。
  2. ? ? ? ? 发送方,根据接收窗口,和拥塞窗口来确认发送窗口。

?即假设,在电梯运送了3趟途中(送上去30人),只有5个人吃完了,所以接收窗口的大小变为5,结合拥塞窗口10,min(5,10)=5。所以此时1楼的LED屏幕显示上去5个人。

PS:所以流量控制就是,LED屏幕实时变化的过程。

拥塞控制?

拥塞控制的任务:检测网络的状态(电梯情况),用4种算法来估算拥塞窗口的值。

如果说,流量控制的职责就是检测餐厅剩余的位置。那么拥塞控制就是电梯剩余能坐的位置(因为排队的还有其他楼层的人,即假如有7个人是要去3楼住酒店,那么即使餐厅还有5个位置,排队的人也只能坐3个上去)。

?

借用一张网图。

横坐标是传输轮次(电梯每上下一趟),纵坐标是拥塞窗口(电梯容量)。

而上图所示的增长条件的前提是:接收方目前给出的空间充足。?

慢开始算法:连接刚刚建立的时候,cwnd(拥塞窗口)指数增大。达到门限ssthresh改为第二种算法,拥塞避免算法。

拥塞避免算法:初始的ssthresh之后,cwnd呈加法增大。出现超时(网络拥塞的时候),调整cwnd=1,ssthresh=cwnd/2(乘法式减小)。然后又开始慢开始算法。

快重传算法:不是等到真正出现网络拥塞的时候才执行慢开始,而是接收方收到三次冗余的ACK之后就开始慢开始。(参考TCP建立阶段ACK等的发送

快恢复算法:cwnd变为新的门限值之后,继续执行拥塞避免。

总结:即慢开始算法和拥塞避免是一直在这个过程主要循环,而快重传算法和快恢复算法是为了,到了需要变化模式的时候,更快的变换过去。

那么疑问来了,既然电梯剩余的去到餐馆的位置,就是拥塞窗口,为什么还要这样麻烦呢?原因是因为在实际的网络当中,并不能知道,该条连接有多少个资源已经被使用,即我们并不能看见此时电梯里面有几个人,即大家都是蒙上眼睛,听广播和电梯超重提示来试探性的上楼。所以需要每次先上4,8,到达第一个ssthresh之后,改变算法为拥塞避免算法。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:49:47  更:2021-08-31 15:50:52 
 
开发: 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/25 22:44:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码