网络问题排障专题-数据分析

目录

一、各协议数据包介绍

1、Ping、DNS数据包介绍(单包一来一回)

Ping

DNS

2、TCP数据包

在正常情况下,TCP连接确实是从三次握手开始的。三次握手是建立TCP连接的过程,它的目的是确保双方都能够正常通信。

为啥要四次挥手呢?

常见数据包介绍:

常见TCP头部字段介绍:

Telnet

TCP数据包:

3、HTTP、HTTPS数据包

有两种类型的消息:

常见的请求方法——增删改查:

常见的响应状态码:

SSL协商过程主要包括以下步骤:

二、tcpdump命令详解

1、tcpdump命令常用参数

2、AF“特殊”场景抓包汇总:

(1)、在透明或虚拟网线部署时,如遇数据包携带vlan头部(注:any口无法抓取带vlan头部的数据):

(2)、抓取聚合接口数据时:

(3)、抓取拨号口数据时:

三、wireshark使用详解

1、数据包常见字段及wireshark常用技巧

2、wireshark常见过滤条件

(1)、快捷过滤:无需在过滤器中手动输入条件,可以选择and/or selected。

(2)、快速过滤同一tcp、http数据流

(3)、统计会话情况,包含同一五元组数据包个数、字节总大小等信息,常用于查看抓取的数据包,流量占用情况。

使用wireshark可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。下面列举一些常用显示过滤语法规则:

(1)、二层数据包过滤:

(2)、三层数据包过滤:

(3)、四层数据包过滤:

(4)、包长度过滤:

(5)、逻辑运算符 and、or、not

3、常见报错报文

(1)、【TCP Previous segment not captured】——丢包

(2)、【TCP 0ut-of-0rder】——乱序

(3)、【TCP DUP ACK】——期望ACK(告诉发起方我想要什么包!!!)

(4)、【TCP Retransmission】——超时重传

4、实战运用

(1)、客户反馈做了目的地址转换后测试不通,如何抓包分析?

(2)、客户反馈做了目的地址转换后,对应端口能通,但是业务无法访问,如何抓包分?

(3)、客户反馈内网电脑访问部分网站,经过AF后打不开?

(4)、客户反馈客户端访问服务器的一个HTTP业务打开的不全,打开慢,有些模块看不到?


一、各协议数据包介绍

1、Ping、DNS数据包介绍(单包一来一回)

Ping

ping 命令用于测试与目标主机之间的连接。它向目标主机发送一个ICMP请求,并等待它的回应。如果目标主机正常工作并且连接畅通,则会收到一个回显响应。如果没有收到响应,则说明有问题,需要进一步排除故障。

ping命令常用场景:测试连通性、测试时延、测试稳定性(是否丢包)、确认访问客户端源ip。

ping命令用法:

windows:ping XX.XX.XX.XX -t -l 500 (-t 长ping -l指定数据包长)

linux:ping XX.XX.XX.XX -s 500 (linux默认长ping -s指定数据包长)

正常没有人发固定长度的ping,这样很容易知道自己的源地址是多少。

DNS

DNS是Domain Name System的简称,即域名系统,是一个记录域名和IP地址相互映射的系统,主要作用是为了解决域名与IP之间的相互转换。DNS是一个网络服务,其端口为53号端口。

命令常用场景:某网站无法访问、ping的通外网,但网页打不开、僵尸网络触发测试

域名解析命令:nslookup baidu.com XX.XX.XX.XX(nslookup 域名 指定dns服务器)

查询ID:应答的ID和查询ID一致的话,可以根据这个ID去判断是不是回你请求的百度,而不是别人去请求百度。

2、TCP数据包

在正常情况下,TCP连接确实是从三次握手开始的。三次握手是建立TCP连接的过程,它的目的是确保双方都能够正常通信。

为啥要四次挥手呢?

(1)、因为TCP连接是双工传输,单次挥手只是会是本端不发包了,但是本端还能收包。

(2)、ack会比fin快,fin需要处理完数据才会触发,所以fin与ack不会在一起。

常见数据包介绍:

三次握手数据包:【SYN】【SYN ACK】【ACK】

复位数据包(俗称拒绝包):【RST】

四次挥手数据包:【FIN】【FIN ACK】

常见TCP头部字段介绍:

SEQ:序列号字段用于标识TCP报文段中数据部分的起始位置。它表示发送方发送的字节流中的第一个字节的序号。 确认同一方向数据流,客户端给服务器发的数据包里,SEQ要是连续的(第二个SEQ等于第一个SEQ加上传一个包的len)

