软件工程师需要了解的网络知识:从铜线到HTTP(二)—— 以太网与交换机

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帧。

  1. 每一台交换机的 MAC帧 的长度都是一个固定的数值,多台交换机不一定一致
  2. 目的地址和源地址均为 MAC 地址,典型代表为 AA:BB:CC:DD:EE:FF,共有六段,每一段是一个两位的 16 进制数,十进制表示为 0-255,恰好可以用八位二进制数表示。所以 MAC 地址的长度为 8*6 = 48 位。
  3. 类型字段采用 16 位二进制表示更上一层的网络层数据包的类型:IP、ARP、ICMP 等。

在理解网络的任何时候都要用位来表示数据,字节在这里毫无意义,只会干扰我们的大脑。

交换机工作原理

MAC帧 中没有 ip 的概念,只有 MAC 地址的概念。

假设局域网中一台 ip 为 192.168.1.2 的电脑(插在交换机接口 1 上)希望打开 192.168.1.3 这台服务器(插在交换机接口 2 上)上的网页,就会发生如下事情:

  1. 192.168.1.2 向局域网发出一个 ARP 包,询问拥有 192.168.1.3 这个 ip 的计算机的 MAC 地址,假设为 AA:BB:CC:DD:EE:FF
  2. 将 TCP 数据包放在 IP 数据包的内部,再将 IP 数据包放在 MAC帧 内部,通过 1 口将 MAC帧 发给了交换机
  3. 交换机拿到数据后,并不知道 AA:BB:CC:DD:EE:FF 这个 MAC 地址的设备插在自己的哪一个网口上,于是将这个 MAC帧 发送到除了 1 口之外的所有口上
  4. 2 口回应了,这时交换机就完成了第一次的自学习:AA:BB:CC:DD:EE:FF 这个 MAC 地址的设备插在自己的 2 口上,下次再转发就只发给 2 口就行了
  5. 交换机会自己维护一个 MAC地址 - 物理接口 对应关系的缓存表,并在一定时间内刷新这张表,重新缓存

MAC 地址

世界上每一块网卡都有一个全世界唯一的 MAC 地址,由厂商向 IEEE 购买,再预先烧录进芯片里:每个有线网卡、每台路由器、每个无线网卡甚至每个蓝牙芯片都有自己的唯一 MAC 地址。

三层交换机

现在的网络组建特别是大型网络组建时,三层交换机会有很多应用,其本质是一种拥有部分路由器功能的高级交换机,感兴趣的同学可以自己了解。

结论

交换机第一次规范了双绞线中传递的 0、1 所代表的含义,这个就叫做“协议”。至此,交换机已经实现了局域网内数据的传递,可以由任意一台设备向任意一台设备传递二进制数据。

原文发布于微信公众号 - 前端黑板报(FeHeiBanBao)

原文发表时间:2018-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

中国程序员容易发音错误的单词

1203
来自专栏Vamei实验室

协议森林05 我尽力 (IP协议详解)

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载。 在粗略了解了IP接力和IP地址后,我们再反过来,看一看IP...

2319
来自专栏张善友的专栏

Entity Framework Code First 支持存储过程

存储过程(Stored Procedure)不仅仅是将多得简直荒唐的业务逻辑塞入数据库的一种方式;它还是避免将多得简直荒唐的存储逻辑塞入应用程序层(applic...

2038
来自专栏SDNLAB

SDN中”软件”如何定义”网络”

SDN(Software Defined Network)软件定义网络,字面释义都说了是“软件”来定义“网络”,但有心之人会想:这个“软件”到底是如何定义了我们...

3767
来自专栏点滴积累

OpenStack(企业私有云)万里长征第一步——安装

一、前言 单位新进了十几台服务器,建了一个高标准的一体化机房,状似刘姥姥进大观园的我,从机房规划到企业私有云搭建一一重头学来,除了机房泥墙其他基本都涉猎到了。 ...

5466
来自专栏JadePeng的技术博客

HTML5录音控件

最近的项目又需要用到录音,年前有过调研,再次翻出来使用,这里做一个记录。 HTML5提供了录音支持,因此可以方便使用HTML5来录音,来实现录音、语音识别等功能...

1.5K5
来自专栏Python研发

网络知识 -- 第二部

  核心层:核心层的功能主要是实现骨干网络时间的优化传输,骨干层设计任务的重点通常是冗余能力,可靠性和高速的传输.

1083
来自专栏Vamei实验室

协议森林02 小喇叭开始广播 (以太网与WiFi协议)

“小喇叭开始广播啦”,如果你知道这个,你一定是老一辈的人。“小喇叭”是五十年代到八十年代的儿童广播节目。在节目一开始,都会有一段这样的播音:“小朋友,小喇叭开始...

19710
来自专栏木宛城主

SharePoint 2013 Step by Step—— 为终端用户提供故障恢复的解决方案 Part I

Disaster Recovery,我把他直译"故障恢复",或者也可以翻译成 "灾难复原 "。光字面意思就可以领会到,当SharePoint Server发生了...

1967
来自专栏张善友的专栏

在MongoDB中实现聚合函数

随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据。传统方法存储和处理数据的成本将会随着数据量增长而显...

2957

扫码关注云+社区

领取腾讯云代金券