找回密码
 注册
查看: 2418|回复: 0

tcpdump 抓包分析说明,异常数据分析、常见RST介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-6-11 20:57:45 | 显示全部楼层 |阅读模式
一般地,只是单个的一个SYN,它表示的只是建立连接。当出现SYN和ACK可能同时为1,我们认为客户端与服务器建立了一个连接。而当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。
1 g, i4 I; M. J! t- n) c4 E
3 Y# R2 n% c/ @2 Q0 ~+ [, ~Wireshark 抓包步骤
+ O2 X* a$ N' l9 f/ l/ i! ]: U( g8 D首先根据域名获取对应的ip,终端输入 ping 域名
+ O* }% n" l! V; s2 Z  I2 T: r; t; L$ C1 N) L
小技巧 也可通过telnet查看端口是否开启telnet ip 端口6 Y! x: m$ x- L" b& R
% `6 ]9 S% l& L0 n$ o: `( P
打开Wireshark,首页选择要抓取的通道(Wi-Fi,网卡等),然后设置过滤规则,点击右上角箭头配置过滤规则,或者点击某一条右键选中( Y4 {5 g9 M( h7 S+ O
Apply as Filter,, T$ z$ b% O( ^. I0 o1 N3 Q" E, h( [
ip.src==103.219.186.235 or ip.dst==103.219.186.2358 `+ g) x$ ~/ ~& Q# n
8 n& g9 q% b) i7 y. u9 e

- G' X" {- s. X1 h" ^TCP三次握手
* T1 i$ {: m8 {: D$ B% Y/ C. X
$ Y# m! d3 H  ?' E+ H* O: M" u% ~% f3 g8 r) Y! j
第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;
1 _* t6 M' S/ p4 g6 Q' {$ z& O" w3 T4 d+ ~3 F
第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;4 Y4 I( |+ V$ @% ]2 `5 g/ ]" G
( u% D5 J7 h4 G
第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。" R! E0 y/ c2 q* W4 R5 v1 t$ o
3 F2 N' m, I1 @  I' ]6 m& @
: B( @' B" j. o/ W: K) N) Q& `. T) A

, y3 g0 U2 P0 }/ v" [3 z1. 客户端发送 SYN 报文 到服务器
4 l- q+ r; X6 R7 M. B: b
% ?  b0 Y! M1 z. ~3 z. U+ F9 _
4 x. X3 A" I# l) n2. 服务器接收到后 回复 SYN + ACK 报文
2 X! I; N: f1 t( y. ]) g7 ~+ H: ^0 |  w4 |0 _5 f- }

6 ^; t- N) a4 w3.客户端接收到服务端的 SYN+ACK 报文后,回复 ACK报文
1 ^5 C- l3 f; i2 q
. [. ]  X& y5 ^% }/ ?, l9 M9 ^+ W注意:理论上,Syn 应该初始值是个随机数的,后面的要根据初始值增加 ,wireshark为了好区分从0开始的,可以自行设置显示原始Syn
/ l8 K' u2 O+ I: ]5 K0 p; _& N9 b. N7 X. [, a5 H
TCP 四次挥手,简略分析: ?$ I! _( X$ t$ s

  r4 R+ E9 c% F' e. l  b4 z
6 G6 [: p6 |$ C; l: L& D" `# p(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
- |, y# w) J4 P8 Q% p(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。& Z% n: k% N. b2 Q4 u
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。4 \# u8 u. W, R6 d( z0 V
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。* S+ X+ J% y  [. ?! V5 V
! E+ Z6 K; W" {6 r' ^6 c0 D$ D  O; E
抓包异常数据解读
" l% y/ z; k" }9 F( J2 Y( u5 f6 a% H1.[TCP Previous segment not captured]丢包
1 d. A+ s; @- H+ ]4 C在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq + Len(三次握手和四次挥手是例
5 X. a" m5 O' h/ Q' m( Y外)当后Seq>前Seq +Len,就知道中间缺失了一段数据。
6 t. Y" J2 T( v/ p, n3 g! U- \* |2 s- s; E' O
0 H- B( v) `5 b$ ?) g( ?+ t
[TCP Out-of-Order] 乱序, q; d& z3 i; B8 {9 s
Wireshark在获取包序号26时发现seq=18981,而包序号25的数据包seq = 20441,所以wireshark认为数据包顺序错了+ K8 }$ x% |; w7 \3 a' H" F

( |  K6 o* r. \2.[TCP Dup ACK x#y]
3 {& B. j  n; ^; ~当乱序或者丢包发生时,接收方会收到一些Seq号比期望值大的包。此时就会Ack就说我想获取seq=28852的数据包而你给了我其他包。9 e9 C6 ^+ a7 H* n. w8 b" g  y1 j1 Y6 J

/ B# L! l# M, G! [- s- r$ }0 C7 Q4 e4 p% H; \! a
/ _9 j. L# F3 m' K6 X
3、[TCP Spurious Retransmission] 丢包重传, O8 j, m0 `& x* ?8 Z

0 X( t; S* C4 c% ?/ R1 o& _2 x
% g( l2 [" x- D$ O, r5 y# Y5 D9 g" g4、[TCP Fast Retransmission] 快速重传
7 m* D, J' E3 p9 [9 q- {当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)。6 ^% s& ?2 P# C, n7 n4 q5 i, r
/ Y* D/ w: a, E# d+ l! u  j: u$ m4 V
3 o, q% t7 b& A5 C3 Q3 l
. G9 S, L! F/ j
5、[TCP Retransmission] 超时重传
) J) Z( \" ]! k, I! ^如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传,只能超时重传。
: v7 n9 k  p. l) e
2 X0 G6 \1 |* b. v2 g6 y9 v' r: u: F- w+ W: _3 h7 l! }

& O+ A1 P2 `' a; h3 z' w! T6、几种TCP连接中出现RST的情况0 v; g6 d! N! Y* J0 \! }
1.端口未打开
2 R  A3 I$ v3 V# z$ c; K服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去telnet一个未打开的TCP的端口可能会出现这种错误。0 N$ P* u5 M! ^0 M! h( _
& q. b$ p' w" `$ E+ a' Z$ F
2. 请求超时( i% S  e% P' [0 g& g6 G
查看2次包的时间间隔% ^0 X$ ?/ C0 F

6 c6 K' O4 O$ k; d8 p3. 服务端关闭的socket5 R7 y3 `, b9 o6 O" ]0 ?( u

9 n8 \  d6 v: m9 {4. 防护墙拒绝了请求
/ L( A% _8 r+ x0 m- ?) M# b2 `; U* G, ?: s/ u5 j) L( K- |) P
5. 移动链路, ]+ r! N0 @4 g( \! C

7 z1 C2 ]7 a" q' r$ ?      移动网络下,国内是有5分钟后就回收信令,也就是IM产品,如果心跳>5分钟后服务器再给客户端发消息,就会收到rst。也要查移动网络下IM 保持<5min 心跳。
& D% h$ W; u. p# h  E0 o( i5 S
; j$ I7 ]! N' E6. 负载等设备
, ?" s1 ?2 ]& l; j      负载设备需要维护连接转发策略,长时间无流量,连接也会被清除,而且很多都不告诉两层机器,新的包过来时才通告rst。1 X6 H8 K& `  p: y# n

$ ]5 D- E1 y3 e8 K) B0 e8 PApple push 服务也有这个问题,而且是不可预期的偶发性连接被rst;rst 前第一个消息write 是成功的,而第二条写才会告诉你连接被重置
3 X) @/ ]; ~) i' N! ^9 v
( D" p3 C6 e" W) p2 o! B7 E7. 超过超时重传次数、网络暂时不可达$ v8 m" S9 g' w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:47 , Processed in 0.017138 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表