TCP/IP包结构的重要性不言而喻,玩网络的都会用到tcpdump抓到的数据,但数据显示的是十六进制的。我们通常都会用Wireshark分析tcpdump抓到的数据包,但直接用自己的肉眼就能分析就更好了。看看一份tcpdump抓到的十六进制数据。
ip包结构:
由IP包结构一次解读上述数据,其中每一个数字表示4个位:
4:表示版本,占4个位,即ipv4
5:表示IP包头长,共占4个位,它表示数据包头包含多少个32位长整型,也就是包含多少个4字节数据。为5,则5*4=20字节
00:表示服务类型,占8个位
00 3c:表示包裹总长,共占16个位。3c转换为十进制是60
f2 47:表示重组标识,占16个位,f247转换为十进制是62023。发送主机赋予的标识,以便接收方进行分片重组
4:表示标志,占3个位,4的二进制前3个位010,即2
40 00:表示段偏移量,占13个位,去掉前3位010,则后面都是0
40:表示生存时间,占8个位,每经过一个路由器,该值就减一,到零丢弃。转为十六进制64
06:协议代码,占8个位,6=TCP,1=ICMP,UDP=17
4a 72:表示头效验和,占16个位
7f 00 00 01:表示原始地址,即127.0.0.1
7f 00 00 01:表示目的地址,即127.0.0.1
接下来是TCP包结构:
a7 6e:表示原始端口,十进制为42862
22 b8:目的端口,十进制为8888
8d a7 4e 5f:数据序号
00 00 00 00:确认序号
a:表偏移,即距离数据包头有多少个32位,为10,4*10=40(头长)
保留是0;U,A,P,R,S,F中的哪个位是1,就表示哪种比特
ff d7:表示滑动窗口
41 60:包效验和
00 00:紧急指针
上面每个数字都分析出来了,方便大家学习。
学习地址:https://www.2cto.com/net/201209/157029.html