前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一些常用的后台定位问题工具介绍

一些常用的后台定位问题工具介绍

原创
作者头像
用户2177834
发布2019-02-21 21:42:27
1.1K0
发布2019-02-21 21:42:27
举报

1 strace

2 tcpdump

3 netstat

4 ifconfig

5 iptraf

6 iftop

7 sar

8 wireshark

一 strace: trace system calls and signals

strace -p 28182 -s4086 -T -f [-e trace=network/process/signal]

二 tcpdump: dump traffic on a network

用TCPDUMP捕获的TCP包的一般输出信息是:

src > dst: flags data-seqno ack window urgent options length

src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项. Length是长度

UDP包的输出信息

route.port1 > ice.port2: udp lenth

从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth。

常见的参数

-i指定需要抓包的网卡

-nnn 禁用tcpdump展示时把IP、端口等转换为域名、端口对应的知名服务名称

-s指定抓包的包大小。使用-s 0指定数据包大小为262144字节

-c指定抓包的数量

-w参数指定抓包文件保存到文件

-X 不包括数据链路层的报文,并且以ASCⅡ的编码方式(tcpdump会以16进制和ASCII的形式显示)

-A 以ASCⅡ编码打印除了链路层报文头外的报文内容

-d 将匹配信息包的代码以人们能够理解的汇编格式给出

-dd 将匹配信息包的代码以c语言程序段的格式给出

-ddd 将匹配信息包的代码以十进制的形式给出

tcpdump tcp -i eth1 -t -s 0 -c 100 -X and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

tcpdump -iany -s0 port 80 -A

[实例排查:测试高防IP的联通新]

- 我们有外网机器A: 49.51.39.154

- 让用户在服务端抓包:tcpdump -iany -s0 src host 49.51.39.154 -A

- 我们在机器A执行:telnet xxx.gsadds.com xxx

- 客户机器如果能够显示我们的请求数据,说明联通ok:

  1. root@VM_127_231_centos ~]# tcpdump -iany -s0 src host 49.51.39.154 -A
  2. tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  3. listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
  4. 11:44:42.851203 IP 49.51.39.154.53440 > VM_127_231_centos.21150: Flags [P.], seq 2707990323:2707990332, ack 193352084, win 229, options [nop,nop,TS val 855746637 ecr 2046056509], length 9
  5. Eh.=.'@.8...13'.
  6. .....R..h.3..Q.....Y......
  7. 3..My.X=lippman
  8. ................

过滤器规则

host a.b.c.d 指定仅抓取本机和某主机a.b.c.d的数据通信

tcp port x:指定仅抓取TCP协议目的端口或者源端口为x的数据通信

icmp:指定仅抓取ICMP协议的数据通信。

!:反向匹配,例如port ! 22,抓取非22端口的数据通信。

可以使用and或者or进行组合

三 netstat

Netstat -apn

netstat -i

四 iptraf: Interactive Colorful IP LAN Monitor

五 iftop

六 7 sar Collect, report, or save system activity information

七 包数据分析 - wiresharp问题包提示信息

1.[Packet size limited during capture]

被标记的那个包没有抓全, 这种情况一般是由抓包方式引起的,如tcpdump 的-s指定长度过小

2.[TCP Previous segment not captured

在TCP传输过程中,同一台主机发出的数据段应该是连续的,即后一个包的Seq号等于前一个包的Seq+Len(三次握手和四次挥手是例外)。如果Wireshark发现后一个包的Seq号大于前一个包的Seq+Len,就知道中间缺失了一段数据。网络包没被抓到还分两种情况:一种是真的丢了;另一种是实际上没有丢,但被抓包工具漏掉了。在Wireshark中如何区分这两种情况呢?只要看对方回复的确认(Ack)就行了。如果该确认包含了没抓到的那个包,那就是抓包工具漏掉而已,否则就是真的丢了

3.[TCP ACKed unseen segment]

当Wireshark发现被Ack的那个包没被抓到,就会提示

4.[TCP Out-of-Order]

在TCP传输过程中(不包括三次握手和四次挥手),同一台主机发出的数据包应该是连续的,即后一个包的Seq号等于前一个包的Seq+Len。也可以说,后一个包的Seq会大于或等于前一个包的Seq。当Wireshark发现后一个包的Seq号小于前一个包的Seq+Len时,就会认为是乱序了,因此提示 [TCP Out-of-Order] 。小跨度的乱序影响不大,比如原本顺序为1、2、3、4、5号包被打乱成2、1、3、4、5就没事。但跨度大的乱序却可能触发快速重传,比如打乱成2、3、4、5、1时,就会触发足够多的Dup ACK,从而导致1号包的重传。

5.[TCP Dup ACK]

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

6.[TCP Fast Retransmission]

当发送方收到3个或以上[TCP Dup ACK],就意识到之前发的包可能丢了,于是快速重传它(这是RFC的规定)

7.[TCP Retransmission]

如果一个包真的丢了,又没有后续包可以在接收方触发[Dup Ack],就不会快速重传。这种情况下发送方只好等到超时了再重传,此类重传包就会被Wireshark标上[TCP Retransmission]。

  1. [TCP CHECKSUM INCORRECT] 一般是 tcp checksum offload问题引起, (让网卡硬件自己计算校验和,而不是交给操作系统的 tcp/ip 协议栈来计算)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 strace: trace system calls and signals
  • 二 tcpdump: dump traffic on a network
  • 三 netstat
  • 四 iptraf: Interactive Colorful IP LAN Monitor
  • 五 iftop
  • 六 7 sar Collect, report, or save system activity information
  • 七 包数据分析 - wiresharp问题包提示信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档