以下报文为TCP建立和终止的报文示例
完整格式如下:
报文序号 报文产生时间(与上次报文的时间间隔) 源地址.端口号 > 目的地址 : 标识 分组序号:确认序号(报文段中字节数) 窗口大小 接收的最大报文长度复制代码
默认情况下tcpdump输出只显示SYN报文段的完整序号,其它位置显示偏移量
常用参数解析
-X :用16进制显示具体内容
-n:显示IP,不转换域名
-s 0:尽可能多的展示内容
-vvv: 展示详细内容
-i eth1:监听eth1网络
tcp :监听协议类型
dst port 8500:8500端口接收的数据
-A:acsii显示内容复制代码
抓取当前机器上的post请求 sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>>2):4] = 0x504f5354'
比如我想获取post请求的原始IP可以用 sudo tcpdump -i eth1 -A -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>>2):4] = 0x504f5354' | grep 'X-Forwarded-For'
抓取当前机器上的get请求 sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>>2):4] = 0x47455420'
上面用到的tcp中括号相关内容是指tcp过滤,字节范围表达: proto [ expr : size ] photo表示协议 expr 表示与指定协议开头相关的字节偏移量;如只查看fin包 tcpdump -i <interface> “tcp[tcpflags] & (tcp-fin) !=0”
把书读薄(TCP/IP详解 卷一 第十七章)