网际层的 IP 协议及配套协议


网络层的功能是为数据包选择路径,转发数据包,这主要是IP协议。

ARP协议为IP协议提供服务,ARP协议在网络层但是在靠下方。

ICMP当网络不通的时候,比如数据包转发到路由器,路由器不知道怎么转了,那么这个路由器要返回查差错报告,告诉发送端怎么回事。也可以测试网络通不通,发送一个ICMP请求,对面返回一个ICMP响应。

ICMP是依赖于IP协议,ICMP要封装在ip数据包里面

网络层 ARP地址解析协议_数据

地址解析协议 ARP 的作用


已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的硬件地址? 地址解析协议 ARP 就是用来解决这样的问题的。

网络层 ARP地址解析协议_网络协议_02

网络层 ARP地址解析协议_硬件地址_03

PC1和PC4通信,可以看到ARP rquest请求转发到了另外一个交换机所有口,在PC4上面抓包可以看到PC4 ARP reply响应了。广播到交换机所有口,其次只有对应的PC4会响应,其他的机器不会响应。

网络层 ARP地址解析协议_mac地址_04

 PC5收到之后并不响应ARP请求 

网络层 ARP地址解析协议_网络协议_05

PC>arp -a

Internet Address Physical Address Type
192.168.0.5 54-89-98-09-11-9B dynamic

 最后观察一些ARP请求的源IP MAC和目标IP MAC变化

网络层 ARP地址解析协议_网络协议_06

网络层 ARP地址解析协议_数据_07

地址解析协议 ARP


 通信时使用了两个地址:

  1. IP 地址(网络层地址)
  2. MAC 地址(数据链路层地址)

网络层 ARP地址解析协议_硬件地址_08

在以太网当中,计算机网卡都有mac地址,在通信的时候网络层写上IP地址,在数据链路层,还需要写上mac地址,但是计算机如何知道目标计算机的mac地址呢?

这个时候就需要ARP协议了。它的作用就是将本网段当中的Ip地址解析出它的mac地址来。

解析就发广播问IP对应的IP地址是什么,一广播,那么都收到了。

ARP协议只在以太网当中使用,在本网段计算机通信的时候直接ARP协议发广播解析目标IP的mac地址。

如果和跨网段计算机通信,那么需要ARP解析网关的mac地址,然后使用网关的mac地址来封装。

当这个路由器D和计算机发数据的时候,也需要使用ARP协议解析到目标主机MAC地址来封装。

路由器和路由器之间是点到点链路用的是ppp协议,ppp协议没有mac地址这一说法,所以ARP协议只在计算机连接交换机网络当中可以使用的到,在ppp链路上使用不到。

网络层 ARP地址解析协议_数据_09

IP协议在通信之前,第一件事情是解析mac地址,先用到ARP协议,所以ARP协议为IP协议提供服务。

计算机发广播到所有计算机

网络层 ARP地址解析协议_mac地址_10

收到广播之后

网络层 ARP地址解析协议_mac地址_11

网络层 ARP地址解析协议_硬件地址_12

可以看到ARP协议目标MAC地址为全f。

网络层 ARP地址解析协议_网络协议_13

ARP的字段也可以看到 

网络层 ARP地址解析协议_mac地址_14

地址解析协议 ARP 要点


不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。

每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

网络层 ARP地址解析协议_mac地址_15

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

  • 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
  • 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填ff:ff....... ) / 目标方 IP 地址。

本地广播 ARP 请求(路由器不转发ARP请求)。

ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。

ARP 分组封装在物理网络的帧中传输 

网络层 ARP地址解析协议_mac地址_16

ARP 高速缓存的作用


存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。

当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

应当注意的问题


 ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。目标方硬件地址(未知时填ff:ff....... )

使用 ARP 的四种典型情况


  1. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
  2. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址(网关的mac地址)。剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
  4. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

ARP欺骗


H1问网关的MAC地址的时候,其实H2计算机也受到了,H2告诉其网关地址是M2,这样就将缓存里面信息写成M2了,以后通信的时候数据包就给了M2了,然后M2再给网关,那么H2就可以捕获H1上网的流量了。这叫ARP欺骗。

还有一种就是给了错误的mac地址,那么就转不到路由器上面,这样就不能上网了。有些病毒是专门做这种事情的。

网络层 ARP地址解析协议_硬件地址_17