xxg 发表于 2018-7-5 17:46:21

一道面试题

如下是一个网络抓包,其中黑色选中区块为网络数据层数据。请根据IP协议格式,写出帧数的源IP和目标地址。

00003cefbcf1fb97b8ca3a7b55b108004500
001000343946400040060000c0a81f60c0a8
00201f91ffd80050b559b8a7000000008002
00302000c0680000020405b4010303020101
00400402
         
IP协议格式:
版本(4)首部长度(4)区分服务(8)总长度(16)
标识(16)标志(3)片偏移(13)
存活时间(8)协议(8)首部检验和(16)
源IP地址(32)
目标IP地址(32)
可选字段(可变)
            
答案:

010001010000,00000000,0000,0011,0100
0011,1001,0100,01100100,0000,0000,0000
0100,00000000,01100000,0000,0000,0000
1100,0000,1010,1000,0001,1111,0110,0000
1100,0000,1010,1000,0001,1111,1001,0001
可选字段(可变)

                源IP地址:c0:a8:1f:60                二 进 制:1100,0000,1010,1000,0001,1111,0110,0000                十 进 制:192.168.31.96
                目标IP地址:c0:a8:1f:91                二 进 制:1100,0000,1010,1000,0001,1111,1001,0001                十 进 制:192.168.31.145

xxg 发表于 2018-7-5 18:01:00

本帖最后由 xxg 于 2018-7-5 20:17 编辑

             知识点:1、对IP协议的理解               2、进制转换(十六进制>二进制>十进制)               3、数据包分析
             1、对IP协议的理解               物理层:通过物理介质传送电子信号,数据单位为比特(bit);               数据链路层:在不可靠的物理介质上提供可靠的传输,数据单位为帧(frame),             其一个目的就是发送和接收IP数据报;               网络层:使数据路由经过大型网络,数据单位为数据包(packet);               ……               IP协议是用于将多个包交换网络连接起来的,它在源地址和目标地址之间传送一             种称为数据报的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大             小的要求。

   版本(Version)
   指定IP协议的版本号,封包使用的数字通常是16进制的,占4位。

   头长度(Internet Header Length,IHL)
   指定IPv4协议包头长度的字节数。最小20字节,最多24字节。

   包长度(Total Length,TL)
   指定IP包总长,协议以byte做单位表示总长度。(包头和数据总和)

   生存时间(Time To Live,TTL)
   数据报可以经过的最多的路由器数。

   源地址(Source Address,SA)
   发送IP数据包的IP地址,通常占32位。

   目标地址(Destination Address)
   接收IP数据包的IP地址,通常占32位。
                     

   网络上每一个节点都必须有一个独立的Internet地址(也就是IP地址)。通常使用的版本是IPv4标准,用一个32bit的数字表示,也就是常见的255.255.255.255样式。


   2、二进制转换
      ① 二进制与十六进制之间的转换
      a. 二进制转十六进制

10进制:0123456789101112131415
16进制:0123456789ABCDEF
   示例:                                  二进 制 :1100,0000,1010,1000,0001,1111,0110,0000                  取0000转:0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 0
                  取0110转:0*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 6
                  取1111转:1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = F
                  取0001转:0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 1
                  取1000转:1*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 8
                  取1010转:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = A
                  取0000转:0*2^3 + 0*2^2 + 0*2^1 + 0*2^0 = 0
                  取1100转:1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 = C
                  最后得到的十六进制是:C0 A8 1F 60
            b. 十六进制转二进制

      方法:除2取余法,每个十六进制数为4个二进制数,不足在左边补0      示例:
取 C 转
12/2=6……0
取 8 转
8/2=4……0
以此类推计算

   

6/2=3……0
   
4/2=2……0

   
3/2=1……1
   
2/2=1……0

   
1/2=0……1
   
1/2=0……1

得到二进制:
1100
得到二进制:
1000

               
   ②二进制与十进制之间的转换
      a. 十进制转二进制
      方法:除2取余法。
      示例:取192转
      192/2=96……0
      96/2=48…… 0
      48/2=24…… 0
      24/2=12…… 0
      12/2=6……0
      6/2=3…… 0
      3/2=1…… 1
      1/2=0…… 1
       最后取余数得到的二进制数为:1100 0000

   b. 二进制转十进制

      方法:把二进制按权展开、相加即得到十进制数。
      示例:1010 1000
      1*2^7+0*2^6+1*2^5+0*2^4+1*2^3+0*2^2+0*2^1+0*2^0
      最后得到的十进制数为:168

xxg 发表于 2018-7-6 09:33:46

本帖最后由 xxg 于 2018-7-6 09:37 编辑

页: [1]
查看完整版本: 一道面试题