一.arp协议的由来
计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送.由于通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议.
二.arp协议功能
广播的方式发送数据包,获取主机的mac地址.
三.协议工作方式
每台主机ip都是已知的
例如:192.168.10.2与192.168.10.3
通过ip地址和子网掩码区分自己所处的子网,那么会出现两种情况:
两个子网地址一样
那么它们在一个局域网内,就可以通过广播的方式进行传输数据.
源mac 目标mac 源IP 目标IP 数据 发送端主机 发送端mac FF:FF:FF:FF:FF:FF 192.168.10.2 192.168.10.3 数据 发送端通过广播的方式发包,其他机器接受到包,然后拆包,发现源mac是发送端,目标mac是FF:FF:FF:FF:FF:FF,那么其他机器就知道了是发送端要接收端的mac地址,于是继续拆包,拆到目标地址时,发现是发给192.168.10.3的,那么其他则将包丢弃掉了.而192.168.10.3会回包,此时的源mac地址是192.168.10.3的mac地址,目标地址是192.168.10.2的地址.
补充:所有机器都是通过交换机连接在一个局域网内的,然后通过路由器等等物理连接介质把全世界的网络连到一起的.而在一个局域网内的机器发包会先发送到交换机,而交换机有一个mac地址学习功能,在机器之间发包回包的时候它会记录每一个连接端口的mac地址,那么以后发包回包交换机会直接发送给已知的端口,而不用再把包复制多份通过广播方式发出去了.
两个子网地址不一样
那么它们不在一个局域网内,那么就需要网关了,通过网关然后路由协议传输数据.
首先会解析两个IP是否在同一个子网内,如果不是,那么发送端会广播的方式发出一个包,而此时的包的目标IP是网关的IP,当拆包时,网关发现这个是发给自己的,那么它回包回回复自己的mac地址.然后发送端会再发一个包,此时的的源mac是发送端,目标mac是网关的mac,源IP是发送端IP,而目标IP是真正目标的IP,发送端把包发给了网关,然后网关会通过路由协议把包发送给目标IP的网关,然后目标IP的网关会把包发给目标IP.回包时然后原路返回.