TCP相关问题总结

文章目录

    • TCP连接建立过程
      • 1. TCP三次握手
      • 2. TCP四次挥手
      • 3. TCP为什么是三次握手
      • 4. TCP为什么是四次挥手
    • TCP流量控制
    • TCP拥塞控制
      • 1. 为什么需要拥塞控制
      • 2. 控制手段
    • TCP连接建立过程中出现丢包

TCP连接建立过程

1. TCP三次握手

在这里插入图片描述
首先client端发出连接请求,并且请求同步位SYN置为1,表示连接建立请求。此外传递seq序号(假设初始值为500)

然后server端接收SYN后,发送ACK确认请求,seq=501,表示对client发送的SYN请求的确认;此外,server也需要发送SYN请求,seq=700(假设服务端初值为700)

最后client端接收请求,对server端的SYN进行确认,发送ACK请求,seq=701

至此,三次握手完成,连接建立

2. TCP四次挥手

在这里插入图片描述
首先,客户端发起断开客户端连接请求。客户端向服务端发送FIN请求

服务端接收请求,并告诉客户端已经接收到客户端发起的断开请求。此时客户端的消息发送通道断开

然后,服务端执行类似流程,关闭服务端发送消息到客户端的通道

3. TCP为什么是三次握手

假设TCP是两次握手,则可能会发生以下情况

客户端发起TCP握手,向服务器发送SYN,但该数据因网络波动滞留

此时触发超时重传,重新简历TCP连接

当新建立的连接断开后,之前在网络中滞留的SYN连接请求传递到服务端,服务端误以为客户端需要建立TCP连接,因此会发送SYN+ACK请求,并进入连接建立状态,但客户端并不需要建立连接,不会发送数据,因此会造成服务端资源的浪费

在这里插入图片描述

三次握手可以防止客户端无效连接信息再次到达服务器,导致重新连接

4. TCP为什么是四次挥手

之所以需要四次挥手,因为半关闭

tcp通道允许双方互相发送数据,数据是双向流动的。在关闭管道的时候,就需要关闭两次

一次是关闭 client --> server;另一次是关闭 client <-- server

每次关闭都需要执行两步操作:1.发出断开请求,2.确认断开请求

TCP流量控制

接收方通过窗口(Window)的大小来控制发送方的发送速率,防止发送方发送过多数据导致接收方无法处理

在这里插入图片描述
上图中,rwnd就是接收方对发送方数据发送窗口大小的控制

需要注意的是,如果接收方没有多余的空间接收数据,会控制发送方的发送窗口大小为0,此时发送方不会发送数据

当接收方缓存空间存在剩余,才会重新控制发送方的窗口大小,接收方发送窗口非零通知

但是,接收方的发送的非零通知在传输过程中丢失了,那么就会出现双方等待彼此发送数据,进而导致死锁现象发生

在这里插入图片描述
针对非零窗口通知丢失问题,数据发送方会开启计时器,如果在计时器内没有收到非零窗口通知,那么接收方会发送探测报文,查看接收方是否有剩余空间用于接收数据。

往复如是,直到发送方窗口大小设置非零

通过计时器的方式能够较好的解决非零通知数据传递丢失的问题

在这里插入图片描述

TCP拥塞控制

1. 为什么需要拥塞控制

在这里插入图片描述
简单来说,网络负载是优先的,如果短时间内涌入大量请求,远远超出了网络承受能力,网络可能会出现瘫痪

就像弹簧一样,一旦过度拉伸,弹簧就丧失了弹性

2. 控制手段

  • 慢启动(Slow Start):

    • 因为在网络初期,不了解接收端对网络数据的接收能力,一次性涌入大量数据可能会导致网络瘫痪,因此先发送少量数据,然后倍增,呈现指数上涨
    • 过程: 发送端初始设定一个拥塞窗口(cwnd),每经过一个往返时间(RTT),拥塞窗口大小加倍。随着时间的推移,数据发送速率逐渐增大,呈现指数增长。
  • 拥塞避免(Congestion Avoidance):

    • 避免过度快速增大拥塞窗口,维持网络的稳定性。
    • 过程: 当慢启动阶段结束后,cwnd的增长方式从指数变为线性。在拥塞避免阶段,每当接收到一个新的ACK时,cwnd按比例增加
  • 快速重传(Fast Retransmit):

    • 提高数据传输的可靠性,及时识别并快速补发丢失的数据包,减少不必要的等待时间,防止发送方误以为网络瘫痪,将cwnd置为1,启动慢开始算法,从而提升整体传输效率
    • 过程: 当发送端收到三个相同的确认(Duplicate ACK)时,就认为有一个数据包丢失,立即重传该数据包而不等待超时。
  • 快速恢复(Fast Recovery):

    • 在发生数据包丢失后,快速调整拥塞窗口以减小对网络的压力,同时尽快恢复数据传输,使网络能更快地回到稳定状态
    • 过程: 在快速重传后,拥塞窗口减半,然后进入拥塞避免阶段。

