NetWork——关于TCP协议的三次握手和四次挥手

2023-11-08

0.  准备知识

1ACK TCP协议规定只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

2SYN,在连接建立时用来同步序号。当SYN=1ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1ACK=1,因此SYN1就表示这是一个连接请求或连接接受报文

3FIN,用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接

1.  三次握手和四次挥手示意图

1. 1 三次握手详细示意图

1)首先由Client发出请求连接即 SYN=1 ACK=0TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=x

2)然后 Server 进行回复确认,即 SYN=1 ACK=1 seq=yack=x+1

3)再然后 Client 再进行一次确认,但不用SYN 了,这时即为 ACK=1seq=x+1 ack=y+1

1. 2  三次握手中的问题

1.3  四次挥手详细示意图

(1)当客户没有东西要发送时就要释放连接的时候(注意这里首先提出中断连接端可以是Client端,也可以是Server),客户端会发送一个FIN为1的没有数据的报文,进入FIN_WAIT状态,服务器收到后会给客户端一个确认,这时客户端那边不再发送数据信息(但仍可接收信息)。  

(2)客户端收到服务器的确认后进入等待状态,等待服务器请求释放连接 服务器数据发送完成后就向客户端请求连接释放(也是用FIN=1 表示,并且用ack = u+1(如图)), 客户端收到后回复一个确认信息,又要进入 TIME_WAIT 状态(等待2MSL 时间,最大报文生存时间)。服务器收到后关闭连接。

最后这里为什么还要等待呢?是防止最后一个ACK的丢失,服务器在超时后会重新发送FIN。如果客户端这时收到FIN就知道最后一个ACK丢失了,会重发。否则客户等待一段时间后依然没有收到回复,则证明Server端已正常关闭,那好,我客户端也可以关闭连接了。

1.4  最后是一些细节总结

(1)TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。

(2)服务器存在一个保活状态,即如果客户端突然故障死机了,那B那边的连接资源什么时候能释放呢? 

就是保活时间到了后,B会发送探测信息,以决定是否释放连接

(3)为什么连接的时候是三次握手,关闭的时候却是四次挥手?

关闭连接时,当Server端收到FIN报文时,很可能数据信息没有传完并不会立即关闭连接,所以只能先回复一个ACK报文(告诉Client端,"你发的FIN报文我收到了")。只有等到Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步挥手。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetWork——关于TCP协议的三次握手和四次挥手 的相关文章

