tcp、udp、ip、icmp报文格式分析

 TCP 、UDP 、IP、 ICMP协议报文格式分析

 

Tcp报文格式:

 

Wireshark抓包如图:

 

 

源端口/目的端口(16bit)

在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的端口标识了接收方进程。由上图可以看出在此报文中我们的源端口号是54160, 目的端口是cichlid(1377)。

 

序列号(32bit):

Sequence Number这个是发送序列号,用来标识从源端向目的端发送的数据字节流,它表示在这个报文端中的第一个数据字节的顺序号,序列号是32位的无符号类型,序列号表达达到2^32 - 1后又从0开始, 当建立一个新的连接时,SYN标志为1,系列号将由主机随机选择一个顺序号ISN(Initial Sequence Number)。此报文中的序列号是0x37e3d3a9如下图:

 

 

确认号(32bit) 

Acknowledgment Number它包涵了发送确认一端所期望收到的下一个顺序号。因此确认序列号应当是上次成功接收到数据的顺序号加1。只有ACK标志为1时确认序号字段才有效。TCP为应用层提供全双工服务,这意味着数据能在两个方向上独立的进行传输,因此连接的两断必须要保证每个方向上的传输数据顺序。由图可以看出此报文的确认号为0xaa09ab7b。

 

 

偏移(4bit):

这里的偏移实际指的是TCP首部的长度,它用来表明TCP首部中32bit字的数目,通过它可以知道一个TCP包它的用户数据从哪里开始,这个字段占4bit,若此字段的值为1000,则说明TCP首部的长度是8 * 4 = 32字节,所以TCP首部的最大长度是该字段的值为1111 = 15, 15 * 4 =60字节。此报文我们的偏移量在0x50中,又因它占4bit,0x50等于二进制的0101 0000 所以我们的偏移量是 0101=5,所以我们的TCP报文首部长度为5* 4 = 20字节。

 

 

标志(Flags)

 

RevervedNonceCWREcn-Echo(6bit)目前没有使用,它们的值都为0,作为保留,留待以后开发新技术时使用。

URG(Urgent Pointer Field Significant):紧急指针标志,用来保证TCP连接不被中断,并且督促中间设备尽快处理这些数据

ACK(Acknowledgement Field Signigicant):确认号字段,该字段为1时表示应答字段有效,即TCP应答号将包含在TCP报文中。

PSH(Push Function): 推送功能,所谓推送功能指的是接收端在接收到数据后立即推送给应用程序,而不是在缓冲区中排队。

RST(Reset the connection):重置连接,不过一般表示断开一个连接,

SYN(Synchronize sequence numbers):同步序列号,用来发起一个连接请求。

FIN(No more data from sender):表示发送端发送任务已经完成(即断开连接)。

 

窗口大小(16bit)

表示现在运行对方发送的数据量。也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,由下图可以看出该窗口允许发送65536的数据量。

 

 

校验和(16bit)

包含TCP首部和TCP数据段,这是一个强制性的字段,一定是由发送端计算和存储,由接收端进行验证。

 

 

UDP报文格式:

 

网络抓包如图:

由图可知源端口号(Source port为64668,目的端口号(Destination port为10019,用户数据报长度(Length为136bit,校验和(checksum)为0x8e67=36455,另外存在128bytes的数据(Data

 

IP报文格式:

 

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信