IP协议的报文格式分析
1)分析IP 数据报头的格式,完成表9;
表9 IP 协议报文分析
字段报文信息说明
版本
头长
服务类型
总长度
标识
标志
片偏移
生存周期
协议
校验和
源地址
目的地址
其中主要字段的意义和功能如下:
* 版本:指IP 协议的版本;
* 头长:是指IP 数据报的报头长度,它以4 字节为单位。IP 报头长度至少为20 字节,
如果选项部分不是4 字节的整数倍时,由填充补齐;
* 总长度:为整个IP 数据报的长度;
* 服务类型:规定对数据报的处理方式;
* 标识:是IP 协议赋予数据报的标志,用于目的主机确定数据分片属于哪个报文;
* 标志:为三个比特,其中只有低两位有效,这两位分别表示该数据报文能否分段和是否该分段是否为源报文的最后一个分段;
* 生存周期:为数据报在网络中的生存时间,报文每经过一个路由器时,其值减1,当生存周期变为0 时,丢弃该报文;从而防止网络中出现循环路由;
* 协议:指IP 数据部分是由哪一种协议发送的;
* 校验和:只对IP 报头的头部进行校验,保证头部的完整性;
* 源IP 地址和目的IP 地址:分别指发送和接收数据报的主机的IP 地址。
IP文件头的详细内容(如图13所示),
图13 IP文件头信息
包括:
Version(版本):版本序号为4,代表IPv4。
Header length:Internet文件头长度,为20个字节。
Type of service(服务类型值):该值为00,我们会看到ToS下面一直到总长度部分都是0。这里可以提供服务质量(QoS)信息;每个二进制数位的意义都不同,这取决于最初的设定。例如,正常延迟设定为0,说明没有设定为低延迟,如果是低延迟,设定值应该为1。
Total length(总长度):显示该数据的总长度,为Internet文件头和数据的长度之和。
Identification:该数值是文件头的标识符部分,当数据包被划分成几段传送时,接收数据的主机可以用这个数值来重新组装数据。
Flag(标记):数据包的“标记”功能,例如,数据包分段用0标记,未分段用1标记。
Fragment offset(分段差距):分段差距为0个字节。可以设定0代表最后一段,或者设定1代表更多区段,这里该值为0。分段差距用来说明某个区段属于数据包的哪个部分。
Time to live(保存时间):表示TTL值的大小,说明一个数据包可以保存多久。
Protocol(协议):显示协议值,在Sniffer Pro中代表传输层协议。文件头的协议部分只说明要使用的下一个上层协议是什么,这里为UDP。
Header checksum(校验和):这里显示了校验和(只在这个头文件中使用)的值,并且已经做了标记,表明这个数值是正确的。
Source address(源地址):显示了数据的来源地址。
Destination address(目的地址):显示了数据访问的目的地址。
IP文件头下面为TCP或者UDP文件头,这里为UDP协议(如图14所示)。
UDP协议分析
IP文件头下面为TCP或者UDP文件头,这里为UDP协议(如图14所示)。
图14 UDP文件头信息
UDP协议头包括下列信息:
Source port(源端口):显示了所使用的UDP协议的源端口。
Destination port(目的端口):显示了UDP协议的目的端口。
Length(长度):表示IP文件头的长度。
Checksum(校验和):显示了UDP协议的校验和。
Bytes of data:表示有多少字节的数据。
根据协议的不同,在详细资料窗口中有的还会显示ARP、HTTP、WINS等信息。通过这些信息,可以发现正在解析的协议中更多内容。
选择第一个UDP 报文,分析其结构,填写表14。
表14 UDP 报文分析
3)UDP 报文与TCP 报文有何不同?体会UDP 协议和TCP 协议的区别。
TCP 协议分析
1.TCP 协议介绍
TCP 是传输控制协议(Transmission Control Protocal)的缩写,提供面向连接的可靠的传输服务。在TCP/IP 体系中,HTTP、FTP、SMTP 等协议都是使用TCP 传输方式的。
(1)TCP 报文格式
图28 TCP 报文段格式
TCP 报文分为首部和数据两个部分。如图28 所示,TCP 报文段首部的前20 字节是固定的,后面有4 ×n 字节是可选项。其中:
* 源端口和目的端口:各2 字节,用于区分源端和目的端的多个应用程序;
* 序号:4 字节,指本报文段所发送的数据的第一字节的序号;
* 确认序号:4 字节,是期望下次接收的数据的第一字节的编号,表示该编号以前的数据
已安全接收。
* 数据偏移:4 位,指数据开始部分距报文段开始的距离,即报文段首部的长度,以32bit 为单位。
* 标志字段:共有六个标志位:
①紧急位URG=1 时,表明该报文要尽快传送,紧急指针启用;
②确认位ACK=1 时,表头的确认号才有效;ACK=0,是连接请求报文;
③急迫位 PSH=1 时,表示请求接收端的TCP 将本报文段立即传送到其应用层,而不
是等到整个缓存都填满后才向上传递;