一道面试题
如下是一个网络抓包,其中黑色选中区块为网络数据层数据。请根据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 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:37 编辑
页:
[1]