ACK:确认号字段用于确认接收方期望接收的下一个字节的序号。它表示接收方期望从发送方接收的下一个字节的序号。

LEN:长度字段表示TCP报文段中数据部分的长度。

(1)、ack = 对方发来数据包seq + 数据长度len(如果是三次握手的话,是ack=seq+1)

(2)、seq = 对方发来数据包的ack  = 自己发出的上一个包的seq+len

Telnet

telnet命令常用场景:测试端口映射是否有效、测试业务端口连通性。

telnet命令: telnet XX.XX.XX.XX 443(telnet 目标端口)

TCP数据包:

以上数据包中,包含了 三次握手:SYN、SYNACK、ACK、FINACK、RST

序列号信息: 190给99的发包,第一个包的seq:2718458284    1en=0    那么下一个包的seq=2718458284+199给190的发包,第一个包的seq:3432837339    1en=0    ack=2718458285那么可以知道,下一个包的seq=3432837339+1 以及下一个收到190给99的发包的seq=2718458285

3、HTTP、HTTPS数据包

HTTP工作在 TCP协议上,是一个基于TCP/IP 通信协议来传递数据(HTML 文件、图片文件、查询结果等)HTTPS 经由 HTTP进行通信,但利用SSL/TLS来加密数据包,HTTPS开发的主要目的,是提供对网站服务器的身份认证保护交换资料的隐私与完整性。

HTTP报文,又称为HTTP消息,是服务器和客户端之间交换数据的方式。

有两种类型的消息:

(1)、请求:由客户端发送用来触发一个服务器上的动作。

(2)、响应:来自服务器的应答。

常见的请求方法——增删改查:

PUT:上传文件,向服务器添加数据,可以看作增。

DELETE:删除文件。

POST:传输数据,向服务器提交数据,对服务器数据进行更新。

GET:获取资源,查询服务器资源。

常见的响应状态码:

2xx:请求正常处理完毕。

3xx:需要进行附加操作以完成请求,比如重定向请求新的URL。

4xx:服务器无法处理请求。

5xx:服务器处理请求出错。

SSL协商过程主要包括以下步骤:

(1)、客户端发送一个HTTPS请求给服务器,请求建立安全连接。

(2)、服务器收到请求后,会返回一个包含公钥证书的响应给客户端。该证书包含了服务器的公钥和其他相关信息。

(3)、客户端收到服务器的证书后,会验证证书的合法性和有效性。这包括检查证书的签名是否有效、证书是否过期、证书是否与请求的域名匹配等。

(4)、客户端生成一个随机的对称密钥,称为“Pre-MasterSecret”,并使用服务器的公钥进行加密。客户端将加密后的"Pre-Master Secret"发送给服务器。

(5)、服务器使用自己的私钥解密客户端发送的"Pre-Master Secret",得到对称密钥。客户端和服务器使用这个对称密钥来加密和解密后续的通信数据

二、tcpdump命令详解

1、tcpdump命令常用参数

tcpdump是linux系统下强大的数据包分析工具,可用来抓取相关数据,或分析相关数据包:

(1)、tcpdump命令格式:

tcpdump+参数+表达式    tcpdump    -i    eth1    host     1.1.1.1 and port 80 -nne

(2)、tcpdump常用参数:

-i:指定监听的网络接口。

-e:在输出行打印出数据链路层的头部信息。

一般是看哪个接口发出去,或者是二层看MAC地址

-c:截取指定数目的数据包。

-n:不把网络地址转换成名字。

-nn:不把端口和网络地址转换成名称。

-s:截取指定大小的数据包,s0表示完整数据包。

-w:将抓包内容保存到指定到文件,并不打印出来。

-v:输出一个稍微详细的信息,如在ip包中包括tt1和服务类型的信息。

-vv:输出详细的报文信息。

tcpdump利用表达式作为报文的过滤条件,表达式有如下三种类型关键字和逻辑运算符组成:

(1)、表示类型的关键字:host、net、port等。

(3)、表示协议的关键字:arp、icmp、udp等。

(4)、逻辑运算符:and、or、not。

2、AF“特殊”场景抓包汇总:

(1)、在透明或虚拟网线部署时,如遇数据包携带vlan头部(注:any口无法抓取带vlan头部的数据):

tcpdump -i eth1 vlan and host 1.1.1.1 -nn -c 100

(2)、抓取聚合接口数据时:

