计算机网络之网络接口层

前言

  由于计算机网络知识如果用一篇博客来写,篇幅就会非常长,我将通过TCP/IP四层协议的形式进行连载计算机网络系列的文章,即会把计算机网络分为网络接口层、网络层、传输层和应用层的顺序来写,希望大家可以多多支持。

计算机网络概述

什么是计算机网络

  计算机网络主要由一些通用的、可编程的硬件互连而成,通过这些硬件,可以传送不同类型的数据,并且可以支持广泛和日益增长的应用。计算机网络的不是软件概念,还包含硬件设备,计算机网络不仅仅是信息通信,还可以支持广泛的应用。

计算机网络的分类

  按网络的作用范围,可以分为广域网(WAN)、城域网(MAN)、局域网(LAN),其范围如下:

分类 英文 范围 区域
广域网 WAN(Wide Area Network) 几十到几千公里 跨省、跨国
城域网 MAN(Metro. Area Network) 5KM-50KM 城市间
局域网 LAN(Local Area Network) 1KM以内 地区内

  按网络的使用者,可以分为公用网络和专用网络

计算机网络的层次结构

  为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了”开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。

  OSI欲成为全球计算机都遵循的标准,由于OSI在市场化过程中困难重重,TCP/IP在全球范围成功运行,使得OSI最终并没有成为广为使用的标准模型。可能是OSI的专家缺乏实际经验,OSI标准制定周期过长,按OSI标准生产的设备无法及时进入市场,OSI模型设计的并不合理,一些功能在多层中重复出现等原因造成的。除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:

计算机网络的性能指标

bit Byte KB MB GB TB PB EB
名字 比特位 字节 千字节 兆字节 吉字节 太字节 拍字节 艾字节
比例 8bits 1024B 1024KB 1024MB 1024GB 1024TB 1024PB
常见设备 门电路 寄存器 高速缓存 内存/硬盘 硬盘 云硬盘 数据仓库

  计算机网络中的数据传输速率单位是:bps=bit/s。为什么电信拉的100M光纤,测试峰值速度只有12M每秒?因为网络常用单位为(Mbps),100M/s = 100Mbps = 100Mbit/s= (100/8)MB/s=12.5MB/s
  计算机网络的性能指标有时延和往返时间RTT。时延包括发送时延、排队时延、传播时延和处理时延。\(发送时延 = \frac{数据长度(𝑏𝑖𝑡)}{发送速率(𝑏𝑖𝑡/𝑠)}\),发送速率(𝑏𝑖𝑡/𝑠)受限于计算机网卡;\(传播时延 = \frac{传输路径距离}{传播速率(𝑏𝑖𝑡/𝑠)}\),传播速率受限于传输介质;排队时延是指数据包在网络设备中等待被处理的时间;处理时延是指数据包到达设备或者目的机器被处理所需要的时间,总时延 = 发送时延 + 排队时延 + 传播时延 + 处理时延。RTT(Route-Trip Time)是评估网络质量的一项重要指标,RTT表示的是数据报文在端到端通信中的来回一次的时间,通常使用ping命令查看RTT。

物理层概述

物理层的作用

  激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器。常见的传输数据的物理媒体分为有限传输和无线传输,有线传输如:双绞线、同轴电缆以及光纤等,无线传输如红外线、激光等。即主要是用来连接不同的物理设备,传输比特流。记住物理层中数据传输的基本单位是比特(bit)

信道的基本概念

  信道是往一个方向传送信息的媒体,一条通信电路包含一个接收信道和一个发送信道。但发送和接收会不会冲突?冲突了怎么办呢?所以信道分为:单工通信信道、半双工通信信道和全双工通信信道。单工通信信道只能一个方向通信,没有反方向反馈的信道,例如有线电视、无线电收音机等等;半双工通信信道是指双方都可以发送和接收信息,但不能双方同时发送,也不能同时接收;全双工通信信道是指双方都可以同时发送和接收信息。
  如果两个电脑需要进行通信,则在他们之间会有一条通信电路,通信电路里面就可能有发送信道和接收信道, 当有很多台计算机进行连接时,就会有很多发送信道和接收信道了,并且在很多时候,它们也不是处于活跃的状态,很多时候都是处于关机状态,这样就会导致信道的利用效率并不高,因此就提出了分用和复用技术。通过该技术提高信道的利用率。

  常见的分用-复用技术有频分复用、时分复用、波分复用和码分复用等。

数据链路层概述

  数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。为达到这一目的,数据链路必须具备一系列相应的功能,主要有:如何将数据组合成数据块,在数据链路层中称这种数据块为帧(frame),帧是数据链路层的传送单位;如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配;以及在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

封装成帧

  “帧”是数据链路层数据的基本单位,发送端在网络层的一段数据前后添加特定标记形成“帧”,接收端根据前后特定标记识别出“帧”。

  帧首部和尾部是特定的控制字符(特定比特流)。如果数据里面恰好有这些比特流咋办?例如帧首部的比特流是SOH: 00000001 帧尾部的比特流是EOT: 00000100,然后在传输的数据中出现了与帧首部或者帧尾部相同的比特流,此时应该如何处理?

