51Testing软件测试论坛

标题: 一道面试题 [打印本页]

作者: xxg    时间: 2018-7-5 17:46
标题: 一道面试题
如下是一个网络抓包,其中黑色选中区块为网络数据层数据。请根据IP协议格式,写出帧数的源IP和目标地址。

  
0000
  
  
3c
  
  
ef
  
  
bc
  
  
f1
  
  
fb
  
  
97
  
  
b8
  
  
ca
  
  
3a
  
  
7b
  
  
55
  
  
b1
  
  
08
  
  
00
  
  
45
  
  
00
  
  
0010
  
  
00
  
  
34
  
  
39
  
  
46
  
  
40
  
  
00
  
  
40
  
  
06
  
  
00
  
  
00
  
  
c0
  
  
a8
  
  
1f
  
  
60
  
  
c0
  
  
a8
  
  
0020
  
  
1f
  
  
91
  
  
ff
  
  
d8
  
  
00
  
  
50
  
  
b5
  
  
59
  
  
b8
  
  
a7
  
  
00
  
  
00
  
  
00
  
  
00
  
  
80
  
  
02
  
  
0030
  
  
20
  
  
00
  
  
c0
  
  
68
  
  
00
  
  
00
  
  
02
  
  
04
  
  
05
  
  
b4
  
  
01
  
  
03
  
  
03
  
  
02
  
  
01
  
  
01
  
  
0040
  
  
04
  
  
02
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
         
IP协议格式:
  
版本(4)
  
  
首部长度(4)
  
  
区分服务(8)
  
  
总长度(16)
  
  
标识(16)
  
  
标志(3)
  
  
片偏移(13)
  
  
存活时间(8)
  
  
协议(8)
  
  
首部检验和(16)
  
  
源IP地址(32)
  
  
目标IP地址(32)
  
  
可选字段(可变)
  
            
答案:
  
0100
  
  
0101
  
  
0000,0000
  
  
0000,0000,0011,0100
  
  
0011,1001,0100,0110
  
  
0100,0000,0000,0000
  
  
0100,0000
  
  
0000,0110
  
  
0000,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
本帖最后由 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进制:
  
  
0
  
  
1
  
  
2
  
  
3
  
  
4
  
  
5
  
  
6
  
  
7
  
  
8
  
  
9
  
  
10
  
  
11
  
  
12
  
  
13
  
  
14
  
  
15
  
  
16进制:
  
  
0
  
  
1
  
  
2
  
  
3
  
  
4
  
  
5
  
  
6
  
  
7
  
  
8
  
  
9
  
  
A
  
  
B
  
  
C
  
  
D
  
  
E
  
  
F
  
     示例:               

                  二进 制 :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
本帖最后由 xxg 于 2018-7-6 09:37 编辑






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2