TCP三次握手四次挥手及各状态解释_计算机网络中seq是什么意思-程序员宅基地

技术标签: tcp  三次握手四次挥手  http  计算机网络  

常说的三次握手和四次挥手的意思就是TCP建立连接和断开连接的过程
下图为TCP三次握手和四次挥手的过程图
在这里插入图片描述
状态或符号解释

  • seq(sequence number),序列号,用来标记数据段的顺序,TCP把连接中发送的数据字节都编上一个序号,第一个字节的编号由本地随机产生
  • ack(acknowlege number),确认号,指的是期望接收到下一个字节的编号,因此当前报文段最后一个字节的编号+1即为确认号
  • ACK(acknowledgement),确认,当ACK=1确认号字段才有效,ACK=0确认号无效
  • SYN(synchronous),同步,连接建立时用于同步序号
  • 握手过程:
  • SYN_SENT 客户端发送连接服务器请求后的状态
  • SYN_RCVD 服务器接收到客户端的请求后返回响应后的状态,此时握手还没有完成
  • ESTABLISHED 握手成功后的状态,对于客户端而言,客户端发送连接请求后接收到服务器的响应,并发送确认连接后的状态;对于服务器而言,接收到客户端第三次握手信息后确认连接的状态
  • 挥手过程:
  • FIN_WAIT1是主动断开连接方发出关闭请求后的状态,表示主动方(主动断开TCP连接的一方)已经没有信息要发送给被动方
  • CLOSED_WAIT是被动方接收到主动方的关闭请求后返回ACK响应后的状态,此时被动方应该做的是查看自身是否还有数据需要传递给主动方,如果没有则发送关闭请求
  • FIN_WAIT2是主动方向被动方发送关闭请求后接收到响应后的状态
  • LAST_ACK是被动方已经确定没有数据需要传递给主动方后,发送给主动方关闭请求后的状态,表示最后一次响应主动方,它最后再等待主动方的ACK报文,当收到报文后便CLOSED
  • WAIT_TIME是主动方接收到被动方关闭请求后的状态,它再返回响应给被动方,被动方收到这个响应后便断开连接。此时主动方再等待2MSL,来确保被动方已经没有信息传递给主动方了,时间过后则关闭连接

为什么是三次握手,而不是两次或者四次
1、根据图中三次握手的信息来看,第一次客户端发送连接请求,第二次服务器接收请求并响应,如果两次的话,可能会出现以下问题,由于网络原因,客户端可能接收不到服务器的响应,那么客户端会认为服务器没有同意它的连接,而服务器确已经开始和客户端的连接了,浪费服务器的资源
2、因为三次握手已经可以满足连接的需求了,三次握手是理论上的最小值,为了提高效率,因此没必要采用四次连接

为什么是四次挥手
熟悉上面断开连接的过程即可理解为什么四次挥手了,这里就不再赘述了

这里是引用为什么等待2MSL
1、在主动方发送出最后的ACK回复,但该ACK可能丢失。被动方如果没有收到ACK,将不断重复发送FIN片段。MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,主动方都没有再次收到FIN,那么主动方推断ACK已经被成功接收,确保被动方已经断开连接,则结束此次TCP连接。
2、等待2MSL就可以使本连接持续的时间所产生的所有报文段都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求的报文段。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_38112165/article/details/109270943

智能推荐

Python 批量修改图片分辨率_image.open(image_file).resize((720, 1280))-程序员宅基地

文章浏览阅读3.7k次,点赞6次,收藏30次。# 导入需要的模块from glob import globfrom PIL import Imageimport os# 图片路径# 使用 glob模块 获得文件夹内所有jpg图像img_path = glob("./*.jpg")#存储(输出)路径path_save = "./result"for i,file in enumerate(img_path): name = os.path.join(path_save, "%d.jpg"%i) im = ..._image.open(image_file).resize((720, 1280))

nmap 目标说明_nmap 扫描文件中的目标-程序员宅基地

文章浏览阅读1.9k次。1. 什么是目标说明除了 选项,所有出现在 Nmap 命令行上的命令字符串 都被视为对目标主机的说明。 最简单的目标说明是指定一个目标 IP 地址或主机名。2. 指定目标 IP 地址2.1. 普通格式 IP 地址指定普通的 IP 地址很简单,比如在 nmap 命令中跟随这样 192.168.0.1 格式的 IP 地址即可,这样每次只能指定一个 IP 地址。但是这样指定一个 IP 地址也有它的不足或是不够灵活的地方,比如需要同时扫描多个 IP地址,而且这几个 IP 地址的主机号是连续的也就是这几_nmap 扫描文件中的目标