透明传输

  “透明”在计算机领域是非常重要的一个术语,“一种实际存在的事物却又看起来不存在一样”,“即是控制字符在帧数据中,但是要当做不存在的去处理”

差错检测

  物理层只管传输比特流,无法控制是否出错,数据链路层负责起“差错监测”的工作

奇偶校验码

  如果传输的比特流中1的个数是奇数,奇偶校检位就是1,如果传输的比特流中1的个数是偶数,奇偶校校检位就是0。如果经过传输后得到的比特流中的1的个数是偶数,但奇偶校检位是1,则说明比特流发生了错误。

通过这种方法进行差错检测的话,如果出错两位,奇偶校验码就校测不到错误。

循环冗余校验码CRC

  一种根据传输或保存的数据而产生固定位数校验码的方法,检测数据传输或者保存后可能出现的错误,生成的数字计算出来并且附加到数据后面。模“2”除法是二进制下的除法,与算术除法类似,但除法不借位,实际是“异或”操作。

  循环冗余校验码CRC: 1.选定一个用于校验的多项式G(x),并在数据尾部添加r个0;2.将添加r个0后的数据,使用模“2”除法除以多项式的位串;3.得到的余数填充在原数据r个0的位置得到可校验的位串。

例1:使用CRC计算101001的可校验位串
第一步:选定一个用于校验的多项式G(x),并在数据尾部添加r个0
\(G(x) = x^3 + x^2 + 1 = 1*x^3 + 1*x^2 + 0*x^1 + 1*x^0\) \(\Rightarrow\) 二进制位串:1101,最高阶为3
由于最高阶为3,则在数据末尾添加三个0:\(1101 \Rightarrow 1101 000\)
第二步:将添加r个0后的数据,使用模“2”除法除以多项式的位串

第三步:得到的余数填充在原数据r个0的位置得到可校验的位串
由第二步可知,余数为 001,替换后得到:\(101001 000 \Rightarrow 101001 001\)
最后:接收端接收的数据除以G(x)的位串,根据余数判断出错,余数为零,则接受到的数据没有出错,否则,接收到的数据就是有问题的。

  CRC的错误检测能力与位串的阶数r有关,数据链路层只进行数据的检测,不进行纠正。数据链路层会直接将错误的数据丢弃掉。这里的多项式G(x)并不是随便写的,我们可以从维基百科看到一些常用的G(x)

MTU

  最大传输单元MTU(Maximum Transmission Unit),数据链路层的数据帧也不是无限大的,数据帧长度受MTU限制,MTU受限于底层物理电路的硬件特性,数据帧过大或过小都会影响传输的效率。以太网MTU一般为1500字节。路径MTU由链路中MTU的最小值决定。

以太网协议

  在了解以太网协议之前,我们需要先知道MAC地址,MAC地址是物理地址,或者说是硬件地址,每一个设备都拥有唯一的MAC地址,MAC地址共48位,使用十六进制表示,例如:30-B4-9E-ED-85-CA,查看本机所有物理设备的MAC地址:ipconfig /all。在了解什么是MAC地址后,再来看看以太网协议是什么。
  以太网(Ethernet)是一种使用广泛的局域网技术,以太网是一种应用于数据链路层的协议,使用以太网可以完成相邻设备的数据帧传输。
以太网的数据格式:

目的地址 源地址 类型 帧数据 CRC
占用的字节数 6 6 2 46~1500 4

MAC地址表:是一个具体的映射

MAC地址 硬件接口
31-B4-9E-ED-85-CA 接口1
32-B4-9E-ED-85-CB 接口2
33-B4-9E-ED-85-CC 接口3

MAC地址表实际上是由路由器所具有的,当我们的MAC地址表中,如果MAC地址表中每个MAC地址都能映射到具体的硬件接口,相邻的多台计算机进行网络通信时,数据链路层的工作步骤如下:

A通过网卡发出数据帧,数据帧到达路由器,路由器取出前6字节,路由器匹配MAC地址表,找到对应的网络接口,路由器往该网络接口发送数据帧。

如果MAC地址表中C的MAC地址映射不到具体的硬件接口:

E检查MAC地址表,发现没有C的信息,E将广播A的数据包到除A以外的端口,E将收到来自B、C的回应,并将地址记录。
由于以太网协议只能完成相邻设备的数据帧传输,那如何实现跨设备传输数据呢?这就需要我们去学习网络层中的知识了。

总结:计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就是我们的语言,我们大天朝地广人多,地方性语言也非常丰富,而且方言之间差距巨大。A地区的方言可能B地区的人根本无法接受,所以我们要为全国人名进行沟通建立一个语言标准,这就是我们的普通话的作用。同样,放眼全球,我们与外国友人沟通的标准语言是英语,所以我们才要苦逼的学习英语。