wireshark学习-ARP
ARP用于问对方的ip地址ping一下抓包一下字面意思谁是1.2这个地址给我回复一下mac我是1.11.2的地址在我这我的mac地址是...言简意赅ping完了之后会建立一个缓存表暂时保存ip地址与mac的映射关系不然还得一遍一遍问被ping的那一边也会建立起这个表。还有个用法叫做免费arp当pc配置好一个新的地址之后比如配置192.168.1.1并不会直接使用而是会发一个arp包问谁有192.168.1.1这个地址如果没人搭理它说明这个网络里192.168.1.1这个地址没被其他人使用这个时候pc才会正式启用这个地址。对了顺便一提windows电脑在没配置静态ip地址也没拿到dhcp分配的地址的时候会自动配置一个暂时的169.254.x.x网段地址防止自己裸奔连二层互通的pc都不能通信。哈哈骗你的只有同样169.254网段的裸奔pc才能通信因为电脑自动配置169.254地址的时候根本不会配置网关直接就是个空的因此下面图中的pc8哪怕和pc9二层互通也发不出包为啥因为你要给一个ip地址发包要先进行arp问问人家的mac地址吧但是pc8一看这地址我去是192.168.1.1跟我不是一个网段肯定是跨三层的那我arp问问网关的mac地址吧我让网关帮我转发一查AUV我根本没网关啊那没事了。因此pc8根本一个包都不会发出去连arp都不会发。那是不是手动配置一个网关就好了可以在电脑的cmd界面使用这行代码来添加静态路由route add 192.168.1.0 mask 255.255.255.0 169.254.1.1 //当主机要访问 192.168.1.x 的任意 IP 时应该把数据包发送给 169.254.1.1由它作为下一跳路由器负责转发。169.254.1.1根本不存在呀所以也不行。下面再来看一个跨网段的arp先用arp -d清除一下arp缓存表不然已经知道mac地址的情况是不会发arp的路由器顺便也清一下 reset arp all开始pingpc1一看2.1这个地址和自己不是同一网段的于是直接把icmp发给网关但是不知道网关的mac地址于是去查网关的mac地址网关也就是路由器拿到了icmp一看目的地址是2.1于是去查路由表发现一个符合的都没有于是直接按默认路由发路由表上写的默认路由的下一跳是10.10.10.2这个地址但是arp缓存表里没有于是发arp问问到了之后就把icmp发给了另一台路由器另一台路由器拿到了icmp之后依旧是先看自己的路由表哎找到了下一跳是192.168.2.254再仔细一看哎这不是我自己的接口地址吗居然还是up的说明好使那也就是说我和192.168.2.1是二层互通的呀于是直接发arp问2.1的mac地址然后pc2就收到了icmp往回发给pc1的时候就不用一个一个都发arp问了因为刚才问完了之后都缓存到arp表里了。注意这一套流程下来每个设备的arp表里都只有和自己二层互通的地址的mac地址