1.RST介绍

RST表示reset复位,用于异常情况下关闭连接。

  • 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包。

  • 而接收端收到RST包后,也不必发送ACK包来确认。

2. 什么时候发送RST包

  • 建立连接的SYN到达某端口,但是该端口上没有正在 监听的服务。

  • TCP收到了一个根本不存在的连接上的分节。

  • 请求超时。使用setsockopt的SO_RCVTIMEO选项设置recv的超时时间。接收数据超时时,会发送RST包。

3.测试RST场景

测试场景

  • client 读数据
  • erver端发数据
  • 如果client异常退出
  • server继续向client发送数据,就会收到RST。

具体示例可参考:TCP连接异常:broken pipe 和EOF

另外,需要注意的是,以下几种方法,都不能发送RST包:

  • 使用shutdown、close关闭套接字,发送的是FIN,不是RST。

  • 套接字关闭前,对运行的程序Ctrl+C,会发送FIN,不是RST。

  • 套接字关闭前,执行return、exit(0)、exit(1),会发送FIN、不是RST。

参考

https://blog.csdn.net/guowenyan001/article/details/11766929

TCP 选项RST的更多相关文章

  1. tcp选项TCP_DEFER_ACCEPT

    tcp选项TCP_DEFER_ACCEPT http://blog.chinaunix.net/uid-23207633-id-274317.html 之前在项目测试的时候,如果第三次握手发完裸ack ...

  2. TCP协议RST:RST介绍、什么时候发送RST包

    TCP协议RST:RST介绍.什么时候发送RST包 RST标示复位.用来异常的关闭连接. 1. 发送RST包关闭连接时,不必等缓冲区的包都发出去,直接就丢弃缓冲区中的包,发送RST. 2. 而接收端收 ...

  3. TCP连接建立系列 — TCP选项解析

    本文主要分析:在收到客户端的SYN包时,服务器端是如何解析它所携带的TCP选项,并结合本端情况决定是否予以支持. 内核版本:3.6 Author:zhangskd @ csdn blog 概述 收到客 ...

  4. unp第七章补充之socket tcp 产生 rst响应的情况

    socket tcp 产生 rst响应的情况(属于硬错误) 1.     syn发送到服务器主机,但是目的端口并未运行.则产生一个ECONRFUSED错误.客户端立即返回.比如telnet 192.1 ...

  5. tcp 出现rst情况整理

    正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下: 1. GFW 2. 对方端口未打开,发生在连接建立 如果对方sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会 ...

  6. TCP选项之SO_LINGER

    SO_LINGER这个选项在我以前带队改造haproxy的时候引出过一个reset(RST)客户端连接的bug. SO_LINGER作用设置函数close()关闭TCP连接时的行为.缺省close() ...

  7. TCP之RST报文段

    TCP 首部中的 RST 比特是用于 "复位" 的.一般来说,无论何时一个报文段发往基准的连接(referenced connection)出现错误,TCP 都会发出一个复位报文段 ...

  8. 常用的TCP选项

    MSS选项:通知最大可接收量.发送SYN的TCP一端使用本选项通告对端它的最大分节大小(maximum segment size)即MSS,也就是它在本连接的每个TCP分节中愿意接受的最大数据量.发送 ...

  9. TCP 之 RST 原因分析

    5. 往一个对端已经关闭的套接字上写入数据会收到一个RST信号 1.发送端的 发送缓冲区还有数据,但接收端tcp的接收通道已关闭 2. SYN到达某端口但此端口上没有正在监听的服务器.对于UDP,当一 ...

随机推荐

  1. 第十五周翻译-《Pro SQL Server Internals, 2nd edition》

    <Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 55-58页 第三章 统计 SQL Se ...

  2. 北大poj- 1034

    The dog task Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3272   Accepted: 1313   Sp ...

  3. 浏览器兼容性汇总--CSS篇

    目录 CSS篇 1.       cursor:hand   VS   cursor:pointer 2.        innerText在IE中能正常工作,但在FireFox中却不行 3.     ...

  4. Firefox下载附件乱码的解决办法

    通过在http的header里设置fileName下载附件时,中文文件名通过chrome浏览器下载时正常,通过firefox下载时为乱码: 原来的Java代码: response.addHeader( ...

  5. windows 10安装docker一直挂起在Installing Components and Removing Files

    碰到这个问题百度了好久都没有找到解决方式,什么用管理员方式运行,给文件夹权限啊,都不好使. 后面在bing上面搜docker install compoents关键字找到一条结果,如下如 点进链接,内 ...

  6. php中生成透明背景png缩略图程序

    /** *$sourePic:原图路径 * $smallFileName:小图名称 * $width:小图宽 * $heigh:小图高 */function pngthumb($sourePic,$s ...

  7. Java的类型强制转换

    不说基本类型,没什么意思. 小括号的类型转换,在引用上,表示我坚定的确信,该未知类型一定是我转的类型,或者是我转的类型的子类. 这个转换逻辑和基本类型是不一致的.它不会进行任何具体的操作,只是一种标识 ...

  8. Linux下Redis4.0.12安装、配置、优化

    一.安装 1.检查gcc环境 执行命令,如果Linux系统没有安装gcc编译器,会提示“Command not found” # gcc -v 安装gcc # yum -y install gcc 以 ...

  9. 2018-计算机系机试-A

    #include<stdio.h> #include<cstdio> #include<cmath> #include<cstring> #includ ...

  10. osgi Quick Start

    今天有空看了下osgi,根据官网的说明来快速搭建一个服务,把步骤记下来. (官网地址:https://enroute.osgi.org/tutorial/020-tutorial_qs.html) 一 ...