JohnLui:程序员,Swift Contributor,正在写《iOS 可视化编程与 Auto Layout》。
网络七层、四层模型
四层模型是 TCP/IP 技术的实际模型,七层模型是标准化组织制订的理论规范,两者有如上图的对应关系。人们很少用到七层模型,一般常见的地方在负载均衡时:四层负载均衡和七层负载均衡,分别指的是在 TCP 和 HTTP 层面进行负载均衡。
以太网
历史沿革
Robert Metcalfe 在施乐帕洛阿尔托研究中心时发表了一篇名为《以太网:局域计算机网络的分布式包交换技术》的文章,随后获得了“具有冲突检测的多点数据通信系统”的专利,并于 1979 年创办了 3COM 公司,对,就是 H3C 的美国母亲。
以太网是什么
以太网是一系列标准,其显著特点是构造简单,可以多台计算机组成一个网络,虽然 IBM 的令牌环网理论上要比以太网优越,但是以太网胜在简单、便宜。实践证明,真正的计算机网络并不需要令牌环网的高吞吐量优势,而是更低价格更强扩展能力。以太网早期支持不同规格的同轴电缆和双绞线,最终双绞线技术胜出:可以实现更高速率。什么是同轴电缆呢?有线电视网络用的就是同轴电缆,起定义就是字面意思:两根线的轴是同一条线。
本文中我们只讨论最新的八芯双绞线实现的千兆网络,这也是当下最常见的局域网技术。
双绞线是什么
双绞线也是字面意思:八根铜线两两绞在一起,目的是尽量减少电磁干扰:电磁干扰是阻碍双绞线获得 10G、40G、100G 等更高带宽最大的阻力,当下更高速度的网络一般用光纤技术来实现。
八芯双绞线就是八根铜线绞在一起,双绞线里的铜线和 USB 线里的铜线没有任何区别,都是铜线,只有电导率、粗细、电阻 等基础电气属性的不同。
以太网传递的是什么
以太网传递的是电信号:一股又一股的电流而已。跟供电铜线不同的是,以太网协议确定了一系列的约定,让一股又一股的电流能够传递信息:0 或者 1。
一个简化模型
六类双绞线实现千兆以太网时的工作频率是 250MHz,即每根铜线中的电流一秒钟都会改变 250 000 000 次,每一次都会携带一个电压:我们假设为 -5V 和 0V,代表 0 和 1,那么只需要四根铜线就能够实现 1Gbps 的单向带宽,另外四根用于实现反向 1Gbps 的带宽。
超五类双绞线实现千兆以太网时只有 125MHz 的频率,它采用一个电压表示两个位的方法来实现千兆网络:即一个电压代表 00 或 01 或 10 或 11。我们假设这四个电压分别是: -5V -3.5V -2V 0V。这样每两根铜线合在一起恰好可以实现 250Mbps 的双向传输(还需要两端设备支持串扰消除技术),八根铜线恰好实现 1Gbps 双向带宽。
一个关于计算机的常识
计算机内部许多电路的电压都不是标准的,例如主板标准电压为 12V,一般情况下实际电压都会稍高于这个数字。所以才有了各种纠错方法来保证信息传递的正确。
小结论
超五类双绞线和六类双绞线虽然都能实现千兆网络,但是我们可以看出两者是截然不同的两种技术:六类双绞线由于本身电气性能有很大优势,所以需要的设备更简单,抗干扰能力更强,而超五类可以说是“勉强”实现了千兆网络,抗干扰能力差;如果电压因为电路问题或者受到外部干扰而产生了一些变化,很可能导致数据传输错误导致校验失败而引发重新传输,结果就是实测带宽无法达到千兆。我就遇到过超五类双绞线因为线材受损导致网络连接速度在 1G 和 100M 之间跳跃,最终导致网卡自动关闭的事情。
结论
全双工千兆以太网,实现的是每秒钟在网线的两个方向分别传递 1G 个的 0 或 1。
交换机
交换机是一种十分重要的设备,可以让多台计算机连入同一个局域网。以太网技术胜出的一大原因就是基于交换机技术可以实现低成本和高可靠性的网络扩展:对于早期计算机网络来说,没有什么比低成本地将新的计算机接入网络更激动人心的事情了。
以太网交换机典型的网络拓扑为树状:每一台交换机都可以下接 N 台计算机或交换机。
交换机工作在 OSI 模型的第二层(数据链路层),TCP/IP 模型的第一层。
局域网典型拓扑图以太网帧解读
物理层中的二进制数据会以上图中的格式进行组织,其基本单元被称为 MAC帧。
每一台交换机的 MAC帧 的长度都是一个固定的数值,多台交换机不一定一致
目的地址和源地址均为 MAC 地址,典型代表为 AA:BB:CC:DD:EE:FF,共有六段,每一段是一个两位的 16 进制数,十进制表示为 0-255,恰好可以用八位二进制数表示。所以 MAC 地址的长度为 8*6 = 48 位。
类型字段采用 16 位二进制表示更上一层的网络层数据包的类型:IP、ARP、ICMP 等。
在理解网络的任何时候都要用位来表示数据,字节在这里毫无意义,只会干扰我们的大脑。
交换机工作原理
MAC帧 中没有 ip 的概念,只有 MAC 地址的概念。
假设局域网中一台 ip 为 192.168.1.2 的电脑(插在交换机接口 1 上)希望打开 192.168.1.3 这台服务器(插在交换机接口 2 上)上的网页,就会发生如下事情:
192.168.1.2 向局域网发出一个 ARP 包,询问拥有 192.168.1.3 这个 ip 的计算机的 MAC 地址,假设为 AA:BB:CC:DD:EE:FF
将 TCP 数据包放在 IP 数据包的内部,再将 IP 数据包放在 MAC帧 内部,通过 1 口将 MAC帧 发给了交换机
交换机拿到数据后,并不知道 AA:BB:CC:DD:EE:FF 这个 MAC 地址的设备插在自己的哪一个网口上,于是将这个 MAC帧 发送到除了 1 口之外的所有口上
2 口回应了,这时交换机就完成了第一次的自学习:AA:BB:CC:DD:EE:FF 这个 MAC 地址的设备插在自己的 2 口上,下次再转发就只发给 2 口就行了
交换机会自己维护一个 MAC地址 - 物理接口 对应关系的缓存表,并在一定时间内刷新这张表,重新缓存
世界上每一块网卡都有一个全世界唯一的 MAC 地址,由厂商向 IEEE 购买,再预先烧录进芯片里:每个有线网卡、每台路由器、每个无线网卡甚至每个蓝牙芯片都有自己的唯一 MAC 地址。
三层交换机
现在的网络组建特别是大型网络组建时,三层交换机会有很多应用,其本质是一种拥有部分路由器功能的高级交换机,感兴趣的同学可以自己了解。
结论
交换机第一次规范了双绞线中传递的 0、1 所代表的含义,这个就叫做“协议”。至此,交换机已经实现了局域网内数据的传递,可以由任意一台设备向任意一台设备传递二进制数据。