TCP标志位 FIN和RST的区别

2023-10-27

大家都知道TCP释放连接需要四次挥手, 主动释放端会发送FIN包,并且因为TCP是双工的, 关闭一个方向上的数据流,从而TCP连接处于半关闭状态,这也是为什么需要“四次”挥手的原因。

以上所述四次挥手是一种**“有序释放”**, 即,标志位为FIN的TCP报文会在之前所有排队的数据发送完之后,才会发送,在socket缓冲区和窗口中的数据也能保证发送成功。

通常我们调用shutdown(), close()函数后, TCP会发送FIN报文。

这里提一下shutdown 和 close 的区别。 shutdown是关闭一个socket, 可以关闭读、写、读写; close是关闭一个linux系统的文件描述符fd。

除了“有序释放”, 还有一种**“终止释放”**,比如进程异常退出, 是通过RST标志位实现的。 标志位为RST的TCP报文, 会立即发送, 而之前所有排队的数据被丢弃。

FIN报文需要应答ACK, RST报文不需要应答ACK;

TCP的半开连接:如果发生断点,或网络条件很差,一端发送RST后,会立马关闭连接,而另一端感知不到,仍然认为连接正常,这是一种半开连接的状态。

相关:RST攻击

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

TCP标志位 FIN和RST的区别 的相关文章