在这里插入图片描述

  • 有关快速重传的不中补充在这里插入图片描述

TCP连接建立过程中出现丢包

TCP连接过程,需要经历三次握手。此时如果出现丢包问题,数据发送方会等待对方的确认信息,如果超过预定时间还没有接收到信息,则会进行超时重传

如果是第一次、第二次握手,重传可以理解,因为这两次的握手都是建立在对方回应的基础上才能进行的。但如果是第三次握手信息丢包呢?客户端发送ACK确认信息给服务端,但该条信息丢失了,而第三次握手服务端无需确认,那客户端如何感知到呢?

如果ACK成功送达服务端,服务端会将TCP连接状态更改为ESTABLISHED,并准备接收客户端的数据。客户端可以通过尝试发送数据来检验连接是否已建立。如果服务端成功接收了数据且没有返回错误(如RST报文),则可以推断ACK报文已经成功发送;否则认为连接建立失败,重新发送ACK

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 VSCode 中运行 C#

文章目录 1.为何选择VSCode而不是VS2.操作步骤2.1 安装.NET2.2 安装扩展插件2.2.1 C#2.2.2 Code Runner 3.新建工程HelloCsharp 1.为何选择VSCode而不是VS VS实在是太“重”了&#xff0c;如果只是写一些简单控制台程序进行调试&#xff0c;则完全没必要 2.操作步骤 2.1 安装…

线性代数 --- 矩阵的对角化以及矩阵的n次幂

矩阵的对角化以及矩阵的n次幂 &#xff08;特征向量与特征值的应用&#xff09; 前言&#xff1a; 在上一篇文章中&#xff0c;我记录了学习矩阵的特征向量和特征值的学习笔记&#xff0c;所关注的是那些矩阵A作用于向量x后&#xff0c;方向不发生改变的x(仅有尺度的缩放)。线…

iOS - 多线程-GCD-队列组

文章目录 iOS - 多线程-GCD-队列组1. 队列组1.1 基本使用步骤 iOS - 多线程-GCD-队列组 开发过程中&#xff0c;有时候想实现这样的效果 多个任务并发执行所有任务执行完成后&#xff0c;进行下一步处理&#xff08;比如回到主线程刷新UI&#xff09; 1. 队列组 可以使用GC…

探索亚马逊云科技「生成式 AI 精英速成计划」

目录 前言「生成式 AI 精英速成计划」技术开发课程学习课程学习 总结 前言 亚马逊云科技&#xff08;Amazon Web Services&#xff0c;简称AWS&#xff09;作为全球领先的云计算服务提供商&#xff0c;一直以来在推动人工智能&#xff08;AI&#xff09;领域的发展中扮演着重要…

调度问题变形的贪心算法分析与实现

调度问题变形的贪心算法分析与实现 一、问题背景与算法描述二、算法正确性证明三、算法实现与分析四、结论 一、问题背景与算法描述 带截止时间和惩罚的单位时间任务调度问题是一个典型的贪心算法应用场景。该问题的目标是最小化超过截止时间导致的惩罚总和。给定一组单位时间…

element plus:tree拖动节点交换位置和改变层级

图层list里有各种组件&#xff0c;用element plus的tree来渲染&#xff0c;可以把图片等组件到面板里&#xff0c;面板是容器&#xff0c;非容器组件&#xff0c;比如图片、文本等&#xff0c;就不能让其他组件拖进来。 主要在于allow-drop属性的回调函数编写&#xff0c;要理清…

毕业撒花 流感服务小程序的设计与实现

目录 1.1 总体页面设计 1.1.1 用户首页 1.1.2 新闻页面 1.1.3 我的页面 1.1.5 管理员登陆页面 1.1.6 管理员首页 1.2 用户模块 1.2.1 体检预约功能 1.2.2 体检报告功能 1.2.4 流感数据可视化功能 1.2.5 知识科普功能 1.2.6 疾病判断功能 1.2.7 出示个人就诊码功能 …

java实现解析html获取图片或视频url

一、前言 有时在实际项目中&#xff0c;比如发布某篇文章&#xff0c;需要取文章中的某张图片作为封面&#xff0c;那么此时需要文章内容&#xff0c;获取html内容中的图片地址作为封面&#xff0c;下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

