【Linux网络】TCP/IP三次握手、四次挥手流程

news2024/12/24 3:16:15

目录

一、三次握手,建立连接

二、四次挥手,断开连接

三、主要字段

 1、标志位(Flags)

 2、序号(sequence number)

 3、确认号(acknowledgement number)

四、三次握手的报文变化

五、四次挥手的报文变化

六、面试题


一、三次握手,建立连接

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手,建立一个连接。

  1. 第一次握手: 建立连接时,客户端 发送 SYN 包到 服务器,并且,客户端 进入 SYN_SENT状态,等待 服务器 确认;
  2. 第二次握手: 服务器 收到 SYN包 后,同时,发送一个 SYN+ACK 包给 客户端 ,此时,服务器进入 SYN_RCVD 状态;
  3. 第三次握手: 客户端 收到服务器的 SYN+ACK 包后,向 服务器 发送确认的 ACK 包 。此包发送完毕,客户端 和 服务器 进入 ESTABLISHED 状态,完成三次握手。

  完成三次握手,建立好链接。

二、四次挥手,断开连接

  1. 第1次挥手:主动关闭方 向 被动关闭方 发送一个 FIN 包 。也就是主动关闭方 告诉 被动关闭方 :我已经不会再给你发数据了。

  2. 第2次挥手:被动关闭方 收到 FIN 包后,发送一个 ACK 包给 主动关闭方 。 就告诉 主动关闭方 已收到通知 。

  3. 第3次挥手:被动关闭方 又发送一个 FIN 包,给 主动关闭方,用来关闭 被动关闭方 到 主动关闭方 的数据传送。也就是告诉 主动关闭方,我的数据也发送完了,不会再给你发数据了。

  4. 第4次挥手:主动关闭方 收到 FIN 包后,发送一个 ACK 包给 被动关闭方 ,至此,完成四次挥手。

  注意:第2次和第3次, 被动关闭方 连续两次向 主动关闭方 发送报文。

三、主要字段

 1、标志位(Flags)

标志位含义说明
SYN发起建立连接当SYN=1,ACK=0,表明是连接请求报文,若同意连接,则响应报文中应该有 SYN=1,ACK=1。
ACK确认标识当ACK=1,确认标识才有效。(为了与 确认号ack 区分开,我们一定要用大写字母)
FIN释放连接当FIN=1,表明此报文的发送方的数据已经发送完毕,并且要求释放。
PSH读取数据当PSH=1,提示接收端应用程序立即从TCP缓存区把数据读走。
RST重置连接当RST=1,表时TCP连接出现严重差错,必须释放连接,在后再重新连接。
URG紧急指针当URG=1,表明紧急指针字段有效,告诉系统此报文段中有紧急数据。

 2、序号(sequence number)

  seq序号,占32位。用来标识从TCP 源端 向 目的端 发送的字节流,发起方 发送数据时对此进行标记。

 3、确认号(acknowledgement number)

   ack 序号,占32位。只有 ACK 标志位为1时,确认序号字段才有效,ack=seq+1。

四、三次握手的报文变化

五、四次挥手的报文变化

六、面试题

 1、为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

  建立连接时,ACK 和 SYN可以放在一个报文里来发送。而关闭连接时,被 动关闭方 可能还需要发送一些数据后,再发送 FIN 报文表示同意现在可以关闭连接了,所以它这里的 ACK报文 和 FIN报文 多数情况下都是分开发送的。

 2、为什么必须是三次握手,不能用两次握手进行连接?

  TCP 建立连接时,通过 三次握手 能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。

  不使用「两次握手」和「四次握手」的原因:

「两次握手」:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;
「四次握手」:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

 3、三次握手、四次挥手的目的

  三次握手 :是为了保证双方都准备好了资源。

  四次挥手 :是为了保证双方把资源都释放掉了。

 4、tcp三次握手的过程, accept发生在三次握手哪个阶段?

  client 的 connect 引起3次握手。

  server 在socket, bind, listen后,阻塞在accept,三次握⼿手完成后, accept 返回⼀一个fd,因此 accept 发⽣生在三次握⼿手之后。

 5、四次挥手,为什么 TIME_WAIT 状态还需要等 2MSL 后才能返回到 CLOSED 状态?

  两个存在的理由:

  1、无法保证最后发送的 ACK报文 会一定被对方收到,所以需要重发可能丢失的 ACK报文。

  2、关闭链接一段时间后可能会在相同的IP地址和端口建立新的连接,为了防止旧连接的重复分组在新连接已经终止后再现。2MSL足以让分组最多存活 MSL秒 被丢弃。


本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

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

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

相关文章

python3如何安装各类库的小总结

我的python3的安装路径是: C:\Users\Administrator\AppData\Local\Programs\Python\Python38 C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python3.exeC:\Users\Administrator\AppData\Local\Programs\Python\Python38\Scripts C:\Users\Admin…

全球视野,共赴“睛”彩!四川眼科医院2023全国眼科学术大会行圆满收官!

9月6日—10日,国内眼科学界最盛大的学术会议——中华医学会第二十七次全国眼科学术大会(CCOS 2023)在湖南长沙隆重举办!逾万名国内外眼科专家、学者代表参加盛会,聚焦眼科发展的新技术、新知识以及新的经验,分享眼科和视觉科学方面最新的研究…

