1 項目介紹
1.1 基本任務
完成兩臺主機之間的數(shù)據(jù)通信(數(shù)據(jù)鏈路層)
仿真ARP協(xié)議獲得網(wǎng)段內(nèi)主機的MAC表
使用幀完成兩臺主機的通信(Hello! I’m …)
1.2 高端任務
完成兩臺主機通過中間主機的數(shù)據(jù)通信(網(wǎng)絡層)
增加基于IP地址的轉(zhuǎn)發(fā)功能
增加網(wǎng)絡層封裝
2 幀結(jié)構(gòu)
2.1 以太網(wǎng)幀格式

2.3 對于基本任務
獲取本機mac的實現(xiàn)原理:主機A發(fā)送了一個廣播幀,sourceip則隨便設置了一個,主要用于在接收幀的時候識別,在GetSelfMac的方法里,利用winpcap的pcap_next_ex抓取包的時候,判斷sourceip是不是之前設定的那個就可以。
獲取活動主機的原理:廣播arp包對返回的arp包進行數(shù)據(jù)解析。由于arp包的簡潔性,發(fā)送和接收都很簡單。
Main.cpp主要的活動:獲取自己的mac—>獲取局域網(wǎng)內(nèi)的活動主機—>用戶選擇發(fā)送給哪臺機器—>根據(jù)選擇的主機,封裝數(shù)據(jù),目的mac,目的ip—>等待接收消息—>接收到消息,解包,解析出收到包的所有信息
Receive.cpp主要的活動:獲取自己的mac—>等待接收數(shù)據(jù)—>接收到消息,解析,展示,然后提取出源mac,ip—>返回消息
圖1:main獲取mac(獲取活動主機的忘記截圖了,代碼里有體現(xiàn),為了測試,取消了這部分),發(fā)送消息之后,立刻把發(fā)送消息的信息輸出來.

參考文檔和完整的文檔和源碼下載地址: