实验报告 理解网络层ICMP、ARP协议工作原理
实验要求:
本次实验两人一组,配合完成。
一位同学的机器设为主机A,一位同学的机器设为主机B。
主机A同学填写本机IP地址设置信息:
主机A的IP地址: 192.168.112.7
主机A的子网掩码: 255.255.255.0
主机A的默认网关: 192.168.112.254
主机B同学填写本机IP地址设置信息::
主机B的IP地址: 192.168.112.8
主机B的子网掩码: 255.255.255.0
主机B的默认网关: 192.168.112.254
任务1、通过执行ping命令,理解ICMP协议询问报文。
Ping命令执行,发送方发送4个ICMP请求报文,接收方返回4个ICMP响应报文,可检测收发双方网络层是否连通。示例如下:
——在wireshark中,开始抓包
——在各自机器命令提示符窗口,执行: Ping 同组另一机器IP
——在wireshark中,停止抓包
——在捕获的数据包中,找到发送的4个ICMP请求报文,填写下表。
ICMP请求报文 | Type 类型 | Code 代码 | checksum | Sequence number |
第1个 | Type: 8 (Echo (ping) request) | Code: 0 | Checksum: 0x4d5a [correct] | Sequence number (BE): 1 (0x0001) Sequence number (LE): 256 (0x0100) |
第2个 | Type: 8 (Echo (ping) request) | Code: 0 | Checksum: 0x4d59 [correct] | Sequence number (BE): 2 (0x0002) Sequence number (LE): 512 (0x0200) |
第3个 | Type: 8 (Echo (ping) request) | Code: 0 | Checksum: 0x4d58 [correct] | Sequence number (BE): 3 (0x0003) Sequence number (LE): 768 (0x0300) |
第4个 | Type: 8 (Echo (ping) request) | Code: 0 | Checksum: 0x4d57 [correct] | Sequence number (BE): 4 (0x0004) Sequence number (LE): 1024 (0x0400) |
——在捕获的数据包中,找到发送的4个ICMP响应报文,填写下表。
ICMP响应报文 | Type 类型 | Code 代码 | checksum | Sequence number |
第1个 | Type: 0 (Echo (ping) reply) | Code: 0 | Checksum: 0x555a [correct] | Sequence number (BE): 1 (0x0001) Sequence number (LE): 256 (0x0100) |
第2个 | Type: 0 (Echo (ping) reply) | Code: 0 | Checksum: 0x5559 [correct] | Sequence number (BE): 2 (0x0002) Sequence number (LE): 512 (0x0200) |
第3个 | Type: 0 (Echo (ping) reply) | Code: 0 | Checksum: 0x5558 [correct] | Sequence number (BE): 3 (0x0003) Sequence number (LE): 768 (0x0300) |
第4个 | Type: 0 (Echo (ping) reply) | Code: 0 | Checksum: 0x5557 [correct] | Sequence number (BE): 4 (0x0004) Sequence number (LE): 1024 (0x0400) |
任务2、通过执行tracert,理解ICMP协议差错报文。
tracert命令,每次发送3个探测IP数据报,依次设置TTL=1,2,3,4……。每经过一台路由器转发,TTL自动减1,路由器丢弃TTL=0的数据报,并返回ICMP差错报告。
——在wireshark中,开始抓包
——在各自机器命令提示符窗口,执行: tracert www.zzu.edu.cn
——在wireshark中,停止抓包
——在捕获数据包中,找到第一次发送和接收的3对ICMP报文,填写下表。
ICMP报文 | IP首部信息 | ICMP报文信息 | |||
发送IP | 目的IP | TTL | Type | Code | |
第1个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 1 | Type: 8 (Echo (ping) request) | Code: 0 |
第1个ICMP 差错报文 | Source: 192.168.112.254 | Destination: 192.168.112.7 | Time to live: 64 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
第2个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 1 | Type: 8 (Echo (ping) request) | Code: 0 |
第2个ICMP 差错报文 | Source: 192.168.112.254 | Destination: 192.168.112.7 | Time to live: 64 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
第3个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 1 | Type: 8 (Echo (ping) request) | Code: 0 |
第3个ICMP 差错报文 | Source: 192.168.112.254 | Destination: 192.168.112.7 | Time to live: 64 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
问:第一次返回的3个ICMP差错报文,带回的地址,是否是默认网关的地址?
答: 是
——在捕获数据包中,找到最后一次发送和接收的3对ICMP报文,填写下表。
ICMP报文 | IP首部信息 | ICMP报文信息 | |||
发送IP | 目的IP | TTL | Type | Code | |
第1个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 5 | Type: 8 (Echo (ping) request) | Code: 0 |
第1个ICMP 差错报文 | Source: 202.196.79.14 | Destination: 192.168.112.7 | Time to live: 251 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
第2个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 5 | Type: 8 (Echo (ping) request) | Code: 0 |
第2个ICMP 差错报文 | Source: 202.196.79.14 | Destination: 192.168.112.7 | Time to live: 251 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
第3个ICMP 请求报文 | Source: 192.168.112.7 | Destination: 202.196.64.48 | Time to live: 5 | Type: 8 (Echo (ping) request) | Code: 0 |
第3个ICMP 差错报文 | Source: 202.196.79.14 | Destination: 192.168.112.7 | Time to live: 251 | Type: 11 (Time-to-live exceeded) | Code: 0 (Time to live exceeded in transit) |
任务3、学会用arp命令查看ARP地址解析表。
——在自己机器的命令提示符窗口,输入命令:arp –a
查看自己机器的ARP地址解析表内容(目的主机IP地址,对应的网卡地址)
——在自己机器的命令提示符窗口,输入命令:arp –d
清空自己机器的ARP地址解析表
——在各自机器命令提示符窗口,执行: ping 202.196.64.202
(www.zzu.edu.cn的IP地址)
——在自己机器的命令提示符窗口,输入命令:arp –a
问:ARP地址解析表中是否添加了,默认网关IP地址对应其网卡地址记录?
答:192.168.112.254 00-1a-a9-15-3d-ab
192.168.112.255 ff-ff-ff-ff-ff-ff
224.0.0.22 01-00-5e-00-00-16
问:ARP协议为什么解析到的是默认网关IP的网卡地址,而不是目的主机202.196.64.202(www.zzu.edu.cn)的网卡地址?为什么?
答: 每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机的和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
- ARP进程在本局域网上广播发送一个ARP请求分组
- 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组
- 主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,同时在这个ARP响应分组中写入自己的硬件地址。
- 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。
因而ARP协议解析到的是默认网关IP的网卡地址,而不是目的主机202.196.64.202(www.zzu.edu.cn)的网卡地址。
任务4、理解ARP地址解析过程,两人一组(一个为主机A,一个为主机B)。
修改主机A的IP地址设置为:
IP地址 10.2.2.?(?设置为:个人学号后3位,不和其他同学冲突)
子网掩码255.255.254.0,删除默认网关IP地址
主机A的子网地址为: 10.2.2.123(老师,我学号后三位是514,不能用)
修改主机B的IP地址设置为:
IP地址10.2.3.? (?设置为:个人学号后3位,不和其他同学冲突)
子网掩码255.255.254.0,删除默认网关IP地址
主机B的子网地址为: 10.2.3.122
——在各自机器的命令提示符窗口,输入命令:ARP –d(清空地址解析表)
——在各自机器的命令提示符窗口,输入命令:ARP –a(看不到对方网卡地址)
——在各自机器的wireshark中,开始抓包
——在各自机器的命令提示符窗口,输入命令:ping 对方主机IP
——在各自机器的wireshark中,停止抓包
Ping 命令发送4个ICMP请求报文,封装成帧时,需要知道目的主机的网卡地址,但是在自己的ARP地址解析表没有找到(是老师让你清空的,对不起!)。
系统自动启动ARP协议,先获得对方的网卡地址,然后才能发送ICMP请求报文。
——在各自机器wireshark中,找到发出的ARP请求数据报(broadcast广播帧),
ARP响应数据报,填写下表。
ARP请求request (问:目的IP 被分配给哪块网卡了?别藏了,快告诉我!)
Hardware type | Hardware type: Ethernet (1) | protocol type | Protocol type: IPv4 (0x0800) |
hardware size | Hardware size: 6 | protocol size | Protocol size: 4 |
opcode | Opcode: request (1) | ||
发送IP地址 | Sender IP address: 10.2.2.123 | 发送MAC网卡地址 | Sender MAC address: Elitegro_0b:5f:4b (94:c6:91:0b:5f:4b) |
目的IP地址 | Target IP address: 10.2.3.122 | 目的MAC网卡地址 | Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00) |
ARP响应replay (答:目的IP绑定我的网卡,告你网卡地址,往卡上打钱吧!)
Hardware type | Hardware type: Ethernet (1) | protocol type | Protocol type: IPv4 (0x0800) |
hardware size | Hardware size: 6 | protocol size | Protocol size: 4 |
opcode | Opcode: request (1) | ||
发送IP地址 | Sender IP address: 192.168.112.75 | 发送MAC网卡地址 | Sender MAC address: LcfcHefe_6c:e7:c5 (54:e1:ad:6c:e7:c5) |
目的IP地址 | Target IP address: 192.168.112.254 | 目的MAC网卡地址 | Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00) |
——在各自机器的命令提示符窗口,输入命令:ARP –a(显示地址解析表)
一次ARP解析,双方ARP解析表中都缓存了对方网卡地址记录。
(就问了一次话,双方的网卡都暴露给对方了。)
问:查看自己机器上的ARP地址解析表,新添加的对方网卡地址是什么?
答: 10.2.3.122 94-c6-91-0e-21-69
10.2.3.135 94-c6-91-0e-20-e3
10.2.3.255 ff-ff-ff-ff-ff-ff
任务5、ARP、ICMP协议综合实验(上接任务4的设置,继续两人一组)
主机A的子网掩码 修改 为:255.255.255.0 (非常重要!!!)
主机B子网掩码 不变 还为:255.255.254.0
——在各自机器的命令提示符窗口,输入命令:ARP –d(清空地址解析表)
——在各自机器的命令提示符窗口,输入命令:ARP –a(看不到对方网卡地址)
——在wireshark中,开始抓包
——在主机A的命令提示符窗口,执行 ping 主机B的IP地址
(主机A的同学操作,双方共同观察结果!)
——在wireshark中,停止抓包
问:A、B双方连通了吗?ICMP错误提示是什么?
答: 没有连通,提示为PING:传输失败。General failure。
——在主机A的命令提示符窗口,输入命令:arp –a
问:是否看到主机B的MAC地址解析记录?
答: 看不到
——在主机B 的命令提示符窗口,输入命令:arp –a
问:是否看到主机A的MAC地址解析记录?
答: 看不到
问:在wireshark抓包记录中,能找到到ICMP请求与响应报文吗?
答: 找不到
问:A、B双方为什么没有连通?
答: 不在同一子网
——在各自机器的命令提示符窗口,输入命令:ARP –d(清空地址解析表)
——在各自机器的命令提示符窗口,输入命令:ARP –a(看不到对方网卡地址)
——在wireshark中,开始抓包
——在主机B 的命令提示符窗口,执行ping主机A的IP地址
(这次主机B同学操作,双方共同观察结果!)
——在wireshark中,停止抓包
问:A、B双方连通了吗?ICMP错误提示是什么?
答: 没有,提示为请求超时。
——在主机B 的命令提示符窗口,输入命令:arp –a
问:是否看到主机A的MAC地址解析记录?
答: 可以看到
——在主机A的命令提示符窗口,输入命令:arp–a
问:是否看到主机B的MAC地址解析记录?
答: 不能
问:在wireshark抓包记录中,能找到ICMP请求与响应报文吗?
答: 可以找到请求报文,没有响应报文
问:A、B双方为什么没有连通? 为什么只有4个ICMP请求,没有响应报文?
答: 因为主机A没有主机B的MAC地址解析记录
为什么不通?
主机A对主机B说:你骗我!咱俩明明在一个子网中,你不理我。
主机B对主机A说:我冤枉,我没骗你!事实是我啥也没做啊。
分手吧......