1 对于几种网络设备的认识
通常我们所说的几层设备中的层就表示此设备所处理的网络协议层的数量,例如:
- 一层设备----主要代表有集线器(HUB),仅涉及物理层。
- 二层设备----主要代表有交换机(switch),涉及物理层和MAC层
- 三层设备----主要代表有路由器(router),涉及物理层、MAC层、网络层。
其中,hub 和 switch 都用于局域网,而 router 可跨局域网。
2 物理层
首先提出一个问题:
若是你和你的小伙伴仅有两台电脑,现在没有网络,而你们一起玩游戏RPG,你有什么办法解决此问题?
-----你所需要的是一根电脑连电脑的网线,这种方式就是一根网线的两个头,分别插在两个电脑的网口中。当时普通网线这样是通不了的,需要水晶头做交叉线,用所谓的1-3、2-6 交叉接法。
水晶头的第1、2和第3、6脚分别起着收、发信号的作用。将一端的 1 号和 3号线、2号线和6号线的位置互换下,就能在物理层实现一端发送信号,另一端接收信号。
当然电脑连电脑,除了网线要交叉外,还需要配置这两台电脑的 IP 地址、子网掩码和默认网关,要两台电脑能够通信,必须将它们配置到同一个子网中。例如192.168.0.1/24 和 192.168.0.2/24。
另外需要注意的是,虽然两台电脑通信只在物理层做了工作,但是电脑之间通信的包必须都是完整的,这也是上面要求配置 ip 相关参数的原因。
那么 3 台 或 3 台以上需要连接在一起呢? 这时候集线器就派上用场了。集线器完全在物理层工作,它将自己收到的没一个字节,都复制到其他端口上去。
3 MAC层(数据链路层)
从上面物理层的讲解可以看出,Hub 采取的是广播的模式,如果每一台电脑发出的包,宿舍的每个电脑都能收到,那就麻烦了。这就需要解决以下几个问题:
- 这个包是发给谁的?谁应该接收?
- 大家都在发,会不会发生混乱?有没有谁先发,谁后发的规则?
- 如果发送的时候出现错误怎么办?
这些问题都是第二层(MAC 层)要解决的问题。
3.1 多路访问规则
MAC 的全称是 Medium Access Control,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发送数据的时候,谁先发、谁后发的问题,防止发生混乱。这需要一些规则来限制,也就是多路访问。一般有以下规则:
- 方式一:分多个信道。每对用户一个信道,你走你的、我走我的,互不干扰。其学名叫信道划分。
- 方式二:今天单号出行,明天双号出行。轮着来,计算机术语叫做分时复用。
- 方式三:不管三七二十一,有事先出门、发现特堵、就回去。错过高峰再出。这个计算机术语叫做随机接入协议。(著名的以太网,就是采用这个方式。)
以上解决了媒体接入控制的问题,MAC的问题也就解决好了。
3.2 mac 地址
解决了第二问题,下面我们来解决第一个问题:发给谁,谁接收?这里就需要用到一个物理地址,即mac地址。解决此问题就涉及第二层网络包格式。对于以太网来说,第二层网络包格式如下:
在网络包的最开始是目标 mac 地址和源 mac 地址。接下来是类型,主要是 IP 数据包,然后 ip 里面包含了 tcp、udp 以及 http 等。根据目标 mac 地址,网卡可以判断在数据链路上广播的包是不是自己,若是自己的,则打开 ip 包,传送到网络层,网络层根据目标ip判断是否为自己,若是打开 TCP 包,传递到传输层,传输层再根据端口发送到对应的服务应用。服务应用响应则逆向封装数据包。
3.3 CRC校验
上面网络数据包最后一个项为 CRC,CRC 项就是用校验的,叫做循环冗余校验。通过 XOR 异或算法,来计算整个包是否在发送的过程中出现了错误,主要用来解决第三个问题。
3.4 mac 地址的获取
上述 3.2 节仅解决了问题的一部分,说明了 mac 层的数据包,通过 mac 地址来标定数据包的归属。但是这衍生出来另外一个问题:源 mac 地址就是网卡本身的物理地址,容易取得。但是目标 mac 是目标机器网卡的物理地址,如何获取呢?
这就要用到 一个叫做 ARP 的协议,其全称叫做 地址解析协议(Adress Resolve Protocol),也就是已知 IP 地址,获取 MAC 地址的协议。
在一个局域网内,当知道了目标 IP,要获取目标 mac 的主要步骤如下图所示:
如上图所示,为避免每次都用 ARP 请求,机器本地也会进行 ARP 缓存,当然,在机器可能上线或下线、ip可能更改。所以,ARP 的 mac 地址缓存过一段时间就会过期。其中广而告之的数据包,其具体组成如下:
4 总结
说了这么多,总结以下几点:
- mac 层是用来解决多路访问的拥堵问题。
- ARP 通过广播的方式寻找目标 mac地址。并且会缓存一段时间。
- 交换机是有学习能力的,能够记住谁在那,就不用广播了。