Elasticsearch集群部署(Linux)

1. 准备环境 这里准备三台Linux虚拟机&#xff0c;用于配置Elasticsearch集群和部署可视化工具Kibana。 角色IP域名集群名称节点名称版本操作系统ES192.168.243.100linux100cluster-eses-node-1007.12.0CentOS 7192.168.243.101linux101cluster-eses-node-101192.168.243.102…

IDEA 常规设置,让工作便利化

1、自动提示&#xff0c;不区分大小写 File-->Settings-->Editor-->Code completion 然后把Match Case前面的勾选去掉&#xff0c;点击OK保存 2.快速生成main方法设置 idea快速生成main方法的快捷键是psvm (public static void main(String[] args) {}) &#xff1b;…

C语言入门课程学习笔记1

C语言入门课程学习笔记1 第1课 - 概论第2课 -helloworld第3课 -数据输出第4课 -数据类型与变量第5课 - 深入数据类型与变量第6课 - 类型与变量编程练习第7课 - 程序中的数据输入 本文学习自狄泰软件学院 唐佐林老师的 C语言入门课程&#xff0c;图片全部来源于课程PPT&#xff…

分割链表和回文链表习题

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 个人主页&#xff1a;LaNzikinh-CSDN博客 收入专栏:初阶数据结构_LaNzikinh篮子的博客-CSDN博客 文章目录 一.回文链表LCR 027. 回文链表 - 力扣&#x…

BUUCTF---[SWPU2019]神奇的二维码

1、下载附件是一张二维码&#xff0c;拿去扫描得到了flag 2、拿去提交是错的&#xff08;不会这么简单哈哈哈&#xff09;&#xff0c;常规操作在kali中分析 3、分离发现图片里面有东西 4、查看txt&#xff0c;发现里面有一串字符&#xff0c;解码后为 5、查看文档&#xff0c…

比特币之路:技术突破、创新思维与领军人物

比特币的兴起是一段充满技术突破、创新思维和领军人物的传奇之路。在这篇文章中&#xff0c;我们将探讨比特币发展的历程&#xff0c;以及那些在这一过程中发挥重要作用的关键人物。 技术突破与前奏 比特币的诞生并非凭空而来&#xff0c;而是建立在先前的技术储备之上。在密码…

小程序 rich-text 解析富文本 图片过大时如何自适应?

在微信小程序中&#xff0c;用rich-text 解析后端返回的数据&#xff0c;当图片尺寸太大时&#xff0c;会溢出屏幕&#xff0c;导致横向出现滚动 查看富文本代码 图片是用 <img 标签&#xff0c;所以写个正则匹配一下图片标签&#xff0c;手动加上样式即可 // content 为后…

(一)、SQL进阶——神奇的SQL

一、CASE表达式 1、CASE表达式概述 case表达式有简单case表达式和搜索case表达式两种写法 -- 简单case表达式 case sex when 1 then 男 when 0 then 女 else 其他 end -- 搜索case表达式 case when sex1 then 男 when sex1 then 男 else 其他 end 这两种写法执行的结…

(5)步态识别论文研读——GaitDAN:基于对抗域适应的跨视角步态识别

GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation | IEEE Journals & Magazine | IEEE Xplore GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation 基于对抗与适应 摘要&#xff1a;视角变化导致步态外观存在显着差异。因…

黄金行情下跌有投资机会吗?

尽管黄金价格的波动常常引起投资者的高度关注&#xff0c;但行情的下跌未必只是警讯&#xff0c;亦可能蕴藏着某些难得的投资机会。总之&#xff0c;答案是肯定的——在黄金行情下跌时&#xff0c;依旧有适宜的投资机会&#xff0c;只是这需要投资者具备相应的应对知识和策略。…

python基础知识点(蓝桥杯python科目个人复习计划66)

今日复习内容&#xff1a;算法双周赛 第一题&#xff1a;疯狂星期六 题目描述&#xff1a; 麦肯鸡是一家名声在外的汉堡店&#xff0c;他们最近推出了一份名为vivo50的套餐&#xff0c;只需要在门口大声喊出vivo50&#xff0c;就可以获得这个套餐。 现在&#xff0c;请你打…

经典案例|使用Supabase解决可视化大屏项目的常见问题

敏博科技专业致力于应急管理行业&#xff0c;提供以物联网技术和感知预警算法模型为核心的先进产品和解决方案。应急管理行业的业务非常繁多和复杂&#xff0c;很多时候都需要在短时间内交付出稳定高效的业务系统。如下两张图某市的安全生产监测预警系统 MemFire Cloud应用开…
最新文章