分析:由题可知,捕获的数据如下图所示,用十六进制表示。例如10对应的二进制是0001 0000,8个bit(位),也就是1个byte(字节),因为1byte=8bit。同理,04对应的二进制是0000 0100,也是8个bit(位),即1个byte(字节)。以此类推。
由题可知,以太网的帧格式如下图所示。也就是说上面捕获的数据是从以太网的头部开始的。
一、图中注释说捕获的数据中没有preamble,也就是说数据是从Destination address开始的。
由于Destination address占6个Bytes(字节),则捕获的数据中,前6个Bytes(字节)表示Destination address,也就是10 04 41 8f b1 f8这6个Bytes(字节)表示Destination address。接着,Source address也是占6个Bytes(字节),则捕获的数据中,除了前6个Bytes(字节)后,接下来的6个Bytes(字节)表示Source address,也就是00 1a a8 7d e4 1e这6个Bytes(字节)表示Source address。再接着,Type(类型)占两个字节,除
了前12个Bytes(字节)外,接下来的2个Bytes(字节)表示Type(类型),也就是08 00这2个Bytes(字节)表示Type(类型)。
二、接下来到了以太网帧的Data(数据)部分。
Type(类型)如果是08 00,对应的以太网帧的Data(数据)部分放置的是IP包,如果是08 06,则对应的以太网帧的Data(数据)部分放置的是ARP包。由前面分析可知,Type(类型)对应的是08 00,所以以太网帧的Data(数据)部分放的是IP包。也就是上面捕获的数据中,除去前面14个Bytes(字节)外,接下来的是表示IP包的开始。剩下的数据如下所示。
IP包报文格式如下所示。
从IP包报文格式中可知,一行表示32个Bit。
Version占4个bits(位),由于捕获的数据是十六进制表示的,所以剩下的数据中开始的4个bits(位)表示Version,也就是4(对应的二进制为0100,占4个bits)表示Version,表示IPv4(而不是IPv6)。
接着,IHL占4个bits(位)(用来表示IP包的头部长度,单位:4个字节为一个单位)。数据中接下来的4个bits(位)表示IHL,也就是5(对应的二进制为0101,占4个bits)表示Version,表示IP包头部长度为5*4=20字节。
接着,Type of service占了6个bits(位),后面黑色区域占2个bits(位),两个一起占了8 bits(位)。则接下来的数据中的8 bits(位)表示它们俩,也就是00(对应的二进制为0000 0000,占8个bits)表示Type of service和后面2个bits(位)的黑色区域,前6个bits(0000 00)表示Type of service,后两个bits(00)表示黑色区域。
接着,Total length占16个bits(位)(也就是2个字节,表示IP包的总长),数据中接下来的16个bits(位)表示Total length,也就是02 31(对应二进制为0000 0010 0011 0001共16个bits(位))表示Total length,则IP包总长Total length为0231(十六进制)或561(十进制)。
接着,Identification占16个bits(位)(也就是2个字节),数据中接下来的16个bits (位)表示Identification,也就是63 23(对应二进制为0110 0011 0010 0011共16个bits (位))表示Identification。
接着,黑色区域占1个bits(位),DF占1个bits(位),MF占1个bits(位)(DF表示是否能分片,值为0可以分片,值为1不可以分片;MF表示后面还有没有分片,值为1表示还有分片,值为0表示后面没有分片)以及Fragment offset占13个bits(位),数据中接下来的16个bits(位)表示它们。也就是40 00(对应二进制为0100 0000 0000 0000共16个
bits(位))表示它们。对应二进制中开始的0表示黑色区域,1表示DF,0表示MF(DF值为1,表示不分片,MF值为1,表示后面没有分片,一起表示不分片,只有一个数据包发送),剩下的13个0表示Fragment offset。
接着,到了Time to live占8个bits(位),数据中接下来的8个bits(位)表示Time to live,也就是16(对应二进制为0001 0110共8个bits(位))表示Time to live。
接着,到了Protocol占8个bits(位),数据中接下来的8个bits(位)表示Protocol,也就是06(对应二进制为0000 0110共8个bits(位))表示Protocol。
接着,到了Header checksum占16个bits(位),数据中接下来的16个bits(位)表示Header checksum(IP包头部校验和),也就是a4 25(对应二进制为1010 0100 0010 0101共16个bits(位))表示Header checksum。
接着,到了Source address占32个bits(位),数据中接下来的32个bits(位)表示Source address,也就是da 12 67 26(对应的二进制为1011 1010 0001 0010 0110 0111 0010 0110共32个bits(位))表示Source address。
接着,到了Destination address占32个bits(位),数据中接下来的32个bits(位)表示Destination address,也就是ca c1 30 84(对应二进制为1100 1010 1100 0001 0011 0000 1000 0100共32个bits(位))表示Destination address。
三、前面分配完了IP包头部,接下来到了IP包的数据部分,剩下的数据如下所示。
前面分析IP包头部时有一个Protocol协议类型,Protocol里面的数据就用来表示IP包的数据部分放置的是TCP报文还是UDP报文,如果Protocol里面的数据是6,则表示TCP,如果Protocol里面的数据是17,则表示UDP。由前面分析可知,Protocol里面的数据是06,转为十进制就是6,所以IP包的数据部分放置的是TCP报文。TCP报文格式如下,一行用32个bits表示:
由图可知,Source port占16个bits(位),数据中接下来的16个bits(位)表示Source port,也就是1e 1d(对应二进制为0001 1110 0001 1101共16个bits(位))表示Source port。
接着,到了Destination port占16个bits(位),数据中接下来的16个bits(位)表示Destination port,也就是04 23(对应二进制为0000 0100 0010 0011共16个bits(位))表示Destination port。
接着,到了Sequence number占32个bits(位),数据中接下来的32个bits(位)表示Sequence number,也就是c7 6d dd e6(对应二进制为1100 0111 0110 1101 1101 1110 0110共32个bits(位))表示Sequence number。