一、网络设备。

1.1 什么是网络设备

网络设备是一种连接到网络的实体设备。很多时候我们能够听到,二层设备,三层设备,4层设备,7层设备。下面举例了各种类型设备的代表。

1.2 网络设备举例

设备类型 常见的设备
二层设备 二层交换机、网桥。
三层设别 三层交换机、路由器
四层设备 ELB、SLB、LVS
七层设备 ELB、SLB、CDN

二、二层设备

2.1 二层设备在网络中的角色。

二层设备工作在数据链路层,主要是针对局域网来说,因为目前所有的互联网其实是局域网相连接的网。二层设备是进行局域网内的转发。

2.2 二层设备的唯一表示

每个二层以上的网络设备都有一个二层的唯一标识,那就是MAC地址。

三、MAC地址详解

3.1 MAC地址报文结构

如下所示:
image.png
高48位的目标MAC,低48位的源MAC,2字节表示类型,接着是数据,最后是循环冗余码,确保数据传输正确。

3.2 MAC地址是如何工作的

在局域网内,A设备发送给B设备,如果知道B设备的MAC地址,那么就直接封装报文,发给B,该局域网内的所有设备都能拿到这个数据报,如果是其他设备C,拿到数据报,发现目标MAC地址不是自己,那么会直接drop。而B拿到该报文,发现MAC地址是自己的,然后会把MAC头卸载掉,然后交给上层内核协议栈去处理。平时为啥没有感知,因为这些都是网卡配合内核协议栈实现了。如果有兴趣可以打开网卡的混杂模式,然后进行抓包,这样就能知道你们家其他人正在访问什么网站,嘿嘿。

四、ARP协议详解。

4.0 MAC地址如何获取

上面说到的A设备发送给B设备,需要知道B设备的MAC地址,才能进行局域网内的传输,那么两个网络设备怎么样才能知道对方的MAC地址呢,这就需要ARP协议(Address Resolution Protocol)。

4.1 ARP协议工作原理

原理如下图所示:
image.png
通过局域网广播的方式,获取到对方的MAC地址。

4.2 ARP 缓存

如果每次发数据报文,都发送ARP请求,这样就显得效率很低下。因此每个3层以上的设备都有ARP缓存。
可以通过如下命令获取到当前的arp缓存。

  1. arp -a

执行结果格式为:ip MAC 网络接口 作用域
image.png
网络设备是一直处于不断的上线下线的过程中的,缓存也是不可信的,所以arp缓存是有老化时间的。ARP的默认老化时间是1800s,ARP相关的配置可以在以下目录设置:
/proc/sys/net/ipv4/neigh/default/

4.3 设置静态ARP。

有的时候局域网是禁ARP的,所有的ARP都需要手动配置。
可以通过如下命令配置静态ARP:

  1. arp -s ${ip} ${mac}