网络协议复习笔记(五)从物理层到MAC层

物理层(第一层)

电脑连电脑,首先网线两个头,一头插一台电脑的网卡上,另一头插另一台,1-3、2-6 交叉接法。 水晶头的第 1、2 和第 3、6 脚,它们分别起着收、发信号的作用。将一端的 1 号和 3 号线、2 号和 6 号线互换一下位置,就能够在物理层实现一端发送的信号,另一端能收到。除了网线要交叉,还需要配置这两台电脑的IP 地址子网掩码默认网关。这三项必须配置成为一个网络,可以一个是 192.168.0.1/24,另一个是 192.168.0.2/24,否则是不通的。到此为止,两台电脑已经构成了一个最小的局域网,也即LAN

使用集线器也就是Hub,连接两台以上的电脑。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去。这是第一层物理层联通的方案。

数据链路层(第二层)

Hub采取广播的模式,每台电脑发出的包可能产生无法辨识受体的问题,需要解决的问题是:

  1. 这个包是发给谁的?谁应该接收?
  2. 大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
  3. 如果发送的时候出现了错误,怎么办?

这些都是第二层,数据链路层,也即 MAC 层要解决的问题。MAC 的全称是 Medium Access Control,即媒体访问控制。

解决第一个问题

牵涉到网络包格式,对于以太网,第二层最开始就是目标点MAC地址源MAC地址
网络协议复习笔记(五)从物理层到MAC层
接下来是类型,大部分的类型是IP 数据包,然后 IP 里面包含 TCPUDP,以及 HTTP 等,这都是里层封装的事情。有了这个目标 MAC 地址,数据包在链路上广播,MAC 的网卡才能发现,这个包是给它的。MAC 的网卡把包收进来,然后打开 IP 包,发现 IP 地址也是自己的,再打开 TCP 包,发现端口是自己,也就是 80,而 nginx 就是监听 80。
于是将请求提交给 nginx,nginx 返回一个网页。然后将网页需要发回请求的机器。然后层层封装,最后到 MAC 层。因为来的时候有源 MAC 地址,返回的时候,源 MAC 就变成了目标 MAC,再返给请求的机器。

解决第二个问题

而控制谁先发,谁后发的,也就是第二个问题,通过多路访问进行解决。还有其他算法来解决这个问题,分多个车道,叫做信道划分;单双号限行较轮流协议;遇见堵车便折返,叫随机接入协议,以太网就是使用这个方式。

解决第三个问题

通过第二层最后的CRC,也就是循环冗余检测,通过异或来计算整个包是否在发送中出现了错误。

还有一个问题

如果不知道目标地址,怎么将目标地址放入包里。通过ARP协议,可以已知IP地址,求MAC地址。
网络协议复习笔记(五)从物理层到MAC层
通过拿着“大喇叭”呼叫,找到MAC。
网络协议复习笔记(五)从物理层到MAC层
通过发送一个广播包,具体如下
网络协议复习笔记(五)从物理层到MAC层
为了避免每次都用 ARP 请求,机器本地也会进行 ARP 缓存。当然机器会不断地上线下线,IP 也可能会变,所以 ARP 的 MAC 地址缓存过一段时间就会过期。

局域网

对于宿舍这样机器量少的情况下,这样组网没有问题。然而一旦机器数目增多,问题就出现了。因为Hub是广播的,不管某个接口是否需要,所有bit都会被发送出去,产生冲突的概率变高。
谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢?这就需要一个能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发的设备,这个设备显然是个二层设备,称为交换机
通过交换机会学习,一台 MAC1 电脑将一个包发送给另一台 MAC2 电脑,当这个包到达交换机的时候,一开始交换机也不知道 MAC2 的电脑在哪个口,会发送给其他所有口,但这个时候交换机会记住MAC1是明确的口以及它的MAC地址,以后就会方便很多。
然后通过不断转发,就会形成网络结构,以及转发表,然而这个需要在一段时间后进行更新。

拓扑结构

相比宿舍,在更大范围内出现更多的机器,此时一台交换机也不够用,需要多台交换机,换机之间连接起来,就形成一个稍微复杂的拓扑结构
比如两台交换机连接三个局域网,如果机器 1 只知道机器 4 的 IP 地址,当它想要访问机器 4,把包发出去的时候,它必须要知道机器 4 的 MAC 地址。
网络协议复习笔记(五)从物理层到MAC层
机器1发起广播,机器2和交换机A会收到广播,交换机A会收到广播后,转发给其他网口,于是机器3和交换机B收到。交换机B执行广播策略,于是机器 4 和机器 5 都收到了广播信息。机器 4 主动响应说,这是找我的,这是我的 MAC 地址。一个ARP完成。
这次会让交换机A学习到机器1在左边的网口。当机器 3 要访问机器 1 的时候,也需要发起一个广播的 ARP 请求。这个时候交换机 A 和交换机 B 都能够收到这个广播请求。交换机 A 当然知道主机 A 是在左边这个网口的,所以会把广播消息转发到局域网一。同时,交换机 B 收到这个广播消息之后,由于它知道机器 1 是不在右边这个网口的,所以不会将消息广播到局域网三。

