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

TCP 的三次握手和四次挥手

Java 面试题

TCP 三次握手

第一次握手:客户端向服务端发送SYN包。报文中标志位SYN=1,序列号seq=x(x为随机整数)。此时客户端进入了 SYN_SEND 同步已发送状态。

第二次握手:服务端回复客户端SYN+ACK包。报文中标志位SYN=1,标志位ACK=1,序列号seq=y(y为随机整数),确认号ack=x+1(x为客户端发送过来的序列号seq)。此时服务端进去SYN_RECV状态。

第三次握手:客户端回复服务端ACK包。确认报文的标志位ACK=1,确认号ack=y+1(y为第二次握手时服务端生成的序列号seq),序列号seq=x+1(x为第一手握手时客户端生成的序列号seq)。此时客户端和服务器进入ESTABLISHED状态,客户端与服务端成功建立了TCP连接。

TCP 四次挥手

第一次挥手:客户端数据传输完成后或准备终止发送数据时,会向服务端发送FIN包。报文中标志位FIN=1,序列号seq=u。此时客户端进入FIN_WAIT_1状态。

第二次挥手:服务端回复客户端ACK包。确认报文中标志位ACK=1,确认号ack=u+1,序列号seq=v。此时服务端进入close_wait关闭等待状态,客户端接受到ack应答包后,进入FIN_WAIT_2状态。

第三次挥手:等服务端数据发送完毕后会向客户端发送FIN包。报文中标志位FIN=1,标志位ACK=1,确认号ack=u+1,序列号seq=w。此时服务端进入LAST_ACK状态。

第四次挥手:客户端回复服务端ACK包。确认报文中的标志位ACK=1,确认号ack=w+1,序列号seq=u+1。此时客户端进入TIME_WAIT阶段。服务端收到确认报文后会立马释放TCP连接,而客户端发出报文后经过最长报文段寿命的2倍时长后释放TCP连接。

标志位、序列号、确认号

如果对标志位、序列号、确认号等不理解的,可以参考下面这篇博文,图片是引用此博文的。

计算机网络 之 TCP协议报文结构

相关文章:

  • 【leetcode100-035】【链表/哈希链表】LRU缓存
  • 如何提升演讲能力
  • .net core 6 集成和使用 mongodb
  • UML-顺序图
  • openGauss学习笔记-197 openGauss 数据库运维-常见故障定位案例-分析查询语句是否被阻塞
  • Sublime Text4 crack时替换的汇编指令
  • 时间戳的大小写的坑
  • 深入理解 Flink(五)Flink Standalone 集群启动源码剖析
  • 逻辑回归(解决分类问题)
  • 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿
  • 通过开源端点可见性改善网络安全响应
  • 【React 常用的 TS 类型】持续更新
  • 树莓派4B-Python-使用PCA9685控制舵机云台+跟随人脸转动
  • QT笔记 - 添加项目到版本控制系统 - Git
  • mysql原理--redo日志2
  • 【Leetcode】104. 二叉树的最大深度
  • ES6语法详解(一)
  • Java程序员幽默爆笑锦集
  • JS专题之继承
  • Redis 懒删除(lazy free)简史
  • Spark RDD学习: aggregate函数
  • Transformer-XL: Unleashing the Potential of Attention Models
  • WePY 在小程序性能调优上做出的探究
  • 关于Flux,Vuex,Redux的思考
  • 聊聊sentinel的DegradeSlot
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我建了一个叫Hello World的项目
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • MyCAT水平分库
  • mysql面试题分组并合并列
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • # 透过事物看本质的能力怎么培养?
  • #pragma once与条件编译
  • #每日一题合集#牛客JZ23-JZ33
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)(1.13) SiK无线电高级配置(六)
  • (2022 CVPR) Unbiased Teacher v2
  • (a /b)*c的值
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)windows配置JDK环境
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (九)c52学习之旅-定时器
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (循环依赖问题)学习spring的第九天
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ./configure、make、make install 命令
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil