抓包整理————ip 协议一[十二]( 二 )


无论如何ip协议和链路层协议是相符的 。
这个就是动态地址解析协议ARP (address resolution protocal).
动态解析广播 。
那么比如a要发送到b,a 只能到b的ip地址,那么是如何获取b的mac地址呢?
首先a向交换机1发送广播,那么b收到了相应后,那么就会发送mac地址给a了 。
a知道了b的mac地址就可以通信了 。
但是如果每次都这样广播一次的话,那么实在性能太低了,这不是一般的低 。
那么这个时候一般当a知道了 ip 的 mac 后就会进行缓存,下次对这个ip发送消息的时候拿下mac就好了 。
那么查看一下本地缓存:
windows: arp -alinux: arp -nvmac: arp -nla

抓包整理————ip 协议一[十二]

文章插图
这里说明一下交换机的作用哈 。
交换机的主要功能包括:学习功能、转发过滤和消除回路 。学习功能:以太网交换机知道连接到每个端口的设备的MAC地址,将该地址与相应的端口进行映射,并存储在交换机缓存的MAC地址表中 。转发过滤:当数据帧的目的地址在MAC地址表中被映射时,它被转发到与目的节点相连的端口,而不是所有端口 。消除环路:当交换机包括一个冗余环路时,以太网交换机通过生成树协议避免环路,同时允许备份路径 。现在一般是路由器了,路由器包含了交换机的功能,如果交换机1是路由器的话,那么直接这个路由器也是有arp的缓存的,如果有对应ip的mac地址直接发给了a了 。
那么来看一下arp的报文格式 。
arp 报文格式:
抓包整理————ip 协议一[十二]

文章插图
硬件类型: 如1 表示以太网协议类型,如0*0800 表示ipv4硬件地址长度,如6协议地址长度: 如4表示ipv4操作码:1 表示请求,2表示应答发送方硬件地址发送方协议地址目标硬件地址目标协议地址
这里抓个包看下哈:
抓包整理————ip 协议一[十二]

文章插图
看下请求的哈:
抓包整理————ip 协议一[十二]

文章插图
这里opcode 为1,那么就是请求的了 。
如果protocol size是4,protocol type 是0x0800,那么就是ipv4了 。
然后请求的地址是192.168.0.100 。
然后随便找一个响应的:
抓包整理————ip 协议一[十二]

文章插图
然后有一个非常关键的问题得说明一下,那就是arp协议是存在局域网中,而不是广域网 。
1、arp是地址解析协议,根据IP地址获取物理地址的一个TCP与IP协议 。2、arp协议工作的解析范围只限于本地网络也就是局域网之中,arp协议工作的范围是不能用于广域网的 。
所以不要想通过arp找到百度的mac地址 。
怎么说呢? 如果是广域网的话,你的包首先发送给了网关,网关会修改你包中的mac地址 。
抓个百度的包看下:
抓包整理————ip 协议一[十二]

文章插图
看到了吧目标的mac地址是你的网关地址 。
然后看下百度给你的,到你手里的包是怎么样的?
抓包整理————ip 协议一[十二]

文章插图
这个发送给你的mac地址是网关 。
那么有ip解析成mac,自然就有mac解析成ip了,这个就是rarp 。
这个怎么说呢?就是如果你电脑启动的时候是没有分配ip的,那么你就得问啊,我的mac地址是这个,那么我的ip地址是怎么样的呢?
抓包整理————ip 协议一[十二]

经验总结扩展阅读