随机推荐

  • STM32常见错误error: #268: declaration may not appear after executable statement in block

    此错误中文意思 声明不能在可执行语句后出现 表示有变量在函数后面声明 应该改为在函数开头声明变量 因为keil 默认编译标准是C89 解决方法
  • Java项目:网上电商项目(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取 博客首页 资源 里下载 一 项目简述 本系统功能包括 一款基于Springboot Vue的电商项目 前后端分离项目 前台后台都有 前台商品展示购买 购物车分类 订 单查询等等 后台商品管理 订单管理 信息维护 用户管理等等 本期
  • 【第十四届蓝桥杯三月真题刷题训练——第 11 天(3.14)& 卡片 & 路径 & 字符统计 & 费用报销】

    第一题 卡片 问题描述 小蓝有很多数字卡片 每张卡片上都是数字0到9 小蓝准备用这些卡片来拼一些数 他想从1开始拼出正整数 每拼一个 就保存起来 卡片就不能用来拼其它数了 小蓝想知道自己能从1拼到多少 例如 当小蓝有30张卡片 其中0到9各
  • 解决Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open ...

    安装TensorFlow2 0 GPU版本后 检测是否支持GPU时tf test is gpu available 出现以下信息 2019 11 19 02 52 53 934654 W tensorflow stream executor
  • Maven下载jar是关联源码

    好多用 Maven 的时候会遇到这样一个棘手的问题 就是添加依赖后由于没有下载并关联源码 导致自动提示无法出现正确的方法名 而且不安装反编译器的情况下不能进入方法内部看具体实现 其实 eclipse 的 Maven 插件就提供了这个功能 但
  • pycharm运行不报错,用cmd运行code报错

    1 pycharm运行不报错 用cmd运行code报错 可以参考 Pycharm里面都能运行 为什么在CMD中就不能运行 解决方法 将要执行的模块或者 py文件加入环境变量中 import sys sys path append 需要导入的
  • day08-JS组成和基本结构(补充)/网页引入JS的三种方式/JavaScript核心语法

    0目录 1 JS组成和基本结构 补充 2 网页引入JS三种方式 3 JavaScript核心语法 1 JS组成和基本结构 补充 1 5 JavaScript执行原理 第一步 用户端发送请求到服务器端 第二步 将JS解析出来的数据 用户身份标
  • asp.net core ABP模板本地化设置

    ABP的语言本地化设置非常方便 甚至地区图标ABP框架都已经有了 先看看结果吧 英文的界面 中文的界面 配置流程如下 首先在Localization目录下新建一个对应的json文件 里面存放对应变量的本地化字符串 命名规则就是 应用名 本地
  • ThreadLocal 原理 总结

    1 首先看了 Java并发编程 深入剖析ThreadLocal 这篇文章 这篇文章首先用用一个数据库连接的例子 如多个线程同时进行连接和关闭数据库操作 有可能会导致某个线程刚打开的数据库连接操作 被另一个线程打开的数据库关闭操作给关闭了 然
  • Hyperledger Fabric区块链浏览器搭建

    最近在用Hyperledger Fabric平台做一个项目 要使用区块链浏览器 以下是我的基础环境的情况以及搭建过程 版本 Ubuntu 22 04 1 LTS 运行内存 8 0 GiB 处理器 Intel Core i7 8700 CPU
  • “对象创建”模式——构建器

    动机 在软件系统中 有时候面临着 一个复杂对象 的创建工作 其通常由各个部分的子对象用一定的算法构成 由于需求的变化 这个复杂对象的各个部分经常面临着剧烈的变化 但是将它们组合在一起的算法却相对稳定 如何应对这种变化 如何提供一种 封装机制
  • SqlServer的for xml path函数

    这两天在处理一个字符串拼接遇到一个问题 老师姓名 学科 张老师 语文 张老师 数学 张老师 英语 李老师 体育 李老师 音乐 需要将上面的记录转换成 老师姓名 学科 张老师 语文 数学 英语 李老师 体育 音乐 想了一些办法来处理 都感觉不
  • zabbix 之脚本实现企业微信报警及报警升级

    文章目录 一 微信报警 一 对被检测主机创建指定监控项和触发器 二 注册企业微信 三 zabbix服务段配置 四 web监控界面媒介告警配置 五 验证 二 报警升级 一 微信报警 目的 被监控主机test01的mysql服务不可用时立即发送
  • kaggle操作入门

    pip install kaggle kaggle gt Account gt API gt Create New API Token 下载得到 kaggle json 文件 Linux 存放到 home xxx kaggle 中 xxx表
  • 【软考】-高项-范围管理-重要知识点思维导图

    范围管理 文章目录 范围管理 产品范围 项目范围 范围蔓延 镀金 范围潜变 范围蔓延 范围管理计划 含义 包含内容 需求管理内容 需求管理计划 含义 包含内容 作用 可指导 收集需求 工具与技术 访谈 麦肯锡方法 含义 分类 结构化 非结构
  • C++中运算重载和定时器函数的实现

    一 概念 1 在operate函数内实现你想实现的具体的运算操作 这样一来不单单只可以对普通的数进行加减操作 可以对类进行加减操作 在operate函数内实现的加减的具体实现过程就可以 2 运算符重载 就是对已有的运算符重新进行定义 赋予其
  • shell脚本系列:10、快速上手bash脚本:简单有效的shell脚本示例

    shell脚本系列 10 快速上手bash脚本 简单有效的shell脚本示例 文章目录 shell脚本系列 10 快速上手bash脚本 简单有效的shell脚本示例 前言 1 hello world 2 使用echo打印 3 使用注释 4
  • python利用matplotlib进行可视化

    利用matplotlib进行可视化 1 Matplotlib 基本介绍 Matplotlib 是一个在 python 下实现的类 matlab 的纯 python 的第三方库 旨在用 python实现matlab 的功能 是python下最
  • Flutter Json对象和数组解析成实体类

    1 解析json对象 准备一个json 对象数据 String json res true age 12 Name 张三 使用JSON to Dart 工具自动生成实体类 也可以自己手动写 工具地址 JSON to Dart 将代码复制到类
  • TCP标志位 FIN和RST的区别

    大家都知道TCP释放连接需要四次挥手 主动释放端会发送FIN包 并且因为TCP是双工的 关闭一个方向上的数据流 从而TCP连接处于半关闭状态 这也是为什么需要 四次 挥手的原因 以上所述四次挥手是一种 有序释放 即 标志位为FIN的TCP报