[源码和文档分享]基于Winpcap实现的发送ARP数据包和IP数据包

1 项目介绍

1.1 基本任务

完成两台主机之间的数据通信(数据链路层)

仿真ARP协议获得网段内主机的MAC表

使用帧完成两台主机的通信(Hello! I’m …)

1.2 高端任务

完成两台主机通过中间主机的数据通信(网络层)

增加基于IP地址的转发功能

增加网络层封装

2 帧结构

2.1 以太网帧格式

2.3 对于基本任务

获取本机mac的实现原理:主机A发送了一个广播帧,sourceip则随便设置了一个,主要用于在接收帧的时候识别,在GetSelfMac的方法里,利用winpcap的pcap_next_ex抓取包的时候,判断sourceip是不是之前设定的那个就可以。

获取活动主机的原理:广播arp包对返回的arp包进行数据解析。由于arp包的简洁性,发送和接收都很简单。

Main.cpp主要的活动:获取自己的mac—>获取局域网内的活动主机—>用户选择发送给哪台机器—>根据选择的主机,封装数据,目的mac,目的ip—>等待接收消息—>接收到消息,解包,解析出收到包的所有信息

Receive.cpp主要的活动:获取自己的mac—>等待接收数据—>接收到消息,解析,展示,然后提取出源mac,ip—>返回消息

图1:main获取mac(获取活动主机的忘记截图了,代码里有体现,为了测试,取消了这部分),发送消息之后,立刻把发送消息的信息输出来.

参考文档和完整的文档和源码下载地址:

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • LT-0807,2018.03.11翻译,@成都 声明 本文是一篇关于TCP/IP协议组件的RFC,聚焦于一个IP...
    摩诃婆罗多阅读 4,309评论 1 5
  • TCP/IP 协议族 Transmission Control Protocol/Internet Protoco...
    槑小姐_1419阅读 1,095评论 0 1
  • ARP 位于七层模型里的第二层,即数据链路层。数据链路层有什么?答对了,是MAC地址。MAC地址指网络接口的硬件地...
    AK蜗牛阅读 1,560评论 0 6
  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    Lucus_Linx阅读 14,480评论 6 31
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,662评论 0 6

友情链接更多精彩内容