老架构:tcpdump -i bond1 host 1.1.1.1 -nn -c 100(聚合接口是几口就抓bond几,比如aggr.1)

新架构:tcpdump -i aggr.1 host 1.1.1.1 -nn -c 100

(3)、抓取拨号口数据时:

tcpdump -i eth1 pppoes and host 1.1.1.1 -nn -c 100

AF8048,想抓取在聚合2口上的目的ip符合192.168.1.1,以及除去22345端口以外的所有数据?

tcpdump -i bond2 dst host 192.168.1.1 and not port 22345 -nn -c 100

三、wireshark使用详解

1、数据包常见字段及wireshark常用技巧

ip.id 是用于唯一标识IP数据包的字段注意:数据包的三层转发,一般都不会去修改数据包的ip.id,但如果是数据被分片、经过了DN代理(一般单纯nat不会更改ip.id),那么有可能ip.id会发生变化,且同一方向数据流,ipid一般按顺序+1,如过滤同一方向数据流ipid不连续,则可能存在丢包。

使用场景:一般用于对比两个接口数据包是否一致均被正常转发。

注:如果是AF拦截并代理回复了RST,则ipid固定为:0x7051、0x7052、0x5826(用于7.X版本AF以及AC)

2、wireshark常见过滤条件

(1)、快捷过滤:无需在过滤器中手动输入条件,可以选择and/or selected。

(2)、快速过滤同一tcp、http数据流

(3)、统计会话情况,包含同一五元组数据包个数、字节总大小等信息,常用于查看抓取的数据包,流量占用情况。

使用wireshark可以很方便地对截获的数据包进行分析,包括该数据包的源地址、目的地址、所属协议等。下面列举一些常用显示过滤语法规则:

(1)、二层数据包过滤:

(2)、三层数据包过滤:

(3)、四层数据包过滤:

(4)、包长度过滤:

(5)、逻辑运算符 and、or、not

3、常见报错报文

(1)、【TCP Previous segment not captured】——丢包

在TCP同一方向传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的SeqtLen(三次握手和四次挥手是例外)。如果Wireshark发现后一个包的Seq号大于前一个包的Seq+Len,就知道中间缺失了一段数据。假如:缺失的那段数据在整个网络包中都找不到(即排除了乱序),就会提示 【TCP Previous segment not captured】。比如在图中,6号包的Seq号1449大于5号包的Seq+Len=1+0=1,说明中间有个携带1448字节的包没被抓到,它就是“Seq=1,Len=1448”

丢的包在wireshark中是这样类型:

(2)、【TCP 0ut-of-0rder】——乱序

在TCP同一方向传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq+Len。也可以说,后一个包的Seq会大于或等于前一个包的Seq。当wireshark发现后一个包的Seq号小于前一个包的Seq+Len时,就会认为是乱序了,因此提示【TCP 0ut-of-0rder】。如图中所示,3362号包的Seq=2685642小于3360号包的Seq=2712622,所以就是乱序。

大量的丢包和乱序会导致网页卡慢(虽然丢包和乱序会触发重传,但是量大了也会有影响)

(3)、【TCP DUP ACK】——期望ACK(告诉发起方我想要什么包!!!)

当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。它每收到一个这种包就会Ack一次期望的seq值,以此方式来提醒发送方,于是就产生了一些重复的Ack。Wireshark会在这种重复的Ack上标记【TCP Dup ACK】。

以下图为例,服务器收到的7号包为“Seq=29303,Len=1460”,所以它期望下一个包应该是Seq Len=29303+1460=30763,没想到实际收到的却是8号包Seq=32223,说明Seq=30763那个包可能丢失了。因此服务器立即在9号包发了Ack=30763,表示“我要的是Seq=30763“。由于接下来服务器收到的10号、12号、14号也都是大于Seq=30763的,因此它每收到一个就回复一次Ack=30763,从图中可见wireshark在这些回复上都标记了【TCP Dup ACK】。

(4)、【TCP Retransmission】——超时重传

如果一个包真的丢了,又没有后续包可以在接收方触发【Dup Ack】,就不会快速重传。这种情况下发送方只好等到超时了再重传,此类重传包就会被Wireshark标上【TCP Retransmission】。以下图为例,客户端发了原始包(包号1053)之后,一直等不到相应的Ack,于是只能在100多毫秒之后重传了(包号1225)。

4、实战运用

(1)、客户反馈做了目的地址转换后测试不通,如何抓包分析?

思路:抓包看数据有没有到防火墙,到了防火墙有没有正常匹配NAT出去,分别从出接口和入接口抓取数据,确认是否存在转换,判断不通的原因。

