首页 > 其他分享 >TCP异常报文

TCP异常报文

时间:2023-02-10 15:14:49浏览次数:56  
标签:reset 重传 Seq 报文 TCP 发送 异常

TCP异常报文分析

乱序与丢包 1、[TCP Previous segment not captured] [TCP Previous segment not captured]报文指的是在TCP发送端传输过程中,该Seq前的报文缺失了。一般在网络拥塞的情况下,造成TCP报文乱序、丢包时,会出现该标志。 需要注意的是,[TCP Previous segment not captured]解析文字是wireshark添加的标记,并非TCP报文内容。

例子: 流媒体服务器39.135.135.81,端口80,发送序号Seq=147154的包,长度Len=1360,那么下一个数据包序号应该为Seq=147154+1360=148514,可以看到客户端请求的也是Ack=148514。而服务器下一个包序号为Seq=149874,中间的包丢失了。

在这里插入图片描述

2、[TCP Out-Of-Order] [TCP Out-Of-Order]指的是TCP发送端传输过程中报文乱序了。

例子: 继续上面的包分析,因为208142包序号为Seq=148514,而前一个序号为Seq=149874,故有此错误标志。 Seq=148514实际是208139包的响应,因为网络拥塞的情况下,TCP包不能按顺序到达,所以出现[TCP Previous segment not captured] 和 [TCP Out-Of-Order]标志。

3、[TCP dup ack XXX#X] [TCP dup ack XXX#X]表示第几次重新请求某一个包,#前XXX表示第几个包(不是Seq),#后的X表示第几次请求。丢包或者乱序的情况下,会出现该标志。

例子:下图表示客户端一直请求101261的包。

在这里插入图片描述

重传 1、[TCP Fast Retransmission] 快速重传,一般快速重传算法在收到三次冗余的Ack,即三次[TCP dup ack XXX#X]后,发送端进行快速重传。 为什么是三次呢?因为两次 duplicated ACK 肯定是乱序造成的,丢包肯定会造成三次 duplicated ACK。 参考https://www.jianshu.com/p/4f2e412b0570

例子: 205113的包Seq=11154,重复请求4次后,发送端快速重传。至于为什么是4次,可能因为Ack包也有丢失。

在这里插入图片描述

2、[TCP Retransmission] 超时重传,如果一个包的丢了,又没有后续包可以在接收方触发[Dup Ack],或者[Dup Ack]也丢失的情况下,TCP会触发超时重传机制。

TCP超时重传参考https://www.cnblogs.com/duan2/p/9180861.html

例子:

在这里插入图片描述

TCP Window 1、[TCP ZeroWindow] 作为接收方发出现的标志,表示接收缓冲区已经满了,此时发送方不能再发送数据,一般会做流控调整。接收窗口,也就是接收缓冲区win=xxx ,告诉对方接收窗口大小。

例子: 传输过程中,接收方TCP窗口满了,win=0,wireshark会打上[TCP ZeroWindow]标签。

在这里插入图片描述

2、[TCP window update] 当接收端接收窗口大小发生变化,可以接收数据了,则有该标志。

 

例子: 接收方消耗缓冲数据后,更新TCP窗口,,可以看到从win=0逐渐变大,这时wireshark会打上[TCP window update]标签。

3、[TCP window Full] 作为发送方的标识,当前发送包的大小已经超过了接收端窗口大小,wireshark会打上此标识,标识不能在发送。

例子:

在这里插入图片描述

RST TCP异常终止的常见情形

我们在实际的工作环境中,导致某一方发送reset报文的情形主要有以下几种:

1,客户端尝试与服务器未对外提供服务的端口建立TCP连接,服务器将会直接向客户端发送reset报文。

在这里插入图片描述

2,客户端和服务器的某一方在交互的过程中发生异常(如程序崩溃等),该方系统将向对端发送TCP reset报文,告之对方释放相关的TCP连接,如下图所示:

在这里插入图片描述

3,接收端收到TCP报文,但是发现该TCP的报文,并不在其已建立的TCP连接列表内,则其直接向对端发送reset报文,如下图所示:

在这里插入图片描述

4,在交互的双方中的某一方长期未收到来自对方的确认报文,则其在超出一定的重传次数或时间后,会主动向对端发送reset报文释放该TCP连接,如下图所示:

在这里插入图片描述

 

5,有些应用开发者在设计应用系统时,会利用reset报文快速释放已经完成数据交互的TCP连接,以提高业务交互的效率,如下图所示:

在这里插入图片描述

 

Reset报文的利用

1 安全设备利用reset报文阻断异常连接

安全设备(如防火墙、入侵检测系统等)在发现某些可疑的TCP连接时,会构造交互双方的reset报文发给对端,让对端释放该TCP连接。比如入侵检测检测到黑客攻击的TCP连接,其构造成被攻击端给黑客主机发送reset报文,让黑客主机释放攻击连接。

 

原文链接:https://blog.csdn.net/myvest/article/details/102639281

标签:reset,重传,Seq,报文,TCP,发送,异常
From: https://www.cnblogs.com/together-/p/17108954.html

相关文章

  • react 捕获异常并处理
     //@ts-nocheckimportReactfrom'react'classErrorBoundaryextendsReact.Component{constructor(props){super(props);this.state={error:......
  • RPC异常重试机制详解
    1异常重试的意义发起一次RPC调用,调用远程的一个服务,如用户的登录操作,先对用户的用户名以及密码进行验证,验证成功后,获取用户基本信息。通过远程的用户服务获取用户基本信息......
  • SpringBoot Response统一返回封装,全局异常处理
    背景经常写代码,很多公司的Restful都是code,msg,data这种封装{"code":0,"msg":null,"data":null}后端代码:@GetMapping("hello")publicResultlist......
  • c#基于TCP/IP、CIP协议的欧姆龙PLC通信
    一、关于CIP协议CIP通信是CommonIndustrialProtocl(CIP)的简称,它是一个点到点的面向对象协议,能够实现工业器件(传感器,执行器)之间的连接,和高等级的控制器之间的连接。......
  • 39-异常处理机制
    抛出异常捕获异常异常处理五个关键字try、catch、finally、throw、throwspackagecom.exception;publicclassDemo01{publicstaticvoidmain(String[]args......
  • 40-自定义异常
    使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。在程序中使用自定义异常类,大体......
  • drf 断点调试,认证权限频率源码分析,基于APIView编写分页,异常处理
    昨日回顾#1认证的使用-有些接口需要登陆后才能访问-原生django如何使用的认证:auth的user表,auth自带了认证-自己登录,使用自定义的用户表-认证......
  • Telegram 更新后字体异常解决办法
    最近更新了Telegram后,界面字体又跟当初一样变为了宋体,看着十分难受:然后以前注入dll的办法也不好使了,找了一圈后发现可以通过修改注册表解决把以下代码存为后缀名.r......
  • java8 lambda 求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值
    java8lambda求list最大值、最小值、平均值、求和、中位数、属性排序(空指针异常,空值排前、排后)、去重importorg.junit.Test;importjava.text.SimpleDateFormat;im......
  • 深度复盘-重启 etcd 引发的异常
    作者信息:唐聪、王超凡,腾讯云原生产品中心技术专家,负责腾讯云大规模TKE集群和etcd控制面稳定性、性能和成本优化工作。王子勇,腾讯云专家级工程师,腾讯云计算产品技术......