当前位置: 首页 > news >正文

飞天使-linux操作的一些技巧与知识点2-TCP的三次握手以及四次挥手以及转换状态

文章目录

        • TCP 的三次握手
        • 四次挥手
        • 转换状态

TCP 的三次握手
第一次,客户端与服务端建立链接,需要发送请求连接的消息
第二次,服务端接口到数据后,返回一个确认的操作*(至此客户端和服务端链路建立成功)
第三次,服务端还需要发送要与客户端建立链接的请求
第四次,客户端收到数据后,返回一个确认的操作(至此服务端到客户端的链路建立成功)
由于建立链接时没有数据传输,所以第二次确认和第三次请求可以合并为一次发送tcp协议为了实现可靠传输,通信双方需要判断自己已经发送的数据包是否都被接收方收到,如果没有收到,就需要重新发送,为了实现这个需求,就引出 序号 seq ,和确认号 ack的使用

在这里插入图片描述
在这里插入图片描述

四次挥手
第一次挥手: 客户端(服务端也可以主动断开) 向服务端说明想要关闭连接 
第二次挥手:  服务端会回复确认,但不是关闭,因为此时服务端可能还有数据在传输中
第三次挥手:待到服务端数据传输都结束后,服务端向客户端发出消息,我要断开连接了
第四次挥手,客户端收到服务端的断开信息后,给予确认,服务端收到确认后正式关闭1 代表客户端 2代表服务端1 -> 2 
FIN=1
2 -> 1 
ACK =1
FIN =1 
1 -> 2
ACK =1 
转换状态
三次握手状态转换
1.客户端发送syn包向服务端请求建立TCP 连接,客户端进入 SYN_SEND 状态
2.服务端收到请求之后,向客户端发送 SYN+ACK 的合成包,同时自身进入 SYN_RECV 状态
3.客户端收到回复之后,发送 ACK信息,自身进入 ESTABLISHED 状态
4.服务端收到ACK数据之后,进入 ESTABLISHED状态 四次挥手过状态转换
1.客户端发送完数据之后,向服务器请求断开连接,自身进入 FIN_WAIT_1 状态
2.服务端收到 FIN 包之后,回复ACK包表示已经收到,但是此时服务端可能还有数据没有发送完成,自身进入CLOSE_WAIT 状态,表示对方已发送完成且请求关闭连接,自身发送完成之后可以关闭连接
3.服务端数据发送完成之后,发送FIN包给客户端,自身进入LAST_ACK 状态,等待客户端 ACK确认
4,客户端收到FIN 包之后,回复一个ACK包,并进入TIME_WAIT 状态如果机器 TIME_WAIT 过多,会造成端口耗尽,可以修改内核参数
tcp_tw_recycle=1 端口重用

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 鸿蒙(HarmonyOS)应用开发——简易版轮播图
  • 宇视科技视频监控 main-cgi 文件信息泄露漏洞
  • PostgreSql 设置自增字段
  • SQL注入绕过技术
  • GO闭包实现原理(汇编级讲解)
  • Python查找列表中不重复的数字
  • 【ArcGIS微课1000例】0080:ArcGIS将shp转json(geojson)案例教程
  • 网络基础(八):路由器的基本原理及配置
  • Redis系列之简单实现watchDog自动续期机制
  • android项目实战之编辑器图片上传预览
  • 使用python脚本一个简单的搭建ansible集群
  • 数据在网络中是怎么传输的?
  • 数据库结构
  • WT588F02B-8S语音芯片在水波炉中的应用:提升用户体验与安全性
  • GPT-4V 在机器人领域的应用
  • JavaScript-如何实现克隆(clone)函数
  • $translatePartialLoader加载失败及解决方式
  • __proto__ 和 prototype的关系
  • 【React系列】如何构建React应用程序
  • CentOS7简单部署NFS
  • Date型的使用
  • leetcode388. Longest Absolute File Path
  • Ruby 2.x 源代码分析:扩展 概述
  • Shadow DOM 内部构造及如何构建独立组件
  • windows下mongoDB的环境配置
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端性能优化--懒加载和预加载
  • 容器服务kubernetes弹性伸缩高级用法
  • 深度学习入门:10门免费线上课程推荐
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信小程序实战练习(仿五洲到家微信版)
  • 在weex里面使用chart图表
  • 正则学习笔记
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​批处理文件中的errorlevel用法
  • ![CDATA[ ]] 是什么东东
  • ###C语言程序设计-----C语言学习(6)#
  • (10)ATF MMU转换表
  • (12)Hive调优——count distinct去重优化
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (52)只出现一次的数字III
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)hibernate配置管理
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • .NET 5种线程安全集合
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET MVC第三章、三种传值方式
  • .NET 事件模型教程(二)
  • .NetCore项目nginx发布
  • .project文件