TCP/IP包结构的重要性不言而喻,玩网络的都会用到tcpdump抓到的数据,但数据显示的是十六进制的。我们通常都会用Wireshark分析tcpdump抓到的数据包,但直接用自己的肉眼就能分析就更好了。看看一份tcpdump抓到的十六进制数据。

TCP/IP包结构_tcp/ip

ip包结构:

TCP/IP包结构_网络编程_02

由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包结构:

TCP/IP包结构_网络编程_03

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