使用Jpcap发送ARP以及ICMP请求
项目源码:GitHub地址
一、实验过程
- 首先获取本地的网卡以及IP信息
- 输入当前网关的地址,在这个拓扑图中也就是172.17.5.1
- 程序封装ARP请求,向网关发送ARP请求
- 抓取ARP相应的包,过滤之后获得网关的MAC地址
- 输入要PING的目的IP,即172.16.5.7
- 抓取ICMP相应的包,过滤之后输出ECHO和REPLY的包
PS:特别注意
在ARP的发送的包中:
源IP和源MAC地址是自己本地的IP(172.17.5.6)和MAC地址
目的IP是网关的IP(172.17.5.1),目的MAC地址是全F(表示广播,此时并不知道目的MAC地址)
在ICMP的发送的包中:
源IP和源MAC地址是自己本地的IP(172.17.5.6)和MAC地址
目的IP是PC2的IP(172.16.5.7),目的MAC地址是网关的MAC(也就是之前ARP获得的MAC地址)
之所以目的MAC地址是网关的MAC地址,而不是PC2的MAC地址。
是因为所有的数据包只需要交给路由器负责分组转发即可。
本身并不需要知道另一个网段的IP和MAC的映射关系。
但是,一些路由器会有ARP代理的功能,简