1 项目介绍
1.1 基本任务
- 完成两台主机之间的数据通信(数据链路层)
- 仿真ARP协议获得网段内主机的MAC表
- 使用帧完成两台主机的通信(Hello! I’m …)
1.2 高端任务
- 完成两台主机通过中间主机的数据通信(网络层)
- 增加基于IP地址的转发功能
- 增加网络层封装
2 帧结构
2.1 以太网帧格式
![b73904d4fd4cb40f798bca45ca3cdc16.png](https://img-blog.csdnimg.cn/img_convert/b73904d4fd4cb40f798bca45ca3cdc16.png)
![06b91a93e4ffa19ec76579b9c40eecf2.png](https://img-blog.csdnimg.cn/img_convert/06b91a93e4ffa19ec76579b9c40eecf2.png)
2.3 对于基本任务
获取本机mac的实现原理:主机A发送了一个广播帧,sourceip则随便设置了一个,主要用于在接收帧的时候识别,在GetSelfMac的方法里,利用winpcap的pcap_next_ex抓取包的时候,判断sourceip是不是之前设定的那个就可以。
- 获取活动主机的原理:广播arp包对返回的arp包进行数据解析。由于arp包的简洁性,发送和接收都很简单。