计算机网络(二)物理层数据链路层
(物理层、数据链路层... 这些分层并不是一种协议,而是一种理论框架)
一、物理层
物理层的核心任务是处理原始比特流在物理传输介质上的传输。
主要任务
物理层的主要任务可以概括为以下几点,它们是确保数据能在网络硬件间可靠传输的基础:
定义传输介质 物理层定义了数据传输所使用的物理介质,例如双绞线、光纤、同轴电缆或无线电波。它规定了这些介质的物理特性和连接方式,确保不同设备能够通过统一的介质进行通信。
定义数据传输单元 物理层的数据传输单元是比特(bit),也就是0和1。它不关心这些比特代表什么信息,只负责将它们以电信号、光信号或无线电信号的形式进行传输。
信号编码 物理层负责将数字比特流(0和1)转换为适合在物理介质上传输的物理信号。这个过程称为编码(Encoding)。例如,它可能用不同的电压水平、光脉冲或无线电频率来表示0和1。
规定接口特性 物理层规定了网络接口的机械、电气、功能和规程特性。
机械特性:指明接口的物理形状、尺寸、引脚数量等,例如RJ-45接口。
电气特性:定义信号的电压范围、阻抗等,确保信号的有效传输。
功能特性:定义接口引脚的作用,例如哪些引脚用于发送数据,哪些用于接收数据。
规程特性:定义信号在何时发送、何时接收,以及如何建立和终止连接。
同步机制 物理层必须确保发送方和接收方在比特级上同步,即接收方能正确识别每个比特的开始和结束。这通常通过时钟同步信号或特定的编码方式实现
传输方式
根据数据流动的方向,物理层主要有三种传输模式:
单工(Simplex):数据只能单向传输。例如,广播电台向听众发送信号,但听众无法向电台发送信号。
半双工(Half-Duplex):数据可以双向传输,但不能同时进行。例如,对讲机通信,一方说话时,另一方只能听,反之亦然。
全双工(Full-Duplex):数据可以双向同时传输。这是目前最常见的模式,例如电话或计算机之间的通信
重要设备
物理层涉及的设备都是用来连接和传输信号的:
网线:如双绞线、光纤等,是传输信号的物理介质。
集线器(Hub):一种简单的网络设备,将所有连接到它的设备连接在一起。它不区分数据流向,收到的信号会广播给所有设备。
中继器(Repeater):用于放大并重新发送信号,以延长信号的传输距离,克服信号衰减问题。
数据交换
1. 电路交换 (Circuit Switching)
原理: 电路交换在数据传输之前,必须在源节点和目的节点之间预先建立一条专用的、物理的通信路径(电路)。这条电路一旦建立,就会被独占,即使没有数据传输,其他用户也无法使用。数据传输完成后,电路才被释放。
特点:
面向连接: 必须先建立连接,再传输数据。
独占资源: 一旦连接建立,带宽固定且独占。
高效率: 传输过程中没有排队和时延,时延小且稳定。
资源利用率低: 即使没有数据传输,电路也处于占用状态。
应用场景: 传统的电话网络是典型的电路交换系统。当你拨打电话时,网络会为你和对方建立一条独占的线路,保证通话质量。
2. 报文交换 (Message Switching)
原理: 报文交换不需要预先建立连接。源节点将完整的数据块(称为报文)封装好,并附上目的地址,然后将其发送给第一个中间节点。每个中间节点接收到完整的报文后,会先存储下来,然后根据报文的目的地址,将其转发给下一个中间节点。
特点:
无连接: 不需要预先建立连接。
动态分配: 传输路径可以根据网络情况动态选择。
时延大: 报文在每个中间节点需要完整接收和存储,导致时延较大。
存储转发: 这是报文交换的核心特征,需要大量的存储空间。
应用场景: 报文交换在早期的电报网络中使用。它允许不同大小和格式的报文在网络中传输,但由于时延问题,已不适用于实时通信。
3. 分组交换 (Packet Switching)
原理: 分组交换是报文交换的改进版本,也是目前互联网的核心交换方式。它将一个完整的报文(或文件)分割成多个更小的、固定大小的数据块,称为分组(Packet)。每个分组都附有源地址和目的地址,然后被独立地发送到网络中。每个中间节点同样采用存储转发的方式,但由于分组很小,存储和转发的时延大大减少。
特点:
无连接: 像报文交换一样,不需要预先建立连接。
动态路由: 各个分组可以沿着不同的路径到达目的地。
高效率和灵活性: 资源被多个用户共享,提高了网络利用率。
需要重组: 由于分组可能乱序到达,目的节点需要对它们进行重新排序和组合。
应用场景: 互联网是典型的分组交换网络。你正在浏览的网页、发送的邮件,以及观看的视频,都是被分解成一个个分组,在网络中独立传输。
信道复用
是一种在同一条通信信道上同时传输多个独立信号的技术。它的核心思想是,将一个高速、大容量的信道(如一根光纤或一段无线频谱)划分为多个逻辑上独立的子信道,每个子信道可以传输一个单独的数据流,从而最大限度地利用信道资源。主要有以下四种方法
1. 频分复用(FDM)
频分复用(Frequency-Division Multiplexing)是一种基于频率划分的复用技术。
工作原理: FDM 将信道的总带宽划分为多个不重叠的频段。每个信号都被调制到一个特定的载波频率上,占据一个独立的频段。所有信号可以同时传输,因为它们在不同的频率的子信道上,彼此互不干扰。
应用场景: FDM 是模拟信号时代的主要复用技术。最典型的例子是广播电台和电视台。每个电台都使用一个特定的频率进行广播,你的收音机通过调频来接收目标电台的信号。
2. 时分复用(TDM)
时分复用(Time-Division Multiplexing)是一种基于时间划分的复用技术。
工作原理: TDM 将时间划分为一个个非常短的时间片,并按顺序将这些时间片分配给不同的信号。每个信号在分配给它的时间片内,可以独占整个信道的带宽。发送端会按时间片轮流发送来自不同信号的数据,接收端则根据时间片的顺序将数据还原。
应用场景: TDM 主要用于数字信号传输。例如,早期的数字电话系统就使用 TDM 技术,将多个通话的数字信号汇聚到一根线路上。
3. 码分复用(CDM)
码分复用(Code-Division Multiplexing)是一种基于编码划分的复用技术。它是一种更为复杂的复用技术,允许多个信号在同一时间、同一频率上进行传输。
工作原理: 每个信号在发送前都会与一个独特的、彼此正交的码序列(Code Sequence)进行编码。发送端将编码后的多个信号叠加起来,共同发送。接收端则使用相同的码序列对接收到的混合信号进行“解码”,从而分离出特定的信号。
应用场景: CDM 技术在第三代移动通信(3G)中得到了广泛应用。它能够有效利用频谱资源,并提供更高的通信容量。
4. 波分复用(WDM)
波分复用(Wavelength-Division Multiplexing)是光纤通信中的一种特殊复用技术,本质上是 FDM 在光域的实现。
工作原理: WDM 利用光纤的巨大带宽,将不同波长(即不同颜色)的激光作为独立的载波。每个波长都可以承载一个独立的数据流。发送端使用不同的光源来生成不同波长的光信号,然后通过一个复用器将它们汇聚到一根光纤中进行传输。接收端则使用一个解复用器将这些不同波长的光信号分离出来。
应用场景: WDM 是现代光纤通信的基石,特别是在骨干网络中。它使得一根光纤能够同时传输数以十亿甚至数万亿比特每秒的数据,极大地提高了光纤的传输容量。
带宽:
带宽(Bandwidth)在计算机网络中指的是数据传输通道的最大数据传输速率,通常以 比特每秒(bps) 为单位。它衡量的是在单位时间内,网络链接可以从一点传输到另一点的最大信息量。(带宽是一个容量概念,而不是速度概念)
波特率与比特率
码元(Baud)
码元是通信中携带信息的基本信号单元。一个码元可以承载一个或多个比特信息。
码元在传输过程中通常以特定的物理信号来表示,例如不同的电压电平、不同的光脉冲或不同的相位。
重要关系: 码元承载的比特数取决于调制技术。例如:
二进制调制: 1个码元携带1个比特(2种信号状态,2¹=2)。
四进制调制: 1个码元携带2个比特(4种信号状态,2²=4)。
十六进制调制: 1个码元携带4个比特(16种信号状态,2⁴=16)。
调制:用模拟信号代表比特(数字信息01)。
比特率(Bit Rate)也称为数据传输速率,是指单位时间内传输的比特(bit)数量。比特是信息的基本单位,一个比特代表一个二进制位,即0或1。
波特率(Baud Rate),也称为码元速率,是指单位时间内传输的码元数量。它的单位是波特(Baud),即码元每秒。
二、数据链路层
数据链路层的核心任务是在物理层的提供的比特流基础上,提供可靠的数据传输,并确保数据能正确地从一个设备发送到另一个设备
封装成帧
数据链路层接收来自网络层的数据包(Packet),并在其头部和尾部添加控制信息,形成一个数据帧(Frame)。这些控制信息包括帧头(Header)和帧尾(Trailer),用于标记一个帧的开始和结束,方便接收方正确地识别和提取数据。中间承载来自网络层的数据报文(通常是IP数据报)。
错误检验
由于物理信道可能会受到噪声干扰,导致数据在传输过程中出现错误。数据链路层通过在帧中添加冗余校验码(如 CRC 循环冗余校验),来检测传输错误。一旦检测到错误,接收方会采取相应措施(如请求重传)
1. 奇偶校验(Parity Check)
奇偶校验是一种最简单、最古老的数据差错检测技术。它通过在一个数据序列中添加一个额外的**奇偶校验位(Parity Bit)**来确保整个数据块中“1”的数量是偶数或奇数。【常用协议:串行通信】
原理:
偶校验(Even Parity): 发送方计算数据中“1”的数量。如果数量为偶数,校验位设置为0;如果为奇数,校验位设置为1。目的是使总的“1”数量为偶数。
奇校验(Odd Parity): 发送方计算数据中“1”的数量。如果数量为奇数,校验位设置为0;如果为偶数,校验位设置为1。目的是使总的“1”数量为奇数。
检测能力: 奇偶校验只能检测出奇数个比特错误。如果数据中发生了偶数个比特错误,它将无法被检测出来,因为总的“1”的数量不会改变。例如,一个数据块中的两个“1”都变成了“0”,总的“1”数量仍为偶数,校验通过。
2. 校验和(Checksum)
校验和是一种比奇偶校验更复杂的差错检测方法。它通过将数据块中的所有数据进行累加求和,然后将结果(通常是求和的补码)作为校验和附加在数据块的末尾。【常用协议:TCP/UDP】
原理:
发送方将数据块视为一系列无符号整数,对它们进行求和。
对求和结果进行取反或取补码操作,得到校验和。
将校验和附加在数据块末尾发送。
接收方对接收到的整个数据块(包括校验和)进行求和。如果没有错误,结果应该是一个固定的值(如全1)。
检测能力: 校验和能检测出大部分的单比特和多比特错误,但对于一些特定的多比特错误(如数据块中两个位置的数值互换)则无法检测。
3. CRC (Cyclic Redundancy Check) 循环冗余校验
CRC是一种功能最强大、应用最广泛的差错检测技术。它基于二进制多项式除法的数学原理。
【常用协议:Ethernet、Wi-FI、HDLC】
原理:
发送方将数据块视为一个高阶的二进制多项式。
选择一个预先定义的生成多项式(Generator Polynomial)。
将数据多项式除以生成多项式,得到的余数就是 CRC 校验码。
将 CRC 校验码附加在数据末尾发送。
接收方对接收到的数据(包括校验码)再次进行多项式除法。如果没有错误,余数应该为零。
检测能力: CRC 具有强大的差错检测能力。它能百分之百地检测出所有奇数个比特错误、所有两个比特错误,以及所有长度小于等于 CRC 校验码长度的突发错误(Burst Error)。
介质访问控制子层(MAC,Media Access Control)
MAC 子层负责处理对共享介质的访问。它定义了如何使用 MAC 地址来识别设备,并协调多个设备在共享信道上发送数据时的次序,以避免冲突。相关协议如下:
1. ALOHA 协议
ALOHA 协议是最早的介质访问控制协议之一,其思想非常简单粗暴。
工作原理: 在 ALOHA 协议中,任何一个设备想要发送数据时,都可以立即发送,无需检测信道是否空闲。发送后,设备会监听信道,如果在一小段时间内没有收到来自目的地的确认(ACK),就认为数据发生了冲突,然后等待一个随机时间后再次发送。
特点:
简单: 实现非常简单,不需要复杂的硬件。
效率低: 由于不进行任何冲突检测,冲突的概率很高,导致信道利用率极低(大约18.4%)。
类型:
纯 ALOHA: 最原始的版本,只要有数据就立即发送。
时隙 ALOHA: 对时间进行了同步,将时间划分为固定的时间片。设备只能在时间片的开始时发送数据,这在一定程度上减少了冲突。(信道理论最大利用率约36.8%)
2. CSMA 协议(载波监听多路访问)
CSMA (Carrier Sense Multiple Access) 协议在 ALOHA 的基础上进行了改进,引入了载波监听(Carrier Sense)机制。
工作原理: 在发送数据前,设备会先监听信道。如果信道是空闲的,它就立即发送;如果信道是忙碌的,它就会等待。
特点:
监听信道: 避免了在信道忙碌时发送数据,大大减少了冲突的可能性。
仍然存在冲突: CSMA 无法完全避免冲突。因为信号在信道上传播需要时间,可能出现这样的情况:两个设备同时侦听到信道空闲,并在很短的时间内同时发送数据,导致冲突。
3. CSMA/CD 协议(带冲突检测的载波监听多路访问)
CSMA/CD (Carrier Sense Multiple Access with Collision Detection) 协议是 CSMA 协议的增强版,专为有线局域网(如以太网)设计。
工作原理: CSMA/CD 在 CSMA 的基础上增加了“冲突检测”(Collision Detection)功能。
监听信道: 像 CSMA 一样,发送前先监听。
边发送边检测: 在发送数据的同时,设备会持续监听信道。
冲突处理: 如果在发送过程中检测到数据冲突,所有涉及冲突的设备会立即停止发送,并向信道发送一个“阻塞信号”,通知其他设备也停止发送。
随机退避: 所有设备会等待一个随机时间后,再次尝试发送数据。
特点:
实时检测: 能够快速检测到冲突并停止发送,避免了无谓的传输,提高了信道利用率。
物理限制: 适用于有线网络,因为有线网络可以很方便地检测电压变化来判断冲突。
4. CSMA/CA 协议(带冲突避免的载波监听多路访问)
CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) 协议是 CSMA 协议的另一个版本,主要用于无线局域网(如 Wi-Fi)。
工作原理: 无线电波无法像有线网络那样轻松地进行冲突检测,因为设备在发送时难以同时接收信号。因此,CSMA/CA 采取了“冲突避免”(Collision Avoidance)的策略,而不是事后检测。
监听信道: 发送前先侦听,如果信道空闲,不立即发送。
发送通知: 为了避免“隐蔽终端”问题(设备 A 和 C 互相听不到对方,但都能听到设备 B,导致冲突),设备 A 在发送前会先向信道发送一个“请求发送”(RTS)帧,并等待 B 发送一个“清除发送”(CTS)帧。
发送数据: 只有收到 CTS 帧后,A 才开始发送数据,而其他设备在收到 RTS 或 CTS 帧后,都会在一定时间内保持静默。
特点:
避免而非检测: 在传输前通过握手来“预约”信道,从根本上避免了冲突。
开销大: RTS/CTS 握手过程增加了额外的开销,使得 CSMA/CA 的效率通常低于理想情况下的 CSMA/CD。
以太网
以太网是一种广泛应用于有线局域网(LAN)的通信协议标准,定义了物理层和数据链路层的实现方式。(IEEE 802.3标准)
这个标准详细定义了以太网的方方面面,包括:
数据帧格式:如何封装数据(MAC地址、FCS等)。
介质访问控制协议:如何使用 CSMA/CD 解决冲突。
物理层规范:如何使用不同的电缆(同轴电缆、双绞线)和光纤进行通信,以及相应的传输速率(如10 Mbps、100 Mbps、1 Gbps)。
1. 经典以太网帧格式(Ethernet Frame Format)
以太网传输的基本单位是以太网帧(Ethernet Frame)。每个帧都包含控制信息和实际数据,其经典格式如下:
前导码 (Preamble) 和帧开始定界符 (SFD): 这两个字段共8个字节,用于同步发送方和接收方的时钟。它们告诉接收设备,一个新帧即将到来。(不被算在一帧中)
目的MAC地址 (Destination MAC Address): 6个字节,用于指定数据帧的接收者。
源MAC地址 (Source MAC Address): 6个字节,用于指定数据帧的发送者。
类型/长度字段 (Type/Length): 2个字节,用于指示该帧封装的是哪种高层协议(如IPv4、IPv6)或帧的数据长度。
数据字段 (Data): 46到1500个字节,实际承载上层协议(如IP数据包)的数据。
帧校验序列 (FCS): 4个字节,通常使用 CRC(循环冗余校验)。接收方利用这个字段来检测数据在传输过程中是否出现错误。
2. MAC 地址(Media Access Control Address)
一个标准的 MAC 地址由 48 位二进制数组成,通常用 12 个十六进制数表示,例如 00-1B-44-11-3A-B7
。
这个 48 位地址被分为两部分:
组织唯一标识符(OUI - Organizationally Unique Identifier):
占用前 24 位(即前 6 个十六进制数)。
由 IEEE 负责分配给网卡制造商。
比如,
00-1A-2B
可能是思科(Cisco)的标识符。这部分可以识别出网卡的生产商。
制造商分配的扩展标识符:
占用后 24 位(即后 6 个十六进制数)。
由制造商自己为每一块网卡分配,以确保在全球范围内的唯一性。
判断 MAC 地址是单播、组播还是广播,看的是 MAC 地址的第 8 位(第七个比特)
单播(Unicast)
单播是“一对一”的通信。一个数据帧从一个发送方发送给一个特定的接收方。
MAC 地址:MAC 地址的第 8 位为0。
数据流向:数据只发给一个目标设备。
工作模式:交换机收到一个单播数据帧后,会查找自己的 MAC 地址表,将数据精准地转发到目标设备所在的端口。
例子:你在电脑上访问一个网站,你的电脑会向网关发送一个以网关 MAC 地址为目的地址的数据帧。这就是一个典型的单播过程。
组播(Multicast)
组播是“一对多”的通信。一个数据帧从一个发送方发送给一组特定的接收方,而不是所有设备。
MAC 地址:MAC 地址的第 8 位为1。
数据流向:数据只发给加入该组播组的设备。
工作模式:交换机能够识别组播地址,并将数据帧只转发到加入该组播组的端口,避免了向所有设备广播,从而节省了带宽。
例子:一个视频会议系统,发送方发送的视频流只被会议参与者的设备接收。所有参与者的设备都加入了同一个组播组,从而实现高效的视频传输。
广播(Broadcast)
广播是“一对所有”的通信。一个数据帧从一个发送方发送给局域网中的所有设备。
MAC 地址:目的 MAC 地址是特殊的全 F 地址(
FF:FF:FF:FF:FF:FF
)。数据流向:数据会被发送给网络中的每一个设备。
工作模式:交换机或集线器收到一个广播数据帧后,会将它转发到除了接收端口之外的所有端口。
例子:ARP(地址解析协议)就是使用广播机制。当你需要知道某个 IP 地址对应的 MAC 地址时,你的设备会发送一个广播帧,询问“谁是这个 IP 地址的主人?”网络中的所有设备都会收到这个请求,而只有拥有该 IP 地址的设备才会做出回应。
虚拟局域网(VLAN)
虚拟局域网(VLAN)是一种在交换机上实现的逻辑网络划分技术。它允许将一个物理上互联的局域网,划分为多个相互隔离的、独立的广播域。
作用:
隔离广播域: 减少不必要的广播流量,提高网络性能。
增强安全性: 隔离不同部门或不同性质的设备,防止未经授权的访问。
简化管理: 即使设备物理位置不同,也可以将其划分到同一个逻辑网络中。
VLAN通过在以太网帧中添加一个VLAN标签来实现,这个标签包含了VLAN ID等信息,用于识别数据帧所属的VLAN。
VLAN 接口:Access 与 Trunk
在配置支持VLAN的交换机时,需要定义接口的类型。
Access 接口(访问接口)
定义:一个 Access 接口只能属于且承载一个 VLAN 的数据。
用途:主要用于连接终端设备,如计算机、服务器、打印机或 IP 电话等。这些设备通常不理解 VLAN 标签。
工作原理:
接收:当一个不带 VLAN 标签的数据帧进入 Access 接口时,交换机会自动为它打上该接口所属 VLAN 的标签。
发送:当交换机需要用 Access 接口发送数据帧时,它会剥离该帧上的 VLAN 标签,以确保发送给终端设备的数据是无标签的,因为终端设备无法识别 VLAN 标签。
Trunk 接口(干道接口)
定义:一个 Trunk 接口可以承载多个 VLAN 的数据。它是跨 VLAN 通信的桥梁。
用途:用于连接两个支持 VLAN 的交换机或连接交换机与路由器。它允许不同 VLAN 的数据流通过同一物理链路传输。
工作原理:
传输:Trunk 接口传输的数据帧都带有 VLAN 标签。交换机根据帧中的标签信息(如 IEEE 802.1Q 标签),来判断该帧属于哪个 VLAN。
封装/解封装:当来自一个 VLAN 的数据帧进入 Trunk 接口时,该接口会确保帧上已打好正确的 VLAN 标签。当这些带标签的帧到达另一个交换机后,Trunk 接口会正确地解析标签,并根据标签将数据转发到对应的 VLAN。
广域网
与局域网主要用于连接单个建筑物内的设备不同,广域网通常用于连接不同地区的局域网或城域网,实现远距离通信。其数据链路层使用的是点对点信道,主要使用的协议有PPP、LCP、NCP
PPP 协议 (Point-to-Point Protocol)
PPP 协议是一种在两台网络设备之间建立直接连接,并进行数据传输的数据链路层协议。它最常见的应用场景是,你的电脑通过电话线或光纤,连接到你的 ISP,从而接入广域网。
工作原理: PPP 协议是一种面向连接的协议。在数据传输前,它会经历几个阶段:
链路控制协议 (LCP):LCP 负责建立、配置和测试数据链路。它会协商双方的传输参数,如最大数据单元大小(MTU)。
身份验证:PPP 支持身份验证协议(如 PAP 或 CHAP),以验证用户的身份。
网络控制协议 (NCP):NCP 负责配置网络层协议,例如,它会分配一个动态的 IP 地址给你的设备,以便你能在互联网上进行通信。
特点:
面向连接:为数据传输提供可靠的链路。
灵活性:支持多种网络层协议,如 IPv4 和 IPv6。
错误检测:提供数据校验功能,确保数据传输的正确性。
物理层/数据链路层相关内容后续会补充在这篇文章中
以上, 跟着光。