DJ3-5 TCP:流量控制、连接控制

news2024/12/23 22:34:35

目录

一、流量控制

二、连接管理

1. 建立连接(三次握手)

2. 关闭连接

3. TCP 连接的生命周期


一、流量控制

一条 TCP 连接的每一侧主机都为该连接设置了接收缓冲区。

TCP 的接收方的接收缓冲区:

1. 提供流量控制服务的原因

应用进程会从缓冲区中读取数据,但不是数据刚一到达就立即读取。事实上,接收方应用也许正忙于其它任务,甚至要过很长时间后才去读取数据。如果某应用程序读取数据时相对缓慢,而发送方发送得太多、太快,发送的数据就会很容易地使该连接的接收缓冲区溢出。

2. 流量控制服务

是一个速度匹配服务,即发送方的发送速率与接收方应用程序的读取速率匹配。

3. 流量控制的实现

TCP 让发送方维护一个称为 接收窗口 的变量来提供流量控制。

  • 接收窗口的值是接收方告诉发送方的,等于接收缓冲区的剩余空间
  • 发送方根据接收窗口的值来限制没有确认的数据量不超过接收窗口

TCP 是全双工通信,因此连接两端的发送方都各自维护一个接收窗口

接收方把接收缓冲区剩余空间大小放入它发给发送方的报文段接收窗口字段中。

二、连接管理

1. 建立连接(三次握手)

TCP 在交换报文段之前在发送方和接收方之间建立连接

Step1:客户端的 TCP 首先向服务器端的 TCP 发送一个 SYN 报文段:

  • 不包含应用层数据
  • 标志位 SYN = 1,ACK = 0
  • 客户随机选择一个初始序号放入序号字段中

Step2:服务器接收 SYN 报文段,为该 TCP 连接分配 TCP 缓存和变量,回复客户 TCP 一个 SYNACK 报文段:

  • 不包含应用层数据
  • 标志位 SYN = 1,ACK = 1
  • 确认号:客户初始序号 + 1
  • 服务器随机选择一个初始序号放入序号字段中

Step3:客户接收 SYNACK 报文段,为该 TCP 连接分配 TCP 缓存和变量,回复服务器 TCP 一个 ACK 报文段:

  • 可能包含应用层数据
  • 标志位 SYN = 0,ACK = 1
  • 确认号:服务器初始序号 + 1

在建立连接后的每一个报文段中,SYN 都将被置为 0

2. 关闭连接

当客户应用进程关闭套接字后:

Step1:客户向服务器发送 FIN 报文段,其中 FIN = 1;

Step2:服务器接收 FIN 报文段,回复 ACK 报文段,进入半关闭连接状态;

Step3:服务器向客户发送 FIN 报文段,客户接收 FIN 报文段,回复 ACK 报文段;

TIME_WAIT

假设 ACK 丢失,TIME_WAIT 状态使客户重传

Step4:服务器接收 ACK 报文段,TCP 连接关闭。

3. TCP 连接的生命周期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/654174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Burpsuit使用03:拦截请求并修改响应

burpsuite是渗透的必备工具,使用它可以进行一些截包分析,修改包数据、暴力破解、扫描等功能,使用最多的场景应该是设置代理拦截数据包分析数据和爆破。 文章目录 拦截请求并修改响应Intercept is offForwardDropAction 拦截请求并修改响应 拦…

5.4、docker-compose

h ttps://www.runoob.com/docker/docker-compose.html Docker Compose docker-compose.yml 配置文件编写详解_docker-compose.yml 编写_种子选手的博客-CSDN博客 docker-compose.yml 配置文件编写详解 1.dockerfile: 构建镜像; 2.docker run: 启动容器;…

upyter Notebook:内核似乎挂掉

项目场景:提示:这里简述项目相关背景:项目场景:深度强化学习在中国股票量化交易上的应用,要求跑赢大盘问题描述提示:这里描述项目中遇到的问题:使用Jupyter Notebook运行时,跑到绘图…

瑞萨RA系列mcu学习笔记--RTT-pwm驱动

方案1:Studio 2.2.6和使用了RASC3.5下使用pwm驱动 开发环境必须说一下,本人在在开发环境的问题上栽了一个跟头, 使用最新版的RTT Studio 2.2.6和使用了RASC4.0的版本生成的公共编译ok,但是一下载到mcu就直接不能运行&#xff1a…

浅谈Java的IO与Netty

一、Java的IO((Input/Output))模型 传统IO和Java NIO最大的区别是传统的IO是面向流,NIO是面向Buffer Socket之间建立链接及通信的过程!实际上就是对TCP/IP连接与通信过程的抽象: 1.服务端Socket会bind到指定的端口上,Listen客户端的”插入”…

如何迁移现有应用和数据到阿里云服务器?有哪些迁移工具和方法?

