下面是给出的一段IP数据包头所包含的数据,OO 00 30 52 52 40 00 80 06 2C 23CO A8 01 01 D8 03 E2 15,请根据IPv4头部格式回答如下问题: (1)该IP包的发送主机和接收主机的地址分别是什么?

admin2014-12-08  32

问题 下面是给出的一段IP数据包头所包含的数据,OO 00 30 52 52 40 00 80 06 2C 23CO A8 01 01 D8 03 E2 15,请根据IPv4头部格式回答如下问题:
    (1)该IP包的发送主机和接收主机的地址分别是什么?
    (2)该IP包的总长度是多少?头部长度是多少?
    (3)该IP分组有分片吗?如果有分片它的分片偏移量是多少?
    (4)该IP包是由什么传输层协议发出的?

选项

答案(1)该IP包的发送主机和接收主机的地址分别是192.168.1.1和216.3.226.21。 (2)该IP包的总长度是48,头部长度是20。 (3)该IP分组没有分片。 (4)该IP包是由TCP协议发出的。

解析 本题考查IP数据报的格式,首先我们先列出IP头部的格式,然后按照这个格式来解析题目给出的头部数据。IPv4的头部格式如下图所示:

版本(4位):目前的协议版本号是4,因此IP有时也称作IPv4。
    首部长度(4位):首部长度指的是IP层头部占32 bit字的数目(也就是IP层头部包含多少个4字节一32位),包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。普通IP数据报(没有任何选择项)字段的值是5,也就是5×32/8=5×4=20个字节。
    服务类型字段(8位):服务类型(TOs)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1 bit未用位但必须置0。
    总长度字段(16位):整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节总长度字段是IP首部中必要的内容。
    标识字段(16位):唯一地标识主机发送的每一份数据报。通常每发送一份报文它的值就会加1。
    frag_off域的低13位中分段偏移(Fragment offset)域指明了该分段在当前数据报中的什么位置上。除了一个数据报的最后一个分段以外,其他所有的分段(分片)必须是8字节的倍数。这是8字节是基本分段单位。由于该域有13个位,所以,每个数据报最多有8192个分段。frag—off的高3位:(1)比特0是保留的,必须为0;(2)比特1是“更多分片”(MF-More Fragment)标志。除了最后一片外,其他每个组成数据报的片都要把该比特置1。(3)比特2是“不分片”(DF-Don’t Fragment)标志,如果将这一比特置1,IP将不对数据报进行分片。这时如果有需要进行分片的数据报到来,会丢弃此数据报并
发送一个ICMP差错报文给起始端。
    TTL(time—to—live):生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1。
    协议字段(8位):根据它可以识别是哪个协议向IP传送数据。当网络层组装完成一个完整的数据报之后,它需要知道该如何对它进行处理。协议(Protocol)域指明了该将它交给哪个传输进程。TCP是一种可能,但是UDP或者其他的协议也是可能的。
    首部检验和字段(16位):根据IP首部计算的检验和码。它不对首部后面的数据进行计算。后面就是32位源IP地址和32位目的IP地址。
    (1)根据以上的分析,可以得出源IP地址是第13,14,15,16字节,也就是C0 A8 0101,转换为十进制点分表示得到源IP地址为:192.168.1.1。目标IP地址是第17,18,19,20字节即D8 03 E2 15,转换为十进制点分表示得到目标IP地址为:216.3.226.21。
    (2)IP包的总长度域是IP头部的第3,4字节,即00 30。转换为十进制得到该IP包的长度是48。而头部长度为IHL域,是第一字节的后4个位表示,根据题目的数据IHL值是5,再将IHL的值乘以4,即得到头部的长度为20。
    (3)是否分片的标识在IP包头的第7字节的第7位表示,那么该分组的第7字节为40,对应第7位是‘1’,即DF位置为‘1’表示没有分片。
    (4)协议域是第10字节,值为06,用于表示传输层的协议,根据RFC标准,数值6表示的是TCP协议。
转载请注明原文地址:https://kaotiyun.com/show/tOxi777K
0

最新回复(0)