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

TCP的四次挥手与TCP状态转换

文章目录

    • 四次挥手场景
    • 步骤
    • TCP状态转换

四次挥手场景

TCP客户端与服务器断开连接的时候,在程序中使用close()函数,会使用TCP协议四次挥手。

客户端和服务端都可以主动发起。

因TCP连接时候是双向的,所以断开的时候也是双向的。

步骤

在这里插入图片描述
三次挥手可以吗?可以是可以,和状态有关。
四次挥手是用于客户端和服务器断开连接的时候,可以由客户端或者服务器任一方主动发起断开请求。
第一次挥手主动方发起,如客户端发起断开连接请求,服务器同意请求但还有数据发送的时候,可以继续发送,当服务器想断开连接的时候进行第三次挥手,发送断开连接请求,然后客户端应答。

三次握手为什么是三次不是四次?
三次握手由客户端主动发起,客户端请求连接的时候,服务器若不同意直接拒绝,若同意说明肯定也要请求和客户端建立连接,所以同意和请求连接一起传输,进行第二次握手,然后客户端同意服务器请求进行第三次握手。

在这里插入图片描述

TCP状态转换

在这里插入图片描述
在这里插入图片描述
等2MSL目的是确保另一方收到同意断开请求,被动方发送FIN后没有收到ACK会重传FIN,直到收到ACK。

在这里插入图片描述

握手与挥手/状态ClientServer
LISTEN
第一次握手SYN_SENT–>LISTEN->SYN_RCVD
第二次握手SYN_SENT->ESTABLISHED<–SYN_RCVD
第三次握手ESTABLISHED–>SYN_RCVD->ESTABLISHED
数据传输
第一次挥手->FIN_WAIT_1–>CLOSE_WAIT
第二次挥手FIN_WAIT_1->FIN_WAIT_2<–CLOSE_WAIT
第三次挥手TIME_WAIT<–CLOSE_WAIT->LAST_ACK
第四次挥手TIME_WAIT–>LAST_ACK

注意:

  • 连接三次握手主动发起方需要是客户端。
  • 断开连接请求的四次挥手主动发起方可以是客户端或者服务器的任一方。
http://www.lryc.cn/news/115270.html

相关文章:

  • 【网络编程】实现一个简单多线程版本TCP服务器(附源码)
  • centos离线部署docker
  • ffmpeg使用滤镜对视频进行处理播放
  • Ansible Handlers模块详解,深入理解Ansible Handlers 自动化中的关键组件
  • threejs点击模型实现模型边缘高亮的选中效果--更改后提高帧率
  • RocketMQ 主备自动切换模式部署
  • 【MySQL】select相关
  • 在Python中应用RSA算法实现图像加密:基于Jupyter环境的详细步骤和示例代码
  • Prometheus Blackbox Exporter 的 HTTP 探测指标中各个阶段的时间统计信息
  • 数据结构之时间复杂度-空间复杂度
  • 新一代构建工具 maven-mvnd
  • 构建Docker容器监控系统(2)(Cadvisor +Prometheus+Grafana)
  • Leetcode.995 K 连续位的最小翻转次数
  • PHP8的跳转语句-PHP8知识详解
  • Idea中maven无法下载源码
  • 【linux-keepalive】keepalive避免单点故障,高可用配置
  • 测试网络模型的FLOPs和params
  • 《树莓派项目实战》第十五节 使用L298N驱动板模块驱动双极42步进电机
  • 基于短信宝API零代码实现短信自动化业务
  • Qt应用开发(基础篇)——信号槽 Signals and Slots
  • 正则表达式--Notepad++常用的替换
  • ES6 对象合并
  • 使用线性回归预测票房收入 -- 机器学习项目基础篇(10)
  • 一文读懂|RDMA原理
  • 深入理解负载均衡原理及算法
  • 44.实现爱尔兰B公式计算并输出表格(matlab程序)
  • 【Linux】-- 进程间通信
  • [PyTorch][chapter 48][LSTM -3]
  • xss csrf 攻击
  • 如何使用win10专业版系统自带远程桌面公司内网电脑,从而实现居家办公?