常见网络协议

最近用tcpdump抓包时,经常需要用到tcp、ip等网络协议,在此记录下,备忘;
在网络上找了下,发现roclinux.cn网站有这些协议的格式图片,很清晰,在此引用下;

Ethernet协议

常见网络协议_第1张图片
Ethernet

IP协议

常见网络协议_第2张图片
IP

TCP协议

常见网络协议_第3张图片
TCP

UDP协议

UDP

常见tcpdump表达式

  1. 获取发往192.168.0.1服务器的GET请求:
tcpdump -i en4 -X -nn '((host 192.168.0.1) and (tcp[(tcp[12]>>2):4]=0x47455420))'
tcpdump -i en4 -X -nn '((host 192.168.0.1) and (tcp[(tcp[12]>>4)<<2:4]=0x47455420))'

按照tcp协议,第12个字节的前4位存储偏移量,也即头部的长度,另外偏移量的单位为4byte,因此(tcp[12]>>4)<<2表示数据部分的开始位置,简写为tcp[12]>>2;

  1. 获取与192.168.0.1的GET请求和相应:
tcpdump -XvvennSs 0 -i en4 'tcp[(tcp[12])>>2:2]=0x4745 or tcp[(tcp[12])>>2:2]=0x4854'

0x4745为GE,0x4854为HT,熟悉HTTP协议的应该知道,这是HTTP请求和响应头部的开始字符

  1. 获取与192.168.0.1三次握手的SYN请求:
tcpdump -nn -i en4 -X 'tcp[tcpflags]=tcp-syn and host 192.168.0.1' 
  1. 获取端口大于1024的TCP请求
tcpdump -i en4 -X -nn 'tcp[0:2]>1024'

按照tcp协议,前两个字节存储源端口,因此可以用表达式tcp[0:2]表示;

你可能感兴趣的:(常见网络协议)