我来玩转一下arp -a (pc ping 手机)

来源:互联网 发布:域名与域名的管理 编辑:程序博客网 时间:2024/05/29 17:31

       我进行了如下图的操作:


        我们可以看到, 第一次在pc的cmd中操作arp -a的时候, arp缓存表中并没有手机的相关信息。  此时, 我们让pc来ping一下手机ip, 通过抓包可以看出pc在局域网内广播了arp包, 意思在说: 谁的ip是192.168.1.100, 请告诉我你的mac。手机受到这个包后, 发现pc喊的正是自己的ip, 于是把自己的mac返回, 这样, pc就知道手机的mac了, 并把ip---mac映射存入arp缓存表中。 这样, 再执行arp -a的时候, 我们就可以查到手机的ip---mac了。

       此时, 如果pc再次ping手机, 抓包是看不到arp包的, 因为pc首先查找arp缓存表, 发现已经有手机的ip---mac映射了, 就不需要重新发送查询请求了。 缓存表很奇妙啊。 顺便说一下, 通常来讲, arp只在局域网(简单理解为不经过路由器的网)内广播。比如, 你要是ping一下www.baidu.com,  那就别指望在pc上看到百度服务器的mac了。


       重要的题外话: 在发一个ip包之前, TCP/IP协议栈会必须检查目的IP主机(或者是到达目的的主机路径上的第一台路由器)的mac地址, 必须的啊。 所以,对于一个应用程序而言, 一旦arp缓存表中没有对应的mac, 协议栈就会自动发一个arp请求, 并等待一个返回的arp应答, 实际上, 这个过程完全是协议栈自己去完成的, 跟应用程序没有半毛钱的关系(你想想啊, 应用程序根本不管你什么mac不mac的)。 当然, ping也是一个基于ip的应用程序, 所以在ping前会发arp(当前arp缓存表没有对应mac时)。


       补充说一下, 如果要删除某条ip---mac映射, 值需要执行arp -d ip即可, 这个我经常用啊。


       作为软件开发人员, 多玩玩这样的小操作, 挺好的得意





0 0
原创粉丝点击