《实验6获取以太网中IP地址与MAC地址的对应关系.ppt》由会员分享,可在线阅读,更多相关《实验6获取以太网中IP地址与MAC地址的对应关系.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验6获取以太网中IP地址与MAC地址的对应关系 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望ARP协议问题的提出互联层通过IP地址指定报文的始发地和目的地低层物理网络使用物理地址表达帧的源和宿地址解析协议ARP以太网使用ARP将IP地址与MAC地址进行动态映射以太网具有固定长度的MAC地址和广播能力ARP协议的基本思想 RP协议的改进高速缓存技术高速缓存区中保存最近获得的ARP表项高速缓冲区中ARP表项新鲜性的保持:计时器实验表明高速缓冲区的使用可以大大提高A
2、RP的效率其他改进技术目的主机接收到ARP请求后将源主机的IP地址与物理地址映射关系存入自己的高速缓冲区ARP请求是广播发送的,网络中的所有主机接收到ARP请求后都可以将源主机的IP地址与物理地址映射关系存入自己的高速缓冲区主机启动时主动广播自己的IP地址与物理地址的映射关系完整的ARP工作过程 以太网中ARP的报文格式ARP报文中各字段的意义硬件类型:以太网接口类型为1协议类型:IP协议类型为080016操作:ARP请求为1,ARP应答为2硬件地址长度:MAC地址长度为6B协议地址长度:IP地址长度为4B源MAC地址:发送方的MAC地址源IP地址:发送方的IP地址目的MAC地址:ARP请求中
3、该字段没有意义;ARP响应中为接收方的MAC地址目的IP地址:ARP请求中为请求解析的IP地址;ARP响应中为接收方的IP地址ARP命令功能:用于查看、添加和删除高速缓存区中的ARP表项高速缓冲区中的ARP表项动态表项:随时间推移自动添加和删除静态表项:一直保留,直到人为删除或重新启动计算机 Windows中ARP表项的潜在生命周期:10分钟新表项加入时定时器开始计时表项添加后两分钟内没有被再次使用:删除表项被再次使用:增加2分钟的生命周期表项始终在使用:最长生命周期为10分钟显示高速cache中的ARP表添加和删除ARP表项 添加命令:arp s inet_addr eth_addr人为增加
4、ARP表项一定要确保IP地址与MAC地址的对应关系是正确的删除命令:arp d inet_addrInet_addr为“*”时删除所有表项利用WinPcap获取IP-MAC的对应关系 获取本机网卡的MAC和IP地址 NetBIOS编程接口与winsock的gethostbyname函数获取的MAC地址和IP地址很难与WinPcap获取的设备接口名对应pcap_findalldevs_ex可以获取本机的网络接口设备列表包含了本机所有网络接口和接口上绑定的IP地址不包含接口的物理地址 获取本机网卡的MAC和IP地址获取本机网络接口和接口上绑定的IP地址发送ARP请求,请求本机网络接口上绑定的IP地
5、址与MAC地址的对应关系:本地主机模拟一个远端主机,发送一个ARP请求报文,该请求报文请求本机网络接口上绑定的IP地址与MAC地址的对应关系捕获本机的ARP响应,获取本机网络接口卡的MAC地址发送数据包 int pcap_sendpacket(pcap_t*p,u_charbuf,intsize;发送ARP请求的例子(1)#pragma pack(1)typedef struct FrameHeader_t /帧首部 BYTEDesMAC6;BYTESrcMAC6;WORDFrameType;FrameHeader_t;typedef struct ARPFrame_t/ARP帧FrameHe
6、ader_tFrameHeader;WORDHardwareType;WORDProtocolType;BYTEHLen;BYTEPLen;WORDOperation;BYTESendHa6;DWORDSendIP;BYTERecvHa6;DWORDRecvIP;ARPFrame_t;#pragma pack()发送ARP请求的例子(2)ARPFrame_t ARPFrame;/将ARPFrame.FrameHeader.DesMAC设置为广播地址。/将ARPFrame.FrameHeader.SrcMAC设置为本机网卡的MAC地址。ARPFrame.FrameHeader.FrameType
7、=htons(0 x0806);/帧类型为ARPARPFrame.HardwareType=htons(0 x0001);/硬件类型为以太网ARPFrame.ProtocolType=htons(0 x0800);/协议类型为IPARPFrame.HLen=6;/硬件地址长度为6ARPFrame.PLen=4;/协议地址长度为4ARPFrame.Operation=htons(0 x0001);/操作为ARP请求/将ARPFrame.SendHa设置为本机网卡的MAC地址。/将ARPFrame.SendIP设置为本机网卡上绑定的IP地址。/将ARPFrame.RecvHa设置为0。/将ARPFrame.RecvIP设置为请求的IP地址;if(pcap_sendpacket(adhandle,(u_char*)&ARPFrame,sizeof(ARPFrame_t)!=0)/发送错误处理else/发送成功练习和思考为了提高ARP的解析效率,网络操作系统在实现中一般都采用了多种改进技术。设计和制订一个实验方案,观察和判断你使用的OS实现了哪些ARP改进方案查找相关资料和文档,利用Windows系统和VC+自带的功能和函数获取本地网络接口MAC地址和IP地址
限制150内