计算机网络之IP OVER以太网

IP分组在当前网络中传输

网络互连与IP中我们知道IP分组可以在不同网络的网络层进行传输,但是在传输到不同网络网络之前,我们还需要在发送端所在的网络中进行传输,如果是以太网,就需要在以太网中进行传输,而如果需要在以太网中进行传输,我们需要将IP分组封装为MAC帧的格式

在MAC帧中,有两个重要的数据,就是目标终端的MAC地址和源终端MAC地址,源终端MAC地址很好确定,但是目标终端的MAC地址如何确定呢?

IP OVER以太网

IP OVER以太网的核心就是:

  1. 根据下一跳的IP地址获取下一跳的MAC地址,这是关键
  2. 将IP分组封装成MAC帧

IP地址获取MAC地址

要根据IP地址获取MAC地址,就需要地址解析协议ARP(Address Resolution Protocol),这个协议可以帮助我们用IP地址获取MAC地址,源终端通过封装一个MAC帧,MAC帧的目标地址是一个全1的MAC地址,源地址为当前终端的MAC地址,数据类型为ARP,数据中有源终端的IP地址、源终端MAC地址和目标终端IP地址,然后广播该MAC帧,在终端同一网络中的终端都可以接收到该广播帧,然后和自己的IP地址进行对比,如果相同,则回复一个自己的MAC地址,整个过程如下:

终端会将IP对应的MAC地址缓存到本地,这就是APR缓存,在macOS系统中,我们可以在终端通过以下一些命令借助ARP协议进行一些操作:

$ arp -a                             显示本地存储的IP-MAC对应关系
$ sudo arping -I eth0 192.168.1.1    经eth0接口,发送ARP请求,查询IP为192.168.1.1设备的MAC地址
$ sudo arp-scan -l                    查询整个局域网内的所有IP地址的对应MAC地址
$ sudo tcpdump -i en0 arp            监听en0接口的arp协议通信

IP分组在以太网中的传输过程

以太网1中终端A与以太网2中终端B进行通信:

  1. 终端A判断目标IP不在同一个网络,于是发送分组给网关R1:MAC帧中目标MAC地址为R1的MAC地址(这个MAC地址也是通过IP地址经ARP协议获取到的)
  2. R1通过目标地址IP查询路由表,知道下一跳为R2,根据R2的IP地址解析出R2的MAC地址,将MAC帧传输给R2
  3. R2通过目标地址IP解析出终端B的MAC地址,将MAC帧传输给终端B

在整个过程,IP分组始终没有改变,这和我们之前邮件系统启示得出来的结论一样的

VLAN间的通信

交换式以太网中,我们可以通过配置交换机将处于同一物理网络的终端划分为不同的逻辑网络,而这些逻辑网络属于不同的网络,相互之间不能通信,如果我们需要不同的VLAN之间可以通信,需要借助一些设备来实现:

多端口路由器

不同的VLAN是逻辑不同的网络,不同的网络之间通讯需要给每个网络配置不同的网络地址,而且数据的传输必须通过路由器,因此容易想到就是将不同VLAN的接入路由器的端口上,而且和VLAN相连接的交换机端口必须是接入端口,因为如果是共享端口,端口发出的MAC帧中包含VLAN标记,而路由器是无法识别VLAN标记

这样不同VLAN之间的通信就和不同以太网之间的通信过程一致了。用多端口路由器实现VLAN之间的通信有以下特点:

  • 由于每一个VLAN就是逻辑上独立的以太网,因此,这种网络结构等同于路由器互连多个以太网,直观、简单
  • 由于VLAN动态划分,设计网络时是不知道VALN数目的,而且在网络使用过程中,VALN是随时变化的,路由器端口数无法确定
  • 这种网络结构很难实施

单臂路由器

多端口路由器实现VLAN互联很难实施,所以如果有一个固定的路由器端口来互连不同的VLAN,那么就可以避免这种由于动态性而造成的端口数量不确定的变化,这就是单臂路由器,通过一个端口来互连VLAN,因此这种方式需要将单个端口分解为多个逻辑端口,这些逻辑端口对应不同的VLAN

在进入共享端口时,需要给MAC帧增加一个VLAN标识,路由器可以根据目标IP地址来查找路由项,确定目标终端所在的VLAN,然后将MAC帧中的VLAN标识替换为目的VLAN标识,共享端口接收到以后,通过VLAN标识将它传输到相应的VLAN中(会去掉相应的VLAN标识)

三层交换机

单臂路由器虽然解决了VLAN动态性的问题,但是多个VLAN之间共享物理链路,会造成带宽的瓶颈。在实际的情况中,我们的交换机有一个背板,这个背板可以不同功能的需要插上不同的功能模块,功能模块之间通过背板互连起来,并且背板的带宽可以很高,因此我们可以在交换机的背板上增加一个路由功能模块,因此这个交换机就同时具备了交换机和路由器的功能,也解决了带宽的瓶颈,同时也减少了增加物理设备的成本,这就是三层交换机,为什么叫三层交换机呢,因为没有路由功能的交换机是工作在完成MAC帧功能的第二层,而路由器是工作在网络层的,网络层是OSI体系结构的倒数第三层,因此叫三层交换机

三层交换机是否用路由模块处理数据主要是看MAC帧的目的MAC地址,如果MAC地址是三层交换机本身,则需要进行路由的处理

常见网络设备汇总及区别

二层交换机和路由器

AP与路由器

三层交换机与路由器

INTERNET控制报文协议ICMP

控制报文协议的作用:

  1. 检测Internt的操作
  2. 报告IP分组传输过程中发送的意外情况
  3. 测试Internet的运行状态

控制报文协议主要有两种类型:差错报告报文和询问报文

差错报告报文

差错报告报文是向IP分组的发送终端发送不同类型的差错报告报文

终点不可达

差错报告报文中的终点不可达可能有以下的原因

源站抑制

超时

参数错误

改变路由

由于路由器通过路由表查询到需要通过收入到接口转发,它就向源发送终端发送一个改变路由的差错报告报文,就是把路由器A当中这项路由项发送给终端A,由A决定是否采纳这个转发项

询问报文

根据需要向一个特定的目的设备发出不同询问报文

回送请求和相应

我们的PING就是一种应用,它检查互联网上的两个终端是否是可以连通的

时间戳请求和响应

地址掩码请求和响应

路由器询问和通告

在Windows终端中使用tracert 目的终端IP命令,可以获取到源终端到目的终端经过的路由。在macOS系统中为traceroute 目的终端IP,它的原理就是将IP分组的生存时间从1开始设置,在为1时经过一次路由,由于生存时间为0了,因此该路由会回送超时的差错报文,以此可以知道第一个路由的信息,下下跳以及更多的路由信息以此类推……

坚持原创分享,您的支持将鼓励我不断前行!