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是网络层级中第四层:

物理层--->链路层(交换机)----->网络层(IP/路由器 三层交换机)---->传输层(tcp/udp)CP的主要特性对比:

?

udp是面向无链接的,不需要维护与目标对象的链接状态 不保证数据可靠.而TCP恰好相反.

在这里插入图片描述

TCP建立链接的过程:三次握手,断开链接的过程:四次挥手,保证网络传输质量:拥塞控制.

下面是TCP的协议格式

TCP头部

TCP三次握手:

目的:

1.握手是TCP保持链接的必要条件,有了握手才能保证数据完整性,才能实现传输质量控制.

2.三次握手是为了防止无效链接请求,如客户端发起请求,但是由于网络超时,客户端关闭了请求,此时服务端收到了请求,为客户端创建了链接,这种就是无效链接.

过程:

三次握手建立连接

客户端主动退出的TCP四次挥手:

目的:

由于TCP是全双工,客户端和服务器均可以同时发送和接收数据,断开链接的时候为了确保客户端和服务器均完成数据发送和接收.

过程:

四次挥手关闭连接

?

拥塞控制

目的:网络的带宽是有限的,不进行拥塞控制将会造成网络堵塞,同时无法保证数据发送和接收的可靠性和及时性.下图可以看到如果不进行拥塞控制,整个网络将会崩溃.

在这里插入图片描述

?TCP进行拥塞控制的四种算法:

1.慢开始

2.快恢复

3.快重传

4.拥塞控制

在这里插入图片描述

?

慢开始

TCP维护了以下三个变量,以达到一开始向网络注入的报文少的目的.

swnd cwnd ssthresh

swnd:发送方窗口

cwnd:拥塞窗口

该值取决与网络拥塞程度,动态变化

只要网络没有发生拥塞,则该值减,发生拥塞 则该值增加,什么情况代表发生拥塞?当没有及时收到回传的报文.

慢开始ssthresh:门限

当cwnd<ssthresh:使用慢开始算法

当cwnd>ssthresh:改用拥塞避免算法

当cwnd=ssthresh:同时可以使用拥塞算法和慢开始算法

一旦出现超时重传,TCP 就会把慢开始门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd 设置成 1.

快重传

我们知道,一旦出现超时重传,TCP 就会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd 设置成 1. 但是快恢复算法不这样做。

一旦出现超时重传,或者收到第三个重复的 ack 时(快重传),TCP 会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd = ssthresh (在有些版本中,会让 cwnd = ssthresh + 3)。

之前的旧版本的算法是在 TCP 的 Tahoe 版本中,而改进的版本算法是在 TCP Reno 版本中。图 2 中演示了他们之间的区别。蓝色曲线是旧版本,而红色是新版本。

快恢复:

这里写图片描述

?图2 TCP Reno 版本与 Tahoe 版本

一旦出现超时重传,或者收到第三个重复的 ack 时(快重传),TCP 会把慢启动门限 ssthresh 的值设置为 cwnd 值的一半,同时 cwnd = ssthresh (在有些版本中,会让 cwnd = ssthresh + 3)。

图 2 中,连续收到三个重复确认后,TCP Reno(红色)版本转入了拥塞阶段,而 TCP Tahoe 版本(蓝色)转入了慢启动阶段。

实际上,现代的 Linux 内核版本早已都不采用上面这些 TCP 版本了,而是使用使用的 TCP Cubic 版本。那为什么还要学呢?这就好比你想学会走,你就得先学会爬,简单的先弄会,以后再自学复杂的。

拥塞控制


在学习流量控制的时候,我们假设网络无限好,不拥塞。在学习拥塞控制的时候,我们又假设接收方缓冲区和接收窗口无限大,对数据来者不拒。现在,是时候综合考虑他们的时候了。

如何综合考虑这两者呢?实际上很简单,我们只要将接收方的窗口 rwnd 和拥塞窗口 cwnd 放在一起比较,取两者中的较小者,也就是:

发送方的窗口上限值=min{rwnd,cwnd}

上式指出:

rwnd < cwnd : 是接收方的接收能力限制了发送方窗口的最大值。
cwnd < rwnd : 是网络的拥塞限制了发送方窗口的最大值。
?

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

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