环路问题

类似如下搭建的拓扑结构就是典型的环路问题
网络协议复习笔记(五)从物理层到MAC层
由于初始没有任何信息,交换机A会传到交换机B,B再传回,无休无止,这也导致交换机永远无法学到拓扑结构。当广播包越来越多的时候,也就是路会越来越堵,最后谁也别想走。

如何解决环路问题

数据结构中,将有环的称为,若环破了,就生成了。在计算机网络中,生成树的算法叫做Spanning Tree Protocol,简称STP
网络协议复习笔记(五)从物理层到MAC层

  1. Root Bridge,也就是根交换机。最资深的交换机。
  2. Designated Bridges,有的翻译为指定交换机
  3. Bridge Protocol Data Units (BPDU)网桥协议数据单元。可以比喻为“相互比较实力”的协议。只有掌门能发,已经隶属于某个掌门的交换机只能传达掌门的指示。
  4. Priority Vector,优先级向量。可以比喻为实力 (值越小越牛)。实力就是一组 ID 数目,[Root Bridge ID, Root Path Cost, Bridge ID, and Port ID]。先看 Root Bridge ID。拿出老大的 ID 看看,发现掌门一样,那就是师兄弟;再比 Root Path Cost,也即我距离我的老大的距离,也就是拿和掌门关系比,看同一个门派内谁和老大关系铁;最后比 Bridge ID,比我自己的 ID,拿自己的本事比。

STP工作流程

网络协议复习笔记(五)从物理层到MAC层
一般网管会为越好的交换机分配越高的优先级,一开始大家都是掌门,但各个交换机并不知道互相的实力,需要发送BPDU来进行比武,赢了当掌门,输了就是小弟。只有掌门可以继续发BPDU,小弟在收到BPDU时进行转发。比如5-6会形成一个以5为掌门的小门派,各个小门派继续进行合并。

  1. 掌门遇到掌门:假设5遇到1,于是5带领所有小弟归顺。
  2. 同门相遇:假如 1 和 6 相遇。6 原来就拜在 1 的门下,只不过 6 的上司是 5,5 的上司是 1。1 发现,6 距离我才只有 2,比从 5 这里过来的 5(=4+1)近多了,那 6 就直接汇报给我吧。于是,5 和 6 分别汇报给 1。6相当于升职了。
  3. 掌门遇到其他帮派小弟:小弟拿本帮掌门和这个掌门比较,赢了,这个掌门拜入门来。输了,会拜入新掌门,并且逐渐拉拢和自己连接的兄弟,一起弃暗投明。例如,2 和 7 相遇,虽然 7 是小弟,2 是掌门。就个人武功而言,2 比 7 强,但是 7 的掌门是 1,比 2 牛,所以没办法,2 要拜入 7 的门派,并且连同自己的小弟都一起拜入。
  4. 不同帮派小弟相遇:各自拿掌门比较,输了的拜入赢的门派,并且逐渐将与自己连接的兄弟弃暗投明。

如何解决广播问题和安全问题

就算交换机比 Hub 智能一些,但是还是难免有广播的问题。
有两种分的方法:

1、物理隔离

每个部门设一个单独的会议室,对应到网络方面,就是每个部门有单独的交换机,配置单独的子网,这样部门之间的沟通就需要路由器了。路由器在第三层。
问题在于,有的部门人多,有的部门人少。人少的部门慢慢人会变多,人多的部门也可能人越变越少。如果每个部门有单独的交换机,口多了浪费,少了又不够用。

2、虚拟隔离

也就是VLAN虚拟局域网。使用 VLAN,一个交换机上会连属于多个局域网的机器,那交换机怎么区分哪个机器属于哪个局域网呢?
网络协议复习笔记(五)从物理层到MAC层
只需要在原来的二层的头上加一个 TAG,里面有一个 VLAN ID,一共 12 位,12 位可以划分 4096 个 VLAN。
当这个交换机把二层的头取下来的时候,就能够识别这个 VLAN ID。只有相同 VLAN 的包,才会互相转发,不同 VLAN 的包,是看不到的。
对于交换机来讲,每个 VLAN 的口都是可以重新设置的。一个财务走了,把他所在座位的口从 VLAN 30 移除掉,来了一个程序员,坐在财务的位置上,就把这个口设置为 VLAN 10,十分灵活。
将两个交换机连接起来的口应该设置成什么 VLAN 呢?对于支持 VLAN 的交换机,有一种口叫作 Trunk 口。
解决这么多交换机连接在一起的问题,办公室的问题似乎搞定了。然而这只是一般复杂的场景,

小结

  • MAC 层是用来解决多路访问的堵车问题的
  • ARP 是通过吼的方式来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存
  • 交换机是有 MAC 地址学习和记忆能力
  • 其实还有一个RAPR协议,能够通过MAC求IP
  • 当交换机的数目越来越多的时候,会遭遇环路问题,让网络包迷路,这就需要使用 STP 协议,通过华山论剑比武的方式,将有环路的图变成没有环路的树,从而解决环路问题。
  • 交换机数目多会面临隔离问题,可以通过 VLAN 形成虚拟局域网,从而解决广播问题和安全问题。