[源碼和文檔分享]基于Winpcap實現(xiàn)的發(fā)送ARP數(shù)據(jù)包和IP數(shù)據(jù)包

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ā)送消息的信息輸出來.

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

https://www.write-bug.com/article/1457.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容