有SYN的,没有【S.】也就是SYN ACK的包。

(2)、客户反馈做了目的地址转换后,对应端口能通,但是业务无法访问,如何抓包分?

背景:客户做了一个目的地址转换,将目的113.26.248.201的8088端口转换为服务器172.22.160.164的80端口,但配置后发现能telnet通,但是访问web页面时,无法访问到。

外网口包:看IPID,有没有AC

数据包三次握手正常交互,所以客户te1net才通,而到http的get请求时,被AC(rst的ipid=0x5826)拦截导致无法访问:而怎么判断非AF发送的RST数据包,如果非AF拦截,而是AF未监听端口也会回复rst,所以可以从数据包源目来确认发送源,如果AF转发请求,但收到了目的ip的rst,那么一般就不是AF发送的,AF拦截的话,会以AF为源,向客户端与服务器都发送rst。

如果是防火墙的rst,它会同时向服务器和客户端都发送rst,并且会以对端的身份像本端发(比如客户端发给服务器的,冒充服务器发客户端,如果是服务器发客户端,那就冒充客户度发服务器)

(3)、客户反馈内网电脑访问部分网站,经过AF后打不开?

背景:进一步了解到,客户测试发现,如果使用AF做DNS代理的话,就无法访问网站,但如果改为用公网dns服务器的话,则访问正常,且测试发现解析的结果也不一致。

内网口抓包结果:这个解析防火墙给回了,并且可以得到正确的IP

网口抓包结果:内网口证明防火墙有回,还得证明防火墙代理正常,这个时候就看DNS的53端口,之前到防火墙解析的是A记录,但是防火墙给回的4A记录,那就是防火墙没有解析出,读的是缓存,解决方法就是防火墙研发在后台调整不读缓存。

内网口可以抓到对应域名的解析结果,但是在外网口未抓到此A记录的解析;说明AF直接读取了DNS缓存,而此缓存ip,PC无法访问。

(4)、客户反馈客户端访问服务器的一个HTTP业务打开的不全,打开慢,有些模块看不到?

背景:客户端源ip:10.206.19.100,目的服务器ip:10.60.137.34。

客户端抓包:

有丢包

综上可得,在服务器给客户端回包的过程中部分数据包丢失,导致业务访问异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/754061.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云常用的操作

阿里云常见的产品和服务 容器服务 可以查看容器日志、监控容器cpu和内存, 日志服务 SLS 可以查看所有服务的日志, Web应用防火墙 WAF 可以查看 QPS. 阿里云查看集群: 点击 “产品和服务” 中的 容器服务,可以查看 集群列表&…

树莓派Pico

树莓派Pico是树莓派基金会推出的一款基于RP2040微控制器的微型计算机板,它是专为需要高性能微控制器的应用场景设计的,特别适合于需要实时控制、低功耗和小型化解决方案的项目。以下是树莓派Pico的详细介绍: ### 核心特点: - **基…

一看就会的Jmeter分布式压测实战技巧详解

一、什么是jmeter分布式压测? jmeter分布式压测:指将需要模拟的大量并发用户数分发到多台压力机,使jmeter拥有更大的负载量,满足真实业务场景(高并发场景)。可以理解为通过一个Jmeter控制台来远程控制多个…

云计算:重塑数字时代的基石

目录 一、引言 二、云计算的定义与特点 三、云计算的发展历程 四、云计算的应用场景 五、云计算面临的挑战 六、云计算的未来发展趋势 七、结语 一、引言 随着信息技术的飞速发展,云计算已经逐渐渗透到我们生活的方方面面。从个人用户的在线存储、在线办公&…

从零开始:Spring Boot 中使用 Drools 规则引擎的完整指南

规则引擎作用 规则引擎主要用于将业务逻辑从应用程序代码中分离出来,提高系统的灵活性和可维护性。规则引擎通过预定义的规则来处理输入数据并做出相应的决策,从而实现业务逻辑的自动化和动态调整。 例如 门店信息校验:美团点评在门店信息…

遥感数据并行运算(satellite remote sensing data parallell processing)

文章内容仅用于自己知识学习和分享,如有侵权,还请联系并删除 :) 之前不太会用,单纯想记录一下,后面或许还会用到 1. 教程 [1] Pleasingly Parallel Programming: link 1.1 处理器,核和线程 …

使用容器部署redis_设置配置文件映射到本地_设置存储数据映射到本地_并开发java应用_连接redis---分布式云原生部署架构搭建011

可以看到java应用的部署过程,首先我们要准备一个java应用,并且我们,用docker,安装一个redis 首先我们去start.spring.io 去生成一个简单的web项目,然后用idea打开 选择以后下载 放在这里,然后我们去安装redis 在公共仓库中找到redis . 可以看到它里面介绍说把数据放到了/dat…

Ansys Zemax|在设计抬头显示器(HUD)时需要使用哪些工具?

附件下载 联系工作人员获取附件 汽车抬头显示器或汽车平视显示器,也被称为HUD,是在汽车中显示数据的透明显示器,不需要用户低头就能看到他们需要的重要资讯。这个名字的由来是由于该技术能够让飞行员在头部“向上”并向前看的情况下查看信息…

第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)

大家好,我是网创有方,上节我们实践了通过Bean方式声明Bean配置。咱们这节通过Component和ComponentScan方式实现一个同样功能。这节实现的效果是从IOC中加载Bean对象,并且将Bean的属性打印到控制台。 第一步:创建pojo实体类studen…

人工智能AI风口已开:如何赋予UI设计与视频剪辑新生命

随着科技的浪潮不断向前推进,人工智能(AI)正以惊人的速度重塑着我们的世界,特别是在创意产业的核心领域——UI设计与视频剪辑中,AI正逐步成为驱动行业创新与变革的关键力量。在这个AI技术全面开花的新时代,…

搭建企业内网pypi镜像库,让python在内网也能像互联网一样安装pip库

目录 知识点实验1.服务器安装python2.新建一个目录/mirror/pip,用于存储pypi文件,作为仓库目录3.下载python中的所需包放至仓库文件夹/mirror/pip3.1. 新建requirement.py脚本(将清华pypi镜像库文件列表粘贴到requirement.txt文件中&#xff…

Hadoop版本演变、分布式集群搭建

Hadoop版本演变历史 Hadoop发行版非常的多,有华为发行版、Intel发行版、Cloudera Hadoop(CDH)、Hortonworks Hadoop(HDP),这些发行版都是基于Apache Hadoop衍生出来的。 目前Hadoop经历了三个大的版本。 hadoop1.x:HDFSMapReduce hadoop2.x…

mtu 1500 qdisc noop state DOWN group default qlen 1000问题的解决

问题描述 1、打开虚拟机终端,root身份启动ens网卡(一般情况下还是会直接报错 ifup ens33 2、停止网卡设置disable再启动 systemctl stop NetworkManager 不报错即可 systemctl disable NetworkManagerservice network restart出现了绿色的OK啦&#…

流水线作业模拟程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 流水线作业模拟 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int Count 0;private bool IsStop false;private void uiLight1_Click(object sender, EventArgs e…

某麦网自动刷新抢票脚本——手机端(高级版)

某麦网自动刷新抢票脚本——电脑端 小白操作-抵制黄牛–需要更好用更高级关注获取 如何用Python自动抢大麦网演出票? 在数字化时代,购票已经成为我们生活的一部分,无论是音乐会、话剧、体育赛事还是各种展览,抢票几乎成了一项“…

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为:在写某些代码的时候,仓库中有些文件夹,只提交了文件夹名称到…

C# SocketUDP服务器,组播

SocketUDP 自己即是服务器又是客户端 ,在发消息只需要改成对方ip和端口号即可 前提对方必须开启服务器 socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.72"), 8080)); 控件:Button,TextBox,RichTextBox 打开自己服务器 public…

六、资产安全—信息分级资产管理与隐私保护(CISSP)

目录 1.信息分级 2.信息分级方法 3.责任的层级 4.资产管理 5.隐私数据管理角色 6.数据安全控制 7.数据保护方案 8.使用安全基线 六、资产安全—数据管理(CISSP): 五、身份与访问管理—身份管理和访问控制管理(CISSP): 1.信息分级 信息分级举列: 2.信息分级方…

Halcon 文本文件操作,形态学

一文件的读写 *******************************************************向文本文件写入字符串内容*************************************************************read_image (Image, fabrik)threshold (Image, Region, 0, 120)area_center (Region, Area, Row, Column)open_…

记录一下MATLAB优化器出现的问题和解决

今天MATLAB优化器出了点问题。我想了想,决定解决一下,不然后面项目没有办法进行下去。 我忘了截图了。 具体来说,是出现了下面的问题。 Gurobi: Cplex: 在上次为了强化学习调整了Pytoch环境以后(不知道是不是这个原因&#…