如何迁移现有应用和数据到阿里云服务器?有哪些迁移工具和方法?   随着云计算技术的不断发展,越来越多的企业和个人开始将应用和数据迁移到云服务器上。阿里云作为国内领先的云服务提供商,为用户提供了一系列方便可靠的应用和数据…

2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新

2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新 文章目录 2023开放原子全球开源峰会参会感受:英特尔开源技术合作与产品创新一. 引言二. 6.11参会感受2.1 英特尔基础软件开放生态合作2.2 Celadon加速安卓在英特尔架构上的产品创新2.3 面…

ASEMI代理光宝高速光耦LTV-5341参数,LTV-5341应用

编辑-Z LTV-5341参数描述: 型号:LTV-5341 储存温度Tstg:-55~125℃ 工作温度Topr:-40~110℃ 总输出电源电压(VCC –VEE):35V 平均正向输入电流IF:20mA 峰值瞬态输入电流IF(TRAN):1A 输入…

【面试中的网络知识】DNS原理-如何实现域名和IP地址的查询转换

接上一篇,理解 浏览器是如何生成HTTP消息的 ,最好是按照顺序来读。  从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈…

淘宝详情页分发推荐算法总结:用户即时兴趣强化

转子:https://juejin.cn/post/6992169847207493639 商品详情页是手淘内流量最大的模块之一,它加载了数十亿级商品的详细信息,是用户整个决策过程必不可少的一环。这个区块不仅要承接用户对当前商品充分感知的诉求,同时也要能肩负起…

必学KVM技术详解包括所有技能

KVM虚拟化进阶学习 一,KVM命令行安装 图形化安装教程:https://blog.csdn.net/weixin_53678904/article/details/125950867?spm1001.2014.3001.5501 1.存储池管理 ​ KVM必须要配置⼀个⽬录当作他存储磁盘镜像(存储卷)的⽬录,我们称这个⽬…

通达信筹码单峰密集选股公式,突破筹码密集区发出信号

筹码密集是相对筹码发散而言的,筹码分布在宽广的价格区间,这种状态就是筹码发散(如下图),而且筹码峰像群山一样,有多个高峰,属于多峰形态。 与之相对的,筹码分布在比较窄的价格区间&…

Armbian安装1panel教程

文章目录 一 1panel简介二 检测是否安装1Panel三 环境要求四 安装操作指导4.1 确定系统类型4.2 执行安装命令4.3 访问1panel面板4.4 设置1panel访问配置4.5 查看访问1panel面板入口 五 常用命令总结 一 1panel简介 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 二…

New Bing使用教程

New Bing使用教程 New Bing简介前提条件使用技巧 New Bing简介 New Bing是微软推出的一款基于GPT4模型的智能搜索引擎,它不仅可以提供高质量的搜索结果,还可以与用户进行自然语言交互。 用户只需安装Edge浏览器即可使用,但现实使用中会出现…

驱动操作 驱动移植试验和Source Insight添加项目

目录 驱动移植 》1.需要有一个驱动对应的 .c代码 》2.将.c文件放入到对应的文件夹内 》3.修改Makefile文件 》4.修改Kconfig菜单 》5.到顶层目录配置自己驱动 》6.编译成模块 》7.此时用的开发板上内核的编译器,安装得到开发板上进行安装 》8.在开发板上进…

标准IO和文件IO分别实现cp功能(嵌入式学习)

标准IO和文件IO分别实现cp功能 标准IO实现cp功能标准IO概念代码实现 文件IO实现cp功能文件IO概念代码实现 标准IO实现cp功能 标准IO概念 想了解标准IO的概念,请点击这里——》IO进程——标准IO(嵌入式学习) IO进程——标准IO(嵌…

【C语言】三子棋详解(包教包会的那种)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 三子棋及五子棋详解 前言三子棋的实现1. 打印菜单2.初始化并打印棋盘棋盘初始化函数功能的实现打印棋盘 3.玩家下棋与模拟电脑下棋玩家下棋电脑下棋随机数的生成 4.判断输赢我们的game函数 源码game.hgame.ctest.c 总结 …

PMP课堂模拟题目及解析(第18期)

171. 一个项目已经结束,然而,项目经理和项目团队成员仍然被要求解决技术问题,进行一些变更,并评估新的需求。若要保证项目开发的产品或服务现在具有运营支持,项目经理应该执行下列哪些工作? (选…

Nacos配置中心交互模型是push还是pull?

对于Nacos大家应该都不太陌生,出身阿里名声在外,能做动态服务发现、配置管理,非常好用的一个工具。然而这样的技术用的人越多面试被问的概率也就越大,如果只停留在使用层面,那面试可能要吃大亏。 比如我们今天要讨论的…

44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法

作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知,掌握了面向对…