.Net程序员如何快速成长之我见(转)-程序员宅基地

文章浏览阅读151次。在面试一些新程序员的时候,当问他为什么选择.net方向时,经常听到一些这样的回答:记得曾经我的老师对我们说,当你在开发语言和工具方面不知道怎么选择的时候,那么你只要跟着微软走就行了.所以最终他选择了.net.我想大家都曾有过类似的经历.当经历过数年之后,一些人在.net的某方面成为了专家,有些人精通数据库方面,有些人精通web界面设计,有些人精通系统架构.还有一些人是什么都会,但不管哪..._.net程序员到新公司怎么快速熟悉一个业余

linux性能调优汇总(一)cpu_linux性能调优工具-程序员宅基地

文章浏览阅读144次。本部分主要介绍日常开发中,经常使用的程序性能调试命令及思路,主要分为CPU、内存、磁盘IO三部分本章主要介绍CPU部分_linux性能调优工具

CSS 在全屏iphonex(刘海屏)中的适配_padding-top: env(safe-area-inset-top);-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏6次。iphonex 已经上线有一段时间了,作为业界刘海屏幕第一款机型,导致全屏不能正常的全屏显示了,,所以需要对iphonx 适配,下面就详细说说如何适配先看一张适配前后的图:iphonex 提供的 meta 头<meta name="viewport" content="viewport-fit=contain"><meta name="vie..._padding-top: env(safe-area-inset-top);

Flume与实际项目中用到的_flume在实际中的应用-程序员宅基地

文章浏览阅读488次,点赞4次,收藏3次。http://flume.apache.org/安装1、上传2、解压3、修改conf/flume-env.sh 文件中的JDK目录 注意:JAVA_OPTS 配置 如果我们传输文件过大 报内存溢出时 需要修改这个配置项4、验证安装是否成功 ./flume-ng version5、配置环境变量 export FLUME_HOME=/home/apache-flume-1..._flume在实际中的应用

随便推点

Matlab进阶绘图第20期—带类别标签的三维柱状图_matlab画三标签柱状图-程序员宅基地

文章浏览阅读846次。Matlab进阶绘图第20期—带类别标签的三维柱状图_matlab画三标签柱状图

THREE.js渲染顺序_threejs 多个几何体展示顺序-程序员宅基地

文章浏览阅读1.1k次。本文主要讲述了THREE.js中的不透明物体和透明物体的渲染顺序,主要涉及THREE.js的以下内容:Materialblending及blending相关的一系列属性Object3Ddepth原文:https://segmentfault.com/a/1190000041221932。_threejs 多个几何体展示顺序

SQL Server 数据库查询速度慢的原因有很多常见的有那些呢_mssql server 响应变慢了-程序员宅基地

文章浏览阅读428次,点赞9次,收藏8次。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。13、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。_mssql server 响应变慢了

Linux 学习路线图_linux学习路径-程序员宅基地

文章浏览阅读2.4w次,点赞62次,收藏559次。1.应用场景更加高效地学习并达到运用Linux 2.学习/操作 linux运维学习需要分为四个阶段:初级入门、中级进阶、高级提升、资深方向细化。 第一阶段:初级入门 初级阶段需要把linux学习路线搞清楚,任何学习都是循序渐进的,所以学linux也是需要有一定的路线。 初级入门: Linux基础知识、基本命令(起源、组成、常用命令如cp、ls、fi..._linux学习路径

量子计算与通信技术:实现无线信息传递的新方法-程序员宅基地

文章浏览阅读893次,点赞19次,收藏19次。1.背景介绍量子计算与通信技术是当今科技界最热门的研究领域之一。随着计算机科学、物理学、信息论等多个领域的发展,量子计算与通信技术已经从理论研究阶段迈出了实际应用的第一步。在这篇文章中,我们将深入探讨量子计算与通信技术的核心概念、算法原理、具体操作步骤以及数学模型公式。同时,我们还将分析其在未来发展趋势与挑战方面的展望。1.1 量子计算与通信技术的发展背景量子计算与通信技术的研究起源于..._量子计算辅助无线移动网络

QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)-程序员宅基地

文章浏览阅读976次。Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制。Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下图所示:QPixmap继承了QPaintDevice,您可用以建立QPainter并于上进行绘图,您也可以直接指定图案加载Qt所支持的图档,像是BMP、GIF、JPG、JPEG、PNG等,并..._qt paint 绘制图片不指定大小