用到的Tcpdump

开发中,要定位具体问题,特别是网络问题的时候,多数是要晋出tcpdump,遗憾的是我略懂皮毛,有必要深入一些。
简单说下我常用的 TcpDump的方法

1
tcpdump -i eth0 -Xxn port 80 -s 0 -c 1024 

如果仅仅是看manual 多数时候还是会忘记,好记性不如烂笔头,上述的选项是我认为很有用的

1
2
3
4
-i 指定网卡
-Xxn X使用Ascii和16进制,n 表示 ip 用数字表示
-s 0 表示整包抓取
-c 1024 表示包得大小

如果希望将抓包过程中保留下来,可以在上述命令尾部加上 -w trace.cap
这种格式的文件,文本编辑器是无法理解,需要特殊的软件才能回复,比如 wireshark

Tcpdump 中的 flag 有必要提下:

  • PSH 代表要求发送立即发送缓冲区内的其他对应数据包,无需缓冲区满才发送
  • RST 如果RST=1表示连接马上结束,无需等待终止确认手续,发送端已经断线
  • SYNC 表示主动连接到对方,建立连接
  • FIN 表示传送结束,发送方等待对方响应

通过 wireshark 可以再现所谓的三次握手和四次挥手过程。