随机推荐

  • SQL server 安装问题

    安装sqlserver2008中遇到的一些问题和解决办法 安装过程中遇到restart computer 导致不能成功安装 解决办法 1 打开注册表编辑器 2 找到以下路径 HKEY LOCAL MACHINE SYSTEM Current
  • 2020蓝桥杯省赛Java B组一等奖

    大家觉得写还可以 可以点赞 收藏 关注一下吧 也可以到我的个人博客参观一下 估计近几年都会一直更新 和我做个朋友吧 https motongxue cn 文章目录 A 门牌制作 问题描述 答案提交 代码 B 寻找 2020 问题描述 答案提
  • php用session防CC

  • 带头双向循环链表的增删查改

    带头双向循环链表的增删查改 简介 首先我们来看一下带头双向循环链表的结构示意图 在实际内存中并非是这样的结构 画图是为了我们能更好的理解链表 带头双向循环链表的结构最复杂 一般用在单独存储数据 实际中使用的链表数据结构 都是带头双向循环链表
  • 多机器人路径规划算法及其在CVD算法下的实现

    多机器人路径规划算法及其在CVD算法下的实现 在多机器人协同工作的场景中 路径规划问题是非常重要的 而对于存在障碍物的情况下 Voronoi图算法可以用于寻找机器人的最佳路径 本文将介绍一种基于CVD算法的多机器人路径规划算法 并提供相应的
  • 【MVCC多版本并发控制】MVCC 机制的原理及实现,什么是MVCC,多版本并发控制

    什么是 MVCC MVCC Multiversion Concurrency Control 中文全程叫多版本并发控制 是现代数据库 包括 MySQL Oracle PostgreSQL 等 引擎实现中常用的处理读写冲突的手段 目的在于提高
  • no matching key exchange method found

    问题描述 今天升级Ubuntu系统到16 04之后 之前通过git管理的一个项目add和commit之后无法push到服务器 每次提交都报以下错误 Unable to negotiate with xx xx x xxx port xxxx
  • 2021年数学建模国赛C题问题二详细思路和代码

    2021年数学建模国赛C题问题一详细思路和代码 说明 本思路仅为小编个人思路 其中关于本文中给出的AdaBoost回归预测模型于今年的 国赛参考评分标准有所出入 所以本题思路为个人创新思路 不一定符合评分标准 符号说明 1 问题分析 问题二
  • 深度学习学习日记_FCN_(1) shift_and_stitch

    当网络最后一层输出的 prediciton map size 和 label map size 大小不匹配时 除了bilinea interpolation 等暴力措施 且不采取 unpooling deconvolution 等decod
  • [Shell]文本处理工具(grep,cut,sort,uniq,tee,diff,paste,tr)以及bash的特性

    Shell 提示 Shell脚本基础 第一章 文本处理工具以及bash的特性 文章目录 Shell TOC 文章目录 前言 一 文本处理工具 1 grep工具 2 cut工具 3 sort工具 4 uniq工具 二 使用步骤 1 引入库 2
  • CORS解决跨域问题

    1 跨域问题 1 1 什么是跨域 跨域是指跨域名的访问 以下情况都属于跨域 跨域原因说明 示例 域名不同 www jd com 与 www taobao com 域名相同 端口不同 www jd com 8080 与 www jd com
  • java命令行运行小记

    JDK6中提供了java io Console类专用来访问基于字符的控制台设备 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互 就可以用Console类代劳 类似System in和System out 但我
  • spawn cmd ENOENT错误处理方法

    点击此电脑 gt 高级系统设置 gt 环境变量 gt 用户变量 gt 点击Path gt 点击新建 gt 添加一行 C WINDOWS system32 gt 重启电脑即可
  • JAVA代码审计XSS及Filter动态代理过滤

    1 介绍 最近写了个小玩意儿 主要功能为用户信息管理 例如新增 删除 添加等 但在没写过滤之前 全是xss 所以拿出来给大家进行简单分析 后续通过动态代理进行过滤 2 代码分析 这里就只分析用户添加的页面了 可以看到在未做任何过滤的情况触发
  • 软件测试基础——功能测试,软件测试提升完整指南

    目录 导读 前言 一 测试基础的重要性 二 提升数据库处理能力 三 具备定位问题的能力 四 具备总结能力 五 适时做好能力提升 六 总结 前言 为什么需要功能测试 1 从用户的角度 确保系统的执行与需求一致 2 因为是功能测试 测试者根本不
  • 通过提高元件选择效率支持引入高速车载网络的PoC方式

    我们在上篇介绍到使用村田开发的BIST后 任何人都能轻松地选择合适的元件 下面的专访内容 将从车载摄像头设计人员的角度 介绍如何让为复杂的偏置T电路选择元件变得更简单 最后附上介绍偏置T电感设计辅助工具使用方法的视频供读者参考 在选择构成偏
  • 接口自动化框架(Pytest+request+Allure)

    前言 接口自动化是指模拟程序接口层面的自动化 由于接口不易变更 维护成本更小 所以深受各大公司的喜爱 接口自动化包含2个部分 功能性的接口自动化测试和并发接口自动化测试 本次文章着重介绍第一种 功能性的接口自动化框架 一 简单介绍 环境 M
  • git add .报错warning: adding embedded git repository: carreport hint: You‘ve added another git...

    git add 时报错 git add warning adding embedded git repository xxxxxxxxxx hint You ve added another git repository inside yo
  • window mysql dump_Windows|环境变量&mysqldump

    起因 工作中需要对DB进行备份时 mysqldump无法正常启动 打开win的cmd 输入 mysqldump exe 显示 mysqldump exe 内部 外部 操作可能 認識 此类消息 都可以通过配置环境变量来解决 这种消息的意思是
  • NetWork——关于TCP协议的三次握手和四次挥手

    0 准备知识 1 ACK TCP协议规定只有ACK 1时有效 也规定连接建立后所有发送的报文的ACK必须为1 2 SYN 在连接建立时用来同步序号 当SYN 1而ACK 0时 表明这是一个连接请求报文 对方若同意建立连接 则应在响应报文中使