如何在JavaScript中实现链式调用(chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的链式调用⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴…

JD(商品详情)API接口

为了进行电商平台 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个JD应用注册一个应用程序键(App Key) 。 3)下载JDAPI的SDK并掌握基本的API基础知识和调用 4)利用SDK接口和…

肖sir__mysql之介绍__001

mysql之介绍 一、认识数据库 (1)什么是数据库? 是存放数据的电子仓库。以某种方式存储百万条,上亿条数据,供多个用户访问共享。 如: (2)数据库分关系型数据库和非关系型数据库 a、…

互联网行业:是走下坡路还是瘦死的骆驼比马大?看看这个你就知道了!

随着互联网行业的快速发展,一些人开始质疑这个行业是否已经开始走下坡路了。 但是,我们想说的是,互联网行业还远远没有达到饱和状态,它仍然是一个充满机遇和挑战的领域。 让我们来看一些数据。根据最新的统计数据显示&#xff0c…

第二证券:低位放量下跌是什么征兆?

近年来,股市的波动一直是人们重视的热点。低位放量跌落是出资者最不愿意看到的,可是却经常呈现。那么,低位放量跌落是什么预兆呢?从多个角度剖析一下原因,帮助出资者更好地了解商场动态。 从技能面剖析,低…

033:跨域,vue端和 Nignx反向代理的配置详细解析

第033个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

我的创作纪念日---从考研调剂到研一的旅程

文章目录 一、前言二、机缘三、收获四、日常五、憧憬 一、前言 大家好,我是小馒头学Python,小馒头学Python就是我,今天是我第一次收到创作纪念日的私信,去年的今天我还在考研,那个时候整天浑浑噩噩的,迷茫…

flex布局学习笔记

flex布局 推荐网址:弹性框完整指南 |CSS-Tricks - CSS-Tricks 基础知识和术语 由于flexbox是一个完整的模块,而不是一个单一的属性,它涉及很多事情,包括它的整套属性。其中一些应该在容器(父元素,称为“…

【窗体】Winform两个窗体之间通过委托事件进行值传递,基础篇

2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试! 在实际项目中,我们可能会用到一些窗体做一些小工具或者小功能。比如:运行程序,在主窗体A基础上,点击某个按钮希望能…

华为云云耀云服务器L实例评测|docker私有仓库部署手册

【软件安装版本】【集群安装(是)(否)】 版本号 文档编写 文档审核 创建日期 修改日期 1.0 jzg jzg 2023.9.13 一. 部署规划与架构 1. 规划:(集群:网络规划&…

墨西哥专线清关有什么要求?

墨西哥专线的清关要求是根据当地法规和国际贸易协定而定的。以下是一些墨西哥专线清关的常见要求: 一、 清关文件 进口货物需要提供一系列文件,包括商业发票、装箱单、进口许可证、运输文件、保险文件等。这些文件需要准确、完整地填写,并且…

Java | synchronized和Lock

不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴一、同步锁🌴二、Lock锁🌴三.死锁🌴总结 🌴前言 本文内容是关于Java…

KeyError: ‘mmrotate.RotLocalVisualizer is not in the visualizer registry.

问题 今天用MMyolo训练RTMDet模型的时候,报错: KeyError: ‘mmrotate.RotLocalVisualizer is not in the visualizer registry. Pleasecheck whether the value of mmrotate .RotLocalvisualizer is correct or it wasregistered as expected. More det…

公众号留言功能不见了怎么办?如何恢复?

为什么公众号没有留言功能?2018年2月12日,TX新规出台:根据相关规定和平台规则要求,我们暂时调整留言功能开放规则,后续新注册帐号无留言功能。这就意味着2018年2月12日号之后注册的公众号不论个人主体还是组织主体&…

TableConvert-免费在线表格转工具 让表格转换变得更容易

在线表格转工具TableConvert TableConvert 是一个基于web的免费且强大在线表格转换工具,它可以在 Excel、CSV、LaTeX 表格、HTML、JSON 数组、insert SQL、Markdown 表格 和 MediaWiki 表格等之间进行互相转换,也可以通过在线表格编辑器轻松的创建和生成…

无损剪切音视频文件的跨平台工具: LosslessCut | 开源日报 0908

mifi/lossless-cut Stars: 17.3k License: GPL-2.0 LosslessCut是一款跨平台的FFmpeg GUI工具,它可以对视频、音频和字幕等相关媒体文件进行快速无损操作。 该软件最主要的功能是无损剪切和裁剪音视频文件,可以使用它快速提取出好的部分并丢弃其余片段…

录视频软件哪个好?挑选指南来啦!(3款)

视频录制是在数字时代中广泛应用的一种技术,它能够捕捉并记录下屏幕上的内容和操作。而录视频软件是一种将计算机屏幕、摄像头画面或游戏画面录制成视频的工具。在本文中,我们将为您推荐3款优秀的录视频软件,帮助您更好地录制、编辑和分享视频…

​基于MCTS和Residual-EBM的数学推理能力提升实践

©PaperWeekly 原创 作者 | 许皓天 导读 LLM 在 NLP 以及 ai-agent 等场景展现出了巨大的应用潜力,并且在复杂推理任务如 math 等任务极大提升了模型性能。 近期,基于 llama2 的 RFT [1] 以及 wizard-math [2] 等通过 rejection-sampling、RLEIF&am…