您当前的位置: 首页 > 

恐龙弟旺仔

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

TCP重置报文段的几种场景

恐龙弟旺仔 发布时间:2022-06-03 20:57:38 ,浏览量:0

前言:

TCP的重置报文段,就是TCP发送了RST包到对端。

RST标志位在什么地方呢?我们通过TCP协议头部来看下(图片来自: TCP头部详解_却道天凉_好个秋的博客-CSDN博客_tcp头部)

很明显,RST与我们熟悉的SYN、ACK和FIN标志位同属一个级别。

但是日常工作中,我们对RST的使用不是很熟悉,本文就来介绍下哪些会产生RST的场景。

1.RST标志位场景 1.1 针对不存在的端口的连接请求

这个场景很容易理解,如果我们telnet一个并不存在的端口,那么会被快速响应一个RST复位报文段

1.2 异常中止一个连接

常规的中止连接的方式都是发送FIN标志位,这被称为有序释放。(因为FIN是在所有排队数据都已经发送后才被发送出去的,所以这种情况不会出现数据丢失)。

但是如果对端发送了一个RST标志位,那么这种被称为异常释放。(这种情况下,在排队的数据有可能会丢失,RST标志位会被立即发送出去)。

1.3 半开连接

如果在未告知另一端的情况下,关闭或终止连接,那么认为该TCP连接处于半开状态。

如:A连接B,B服务器突然断电重启,那么此时对于A而言,它所在的连接就是一个半开连接(假定没有探活机制的情况下,A并不知道B已经宕机了)。

此时A再通过该TCP连接向服务端发送信息,由于B刚重启完,进程内没有任何该连接的情况,则此时会直接回复一个RST报文,终端连接。

2.Connection reset异常

这个异常应该是日常比较常见的异常。

导致该异常的原因是:服务器端由于某种原因关闭了连接,而客户端依然在读写,此时服务器收到请求后,就会直接恢复RST,客户端就会收到java.net.SocketException: Connection reset

3.Connection reset by peer异常

该异常与2中异常相似,一般都是服务端由于某种原因关闭了连接。但是区别在于:

* 服务器返回RST后,如果此时客户端正在从socket输出流中读数据则会提示:Connection reset;

* 服务器返回RST后,如果此时客户端正在从socket输入流中写数据则会提示:Connection reset by peer;

扩展:

【TCP/IP详解】TCP重置报文段及RST常见场景分析_五虎山主的博客-CSDN博客_tcp重置包 带有C代码实战的重置报文段场景

异常记录——Connection reset_慕课手记 https请求出现connection reset的处理方案

 

关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0384s