因特网

因特网(Internet)作为当今信息社会的核心基础设施,已深度融入人类社会的各个层面,成为推动全球化、促进信息流通与知识共享的关键力量。它并非单一网络,而是由全球范围内数以亿计的设备和网络通过标准化协议互联而成的庞大系统。


网络(Network)是最基础的单元,由若干节点(Node)和连接这些节点的链路(Link)构成。节点可以是计算机、服务器、交换机、路由器等设备,链路则包括有线(如光纤、双绞线)或无线(如Wi-Fi、微波)通信介质。网络的核心功能是实现节点间的数据传输与资源共享。
互连网(internetwork,简称 internet)是“网络的网络”(Network of Networks),指通过路由器等互联设备将多个异构网络连接起来,形成一个覆盖范围更广的复合网络。这里的“internet”为小写“i”,是一个通用术语,泛指任意多个网络通过任意协议互联的系统,其通信规则不固定。
因特网(Internet)则是特指当前全球最大、最开放的特定互连网络。其首字母“I”大写,是一个专有名词。因特网采用TCP/IP协议族作为统一的通信标准,确保全球设备能够互联互通。其前身可追溯至20世纪60年代美国的ARPANET项目。因此,因特网是互连网的一种具体实现,且是目前最成功、应用最广泛的实例。
万维网(简称Web)是运行在因特网这个基础设施之上的一项信息服务。它通过HTTP协议、HTML语言和URL地址,将全球无数的网页、图片、视频等资源通过超链接的方式连接起来,用户可以通过浏览器轻松访问。
概念 比喻 说明
网络 一条街道 连接了街道两旁的房屋(设备)
互连网 城市路网 由许多街道、立交桥连接而成
因特网 全球公路网 连接了全世界所有城市,有统一的交通规则(TCP/IP协议)
万维网 公路上的快递车 专门负责运输“网页”这种货物
其他网络 其他车辆 如邮政车(电子邮件)、油罐车(文件传输)等

发展阶段

因特网的发展大致经历了三个关键阶段,体现了从军事科研到全球普及的演进过程。


第一阶段:从单个网络ARPANET向互联网过渡(1969–1983年) 1969年,美国国防部高级研究计划署(ARPA)建立了ARPANET,最初连接了四所大学的计算机,采用分组交换技术,实现了数据的高效、可靠传输。这一阶段的核心目标是构建一个在部分节点失效时仍能维持通信的鲁棒网络。1983年,TCP/IP协议正式成为ARPANET的标准协议,标志着现代因特网的诞生,因为TCP/IP为不同网络间的互操作提供了统一基础。
第二阶段:三级结构因特网的形成(1985–1993年) 美国国家科学基金会(NSF)于1985年建立了NSFNET,采用主干网、地区网和校园/企业网的三级结构。NSFNET连接了全美主要高校和研究机构,迅速成为因特网的骨干。这一阶段推动了因特网在学术和科研领域的广泛应用,并逐步向非军事领域扩展。
第三阶段:多层次ISP结构的商业化因特网(1993年至今) 1990年代起,随着万维网(WWW)技术的诞生和普及,因特网进入大众化阶段。美国政府将主干网运营权移交私营公司,因特网开始商业化运作。互联网服务提供商(ISP)体系逐步建立,形成主干ISP、地区ISP和本地ISP的多层次结构。用户通过ISP接入因特网,ISP则通过IP地址分配、通信线路和网络设备提供服务。中国电信、中国联通、中国移动等是我国主要的ISP。这一阶段使因特网从科研工具转变为全球信息基础设施,催生了电子商务、社交媒体、云计算等全新业态。

多层次结构

ISP

ISP 是 Internet Service Provider 的缩写,中文全称是因特网服务提供商。简单来说,ISP 就是为你(无论是个人用户还是企业)提供“上网”服务的公司或机构。如果没有 ISP,你的电脑或手机就无法连接到全球互联网。


基础设施:ISP 投入巨资建设中转站、铺设光缆、租用国际信道,并购置大量的服务器和路由设备。
服务提供:普通用户无法直接连接国际互联网骨干网,必须通过 ISP 提供的接入服务(如宽带、光纤、4G/5G信号)才能进入互联网世界。
典型代表:在中国,最典型的 ISP 就是中国电信、中国联通、中国移动这三大基础运营商,以及长城宽带等二级运营商。

⭐⭐ 多层次 ISP 结构

多层次 ISP 结构是理解现代因特网如何运作的关键。它并非一个扁平的网络,而是一个由不同层级、不同规模的互联网服务提供商(ISP)通过商业协议连接而成的、类似金字塔的复杂生态系统。

第一层 ISP (Tier-1 ISP):全球骨干网

  • 角色:互联网的“洲际高速公路”。它们是金字塔的顶端,拥有覆盖全球或跨大洲的高速主干网络,包括大量的海底光缆。
  • 特点:
    • 全球覆盖:网络跨越多个国家和大洲。
    • 对等互联 (Peering):Tier-1 ISP之间通过免费的对等互联协议交换流量,它们无需向任何其他网络支付费用即可通达全球互联网。
    • 不服务终端用户:它们通常不直接为个人用户提供宽带服务,而是将带宽批发给下层的ISP。

第二层 ISP (Tier-2 ISP):区域/国家级网络

  • 角色:互联网的“国家级或省级公路”。它们是连接全球骨干网和本地网络的桥梁。
  • 特点:
    • 区域覆盖:通常覆盖一个国家或一个大的地理区域。
    • 混合模式:它们会向上层的Tier-1 ISP购买流量转接服务(Transit),以便访问全球互联网;同时,它们也会与其他Tier-2 ISP进行对等互联,以降低成本。
    • 承上启下:它们既为下层的Tier-3 ISP提供服务,也可能直接为大型企业客户提供接入。

第三层 ISP (Tier-3 ISP):本地接入商

  • 角色:互联网的“最后一公里”或“社区街道”。它们是直接面向终端用户的“入口”。
  • 特点:
    • 本地覆盖:服务范围通常是一个城市、一个社区或一个特定的住宅区。
    • 纯粹购买:它们不拥有骨干网,必须向上层的Tier-2或Tier-1 ISP购买所有互联网接入服务。
    • 直面用户:我们家庭、学校、小企业通常就是从这一层ISP购买宽带、光纤或移动数据服务。

IXP

互联网交换点(IXP)是物理基础设施,可以理解为互联网的“大型交通枢纽”。

  • 功能:IXP为多个不同的ISP提供了一个集中的物理平台,让它们能够高效地进行对等互联,直接交换流量。
  • 意义:通过IXP,本地的ISP可以直接与内容提供商或其他本地ISP连接,而无需将所有流量都绕道昂贵的上层骨干网。这极大地降低了成本,减少了网络延迟,并优化了流量路径。

ICP

以Google、Netflix、阿里云、腾讯云等为代表的大型内容提供商(ICP)正在重塑传统的ISP金字塔结构。

  • 自建网络:这些巨头为了提供更快的访问速度和更好的用户体验,投入巨资建设了自己的全球私有网络(骨干网和数据中心)。
  • 绕过层级:它们通过在各大ISP的网络内部署缓存服务器(CDN),或直接与各级ISP(甚至在IXP)进行对等互联,将自己的内容“推”到离用户最近的地方。
  • 影响:当你观看Netflix的视频时,数据可能直接从部署在你本地ISP机房里的服务器发出,而无需经过复杂的Tier-1骨干网,从而实现了极低的延迟和流畅的播放。

标准化工作

因特网的成功离不开其开放、透明的标准化机制。标准化工作由国际性组织主导,确保协议的兼容性与演进能力。

因特网协会(ISOC)负责整体协调与推动因特网发展。其下设三个主要机构:

  • 因特网体系结构委员会(IAB):负责协议架构的监督与长期技术方向。
  • 因特网工程部(IETF):聚焦中短期工程问题,主导协议的开发与标准化。
  • 因特网研究部(IRTF):从事长期性、理论性研究。

因特网在制定其标准上的一个很大的特点是面向公众。

  • 因特网所有的RFC(Request For Comments)技术文档都可从因特网上免费下载: http://www.ietf.org/rfc.html
  • 任何人都可以随时用电子邮件发表对某个文档的意见或建议。

技术文档(RFC,Request for Comments)正式标准的制定需经历四个阶段:因特网草案(非RFC)、建议标准(成为RFC)、草案标准、因特网标准。值得注意的是,并非所有RFC都会成为正式标准,仅少数经过广泛验证和共识的文档最终升格为标准。这种开放、渐进的机制保障了因特网的灵活性与稳定性。

因特网的组成

从结构上看,因特网可分为边缘部分和核心部分,二者协同实现通信与资源共享。


边缘部分由所有连接在因特网上的主机(Host)组成,包括个人计算机、智能手机、服务器、物联网设备等。这是用户直接接触的部分,用于运行应用程序、发送数据、访问资源。边缘部分采用客户-服务器(C/S)或对等连接(P2P)等模式进行通信。
核心部分由大量网络和连接这些网络的路由器构成,负责为边缘部分提供连通性和数据交换服务。路由器根据IP地址转发数据包,确保信息从源主机准确送达目的主机。核心部分采用分组交换技术,将数据分割为小包,通过最优路径传输,提高网络资源利用率。

网络相关概念

计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。简单来说,计算机网络就是“互连的、自治的计算机集合”。

  • 互连:计算机之间通过有线(如光纤、双绞线)或无线(如Wi-Fi、蓝牙)介质连接,能够交换数据。
  • 自治:网络中的每台计算机都是独立的,拥有自己的硬件和操作系统,不依赖其他计算机就能独立运行。早期的“大型机+哑终端”系统因为终端没有自治能力,所以不算真正的计算机网络。
  • 集合:至少需要两台计算机。现代定义中,这个“集合”还包括了智能手机、传感器、智能家电等所有具备计算能力的通用可编程设备。

组成部分

一个完整的计算机网络系统通常由以下三部分组成:

  • 硬件:网络的物理基础。包括终端设备(电脑、手机)、网络设备(路由器、交换机、防火墙)以及传输介质(网线、光纤)。
  • 软件:网络的使用载体。包括网络操作系统(Windows Server, Linux)、网络管理软件以及各种网络应用(浏览器、即时通讯软件)。
  • 协议:网络的“通用语言”。规定了数据交换的规则、格式和时序。最核心的是TCP/IP协议族,它保证了全球不同厂商的设备能够互联互通。

核心功能

计算机网络不仅仅是连接,它主要实现了以下五大功能:

  1. 数据通信:最基础的功能,实现计算机之间的数据传输(如微信聊天、文件传输)。
  2. 资源共享:共享硬件(打印机)、软件(云应用)和数据(数据库、网盘)。
  3. 分布式处理:将复杂任务拆分,交给网络中的多台计算机并行处理。
  4. 负载均衡:将工作负载分摊到多台服务器上,避免单机过载,提高系统稳定性。
  5. 提高可靠性:当网络中某台计算机或链路出现故障时,可以通过其他路径或设备继续工作。

交换方式

网络通信交换方式指的是数据如何在通信网络中从发送端传输到接收端。

电路交换

电路交换(Circuit Switching)是一种“面向连接”的交换方式。在数据传输开始之前,必须在发送方和接收方之间建立一条专用的物理通信路径(即“电路”)。这条路径在整个通信期间会被独占,直到连接被释放。

工作过程:建立连接 → 传输数据 → 释放连接。这就像打电话,拨号时就是在“建立连接”,通话期间这条线路被你独占,挂断电话就是“释放连接”。

优点:

  • 实时性强:由于资源独占,数据传输的时延是固定的,非常小,且不会出现排队等待或丢包现象。
  • 传输可靠:通信路径稳定,数据按序到达,不会被其他用户的数据干扰。

缺点:

  • 资源利用率极低:这是其最致命的缺点。在通话或通信的间隙(例如双方都不说话时),信道处于空闲状态,但仍被独占,无法被其他用户使用,造成巨大浪费。
  • 灵活性差:连接一旦建立,通信速率和带宽就固定了,无法根据实际数据量动态调整。
  • 不适合突发数据:因特网上的数据(如浏览网页、发送邮件)通常是突发性的,时快时慢。电路交换的固定带宽特性无法高效适配这种需求。

分组交换

分组交换(Packet Switching)是因特网的核心交换方式,它是一种“无连接”的、基于“存储-转发”机制的交换技术。它将数据分割成一个个带有地址信息的小数据块(即“分组”),然后独立地在网络中传输。

  • 数据分割与封装:源主机将一整块数据(如一个文件)切割成许多较小的、长度固定的“分组”(Packet)。每个分组都包含一个“首部”(Header)和一个“数据部分”(Payload)。首部中包含了源地址、目的地址、序号等关键控制信息。
  • 存储-转发 (Store-and-Forward):网络中的路由器接收到一个完整的分组后,会先将其“存储”在缓冲区,然后检查分组首部,根据目的地址查询路由表,确定下一跳的路径,最后再将该分组“转发”出去。
  • 独立路由:同一个文件的不同分组可以选择不同的路径在网络中传输,最终在目的主机处根据序号重新组装成原始数据。

优点:

  • 资源利用率极高:链路带宽被所有用户的分组动态共享。当一个用户没有数据发送时,链路资源可以立即被其他用户的分组使用,避免了电路交换的资源浪费。
  • 灵活性强:无需预先建立连接,可以随时发送数据。网络可以根据拥塞情况为每个分组动态选择最佳路径。
  • 适合突发数据:完美契合因特网数据“突发”的特性,能够高效处理时快时慢的数据流。

缺点:

  • 时延:每个分组在路由器处都会产生“存储-转发”时延、排队时延等,总时延通常比电路交换大。
  • 拥塞与丢包:当网络流量过大时,路由器的缓冲区可能溢出,导致分组被丢弃。
  • 需要额外开销:每个分组都需要携带首部信息,增加了传输的额外负担。

报文交换

报文交换(Message Switching)是分组交换的前身,其工作原理与分组交换类似,也是基于“存储-转发”机制。但是报文交换不对数据进行分割,而是将整个消息(Message)作为一个完整的单元进行存储和转发。

缺点:由于报文可能非常大,这会占用路由器大量的缓冲空间,导致转发时延很长,对网络设备的存储能力要求极高。因此,在现代计算机网络中,纯粹的报文交换已基本被更高效的分组交换所取代。

相关对比

特性 电路交换 分组交换 报文交换
连接方式 面向连接 无连接 无连接
资源分配 独占式,固定分配 共享式,动态分配 共享式,动态分配
数据单元 比特流 分组 报文
转发机制 直通 存储-转发 存储-转发
主要优点 实时性好,时延小且固定 资源利用率高,灵活性好 无需建立连接,支持多播
主要缺点 资源利用率低,不灵活 时延较大,可能拥塞丢包 时延大,对设备要求高
典型应用 传统电话网络 因特网 早期电报网络

网络分类

计算机网络种类繁多,我们可以从覆盖范围、使用者、交换技术、拓扑结构等多个维度进行分类。

按覆盖范围分类

这是根据网络跨越的地理区域大小来划分的,范围从小到大依次为:

类型 全称 覆盖范围 典型场景与特点
个域网 PAN 约10米以内(个人) 个人设备互联,如蓝牙耳机连手机。
局域网 LAN 1公里左右(楼宇/校园) 家庭WiFi、公司内网。特点是速率高、延迟低、通常由单位自主管理
城域网 MAN 5-50公里(城市) 城市骨干网,连接多个局域网,如城市政务网、有线电视网。
广域网 WAN 几十到几千公里(跨国/洲际) 因特网的核心部分,负责长距离传输,通常由电信运营商建设

按使用者分类

根据网络是“公用”还是“私用”来区分:

  • 公用网:由电信公司(如中国电信、联通)建造运营,向公众开放,只要按规定缴费即可使用。
  • 专用网:由特定部门(如军队、铁路、电力、银行)自建自用,不对外提供服务,安全性极高。

按交换技术分类

这是指数据在网络中传输和转发的机制:

  • 电路交换网络:建立专用路径,通信期间独占资源(如传统电话网)。
  • 报文交换网络:以完整报文为单位进行存储转发(早期电报)。
  • 分组交换网络:将数据切分为小的“分组”独立传输。这是现代互联网的主流技术,资源利用率高。

按拓扑结构分类

指网络中设备的物理或逻辑连接形状:

  • 总线型:所有设备连在一根总线上。优点是省线便宜;缺点是总线断了全网瘫痪。
  • 星型:所有设备连到中央设备(交换机)。优点是易管理,单台电脑坏了不影响全网;缺点是中央设备一旦故障,全网瘫痪。
  • 环型:设备连成一个圈。优点是控制简单;缺点是断一处全环断。
  • 网状型:节点间有多条路径相连。优点是可靠性极高(一条路断了走另一条);缺点是结构复杂、成本高,常用于广域网核心层。

按传输介质分类

  • 有线网络:使用双绞线、光纤等物理线路。
  • 无线网络:利用无线电波(Wi-Fi)、红外线或微波传输。

性能指标

计算机网络的性能指标是衡量网络质量、诊断网络问题的核心依据。无论是你日常上网时的“卡顿”体验,还是企业级的网络规划,都离不开对这些指标。

⭐⭐ 速率 (Speed / Data Rate)

这是指数据在信道上传输的快慢,也叫数据率或比特率。

  • 单位:比特每秒(b/s 或 bps)。常见的有 kb/s、Mb/s、Gb/s。
  • 关键坑点:运营商说的“100M宽带”指的是 100 Mb/s(小写b),而你下载软件显示的通常是 MB/s(大写B)。
  • 换算公式:1 Byte = 8 bit。100 Mb/s 的宽带,理论最高下载速度约为 12.5 MB/s。

⭐⭐ 带宽 (Bandwidth)

在计算机网络中,带宽表示网络通信线路传送数据的最高能力。

  • 单位:与速率相同,也是 b/s。
  • 注意:带宽是理论上的“最大值”,不代表你实际跑到的速度。
  • 如果把网络比作高速公路,带宽就是车道的数量。车道越多(带宽越大),单位时间内能通过的车辆(数据)就越多。

⭐⭐ 吞吐量 (Throughput)

  • 这是指单位时间内通过某个网络(或接口)的实际数据量。吞吐量 ≤ 带宽。
  • 虽然高速公路有120km/h的限速和8条车道(带宽),但因为红绿灯、收费站或堵车(路由器性能瓶颈、网络拥塞),实际每小时通过的车流量(吞吐量)可能只有设计能力的70%。

⭐⭐ 时延 (Delay / Latency)

指数据从网络一端传送到另一端所需的总时间。这是影响游戏、视频通话体验的关键指标。它由四部分组成:

  • 发送时延:把数据“推”到线路上所需的时间,公式:数据长度 / 发送速率。
  • 传播时延:数据在物理线路(光纤/铜缆)上“跑”的时间,公式:信道长度 / 电磁波速度。
  • 处理时延:路由器检查包头、查表转发的时间,由路由器性能决定。
  • 排队时延:数据包在路由器缓冲区排队等待的时间,由网络拥塞程度决定。
电磁波传播速率(m/s)
自由空间 3 x 10^8 m/s
铜线 2.3 x 10^8 m/s
光纤 2.0 x 10^8 m/s

⭐⭐ 抖动 (Jitter)

抖动指的是时延的变化。

  • 抖动对实时业务(如语音通话、视频会议)影响最大。如果数据包一会儿快一会儿慢(抖动大),会导致声音断断续续或画面卡顿。
  • 通常通过设置“抖动缓冲区”来平滑数据,但这会稍微增加总时延。

⭐⭐ 时延带宽积 (Bandwidth-Delay Product)

  • 这是一个复合指标,计算公式为:传播时延 × 带宽。
  • 如果把链路看作一根管道,带宽是管径,时延是管长,那么时延带宽积就是这根管道的容积。它表示链路中此时此刻能容纳的最大比特数。

⭐⭐ 往返时间 (RTT, Round-Trip Time)

RTT 是指一个数据包从发送端发出,到达接收端,接收端处理后再返回一个确认包给发送端,这整个过程所花费的总时间。很多人误以为 RTT 只是信号在光纤里跑两趟的时间,其实它包含更多部分:

  • RTT ≈ 2 × 传播时延 + 处理时延 + 排队时延
  • 传播时延:信号在物理线路(光纤、网线)上传输的时间(去程 + 回程)。
  • 处理时延:接收端(服务器)收到数据后,分析数据、生成确认包所需的时间。
  • 排队时延:数据包在路由器中排队等待转发的时间(如果网络拥堵,这部分时间会变长)。
  • 发送时延:虽然通常忽略不计,但确认包本身也需要时间“推”入链路。
RTT 数值 体验评价 典型场景
< 50ms 极佳 本地连接、光纤宽带。玩竞技游戏(FPS/MOBA)非常流畅
50 - 100ms 良好 访问国内跨省网站、普通网游。网页加载无明显停顿
100 - 200ms 一般 跨国访问。浏览网页能感觉到轻微的加载时间
> 300ms 卡顿 卫星链路或严重拥堵。视频通话可能音画不同步,网页打开缓慢

⭐⭐ 利用率 (Utilization)

利用率是指网络信道(或整个网络)在单位时间内被使用的程度,通常用百分比表示。

  • 利用率 = 信道的最大带宽 / 实际通过的流量 × 100%
  • 如果一条路有 10 条车道(带宽),平时只有 2 条车道有车(利用率 20%),高峰期 9 条车道都有车(利用率 90%)。
  • 利用率并不是越高越好。当信道利用率较低时,时延很小;但当利用率超过 50% 后,随着利用率继续上升,数据包在路由器排队等待的时间(排队时延)会呈指数级增长。
  • 信道利用率:指某一条具体的链路(如你家到路由器的网线,或公司出口的光纤)的繁忙程度。
  • 网络利用率:指全网络中所有信道利用率的加权平均值。

⭐⭐ 丢包率 (Packet Loss Rate)

指在传输过程中丢失的数据包占总发送数据包的比例。

  • 通常是因为网络拥塞导致路由器缓冲区溢出,或者线路质量差。
  • 少量的丢包TCP协议可以重传,但高丢包率会导致网速急剧下降(因为TCP会误以为网络拥塞而降低发送速度),视频通话则会出现马赛克。

网络分层模型

在网络发展过程中,诞生了三种主要的体系结构模型。

特性 OSI 七层模型 TCP/IP 四层模型 五层原理体系结构
地位 理论标准(法律上的国际标准) 事实标准(全球互联网的核心) 教学标准(折中方案)
特点 理论完整,但过于复杂,未商业化普及 简洁实用,基于实践经验总结 结合了OSI的理论清晰度和TCP/IP的实用性
层次 物理层 → 数据链路层 → 网络层
→ 运输层 → 会话层 → 表示层 → 应用层
网络接口层 → 网络层 → 运输层 → 应用层 物理层 → 数据链路层
→ 网络层 → 运输层 → 应用层

五层原理体系结构

目前大学教材和大多数技术面试中,通常采用五层原理体系结构来进行讲解,因为它既保留了底层硬件的细节(物理层+链路层),又符合互联网的实际应用逻辑。网络层级介绍,以及对应层级所使用的网络协议。

物理层

  • 核心任务:在物理传输介质(如双绞线、光纤、无线电波)上透明地传输比特流(0和1)。
  • 关键功能:它不关心数据的含义,只关心电气特性、机械特性(接口形状)、功能特性和规程特性。
  • 典型设备/协议:网卡、集线器、中继器;双绞线、光纤、Wi-Fi物理信号。

数据链路层

  • 核心任务:在相邻节点(直连的两个设备)之间可靠地传输帧。
  • 关键功能:
    • 封装成帧:把网络层传下来的数据包加上首部和尾部。
    • 物理寻址:使用MAC地址来标识网络中的每一台设备。
    • 差错检测:使用CRC(循环冗余校验)检查数据是否在传输中损坏。
  • 典型设备/协议:交换机、网桥;以太网协议、Wi-Fi协议、PPP协议。

网络层

  • 核心任务:为主机之间提供逻辑通信,负责分组的转发和路由选择。
  • 关键功能:
    • 逻辑寻址:使用IP地址来标识全球网络中的主机。
    • 路由选择:通过路由协议(如OSPF, BGP)计算数据包从源到目的地的最佳路径。
  • 典型设备/协议:路由器;IP协议(IPv4/IPv6)、ICMP(Ping命令用的)、ARP。

运输层

  • 核心任务:负责进程到进程(端到端)的通信。
  • 关键功能:
    • 复用与分用:通过端口号区分同一台电脑上的不同应用程序(如浏览器和微信)。
    • 可靠传输:提供TCP协议,确保数据无差错、不丢失、按序到达。
    • 尽力而为传输:提供UDP协议,追求速度,允许少量丢包(如视频会议)。
  • 典型协议:TCP(可靠,面向连接)、UDP(不可靠,无连接)。

应用层

  • 核心任务:直接为用户的应用程序提供网络服务,定义应用进程间交换信息的规则。
  • 典型协议:HTTP/HTTPS(网页浏览)、SMTP/POP3(电子邮件)、FTP(文件传输)、DNS(域名解析)

网络分层的必要性

  • 🧩 模块化与简化设计:面对异构的硬件平台、复杂的物理介质以及指数级增长的设备规模,网络通信面临着巨大的复杂性。分层采用了“分而治之”的策略,将庞大的通信过程拆解为多个相对独立、功能专一的子模块(层级)。
  • 🔗 独立性与灵活扩展:分层模型通过“信息隐藏”和标准化的接口,实现了各层之间的解耦。每一层只需调用下层提供的服务,而无需了解其具体实现细节。
  • 🔍 易于故障排查与维护:当网络通信出现问题时,工程师可以逐层排查,快速将问题隔离在特定的层次。例如,网站访问不了,可以迅速判断是底层的网线松动(物理层)、IP地址配置错误(网络层),还是服务器程序崩溃(应用层)。
  • 🌐 促进标准化与互操作性:分层架构明确了每一层的功能边界和交互接口(契约约束),这极大地促进了国际标准化工作。只要遵循同一层的标准协议(如以太网标准、TCP/IP协议),不同厂商生产的路由器、交换机、服务器和终端设备就能无缝协同工作。

体系结构中的专用术语

实体

  • 实体:任何可发送或接收信息的硬件或软件进程。
  • 对等实体:收发双方相同层次中的实体。

协议

  • 协议:控制两个对等实体进行逻辑通信的规则的集合。
  • 协议的三要素
    • 语法:定义所交换信息的格式。
    • 语义:定义收发双方所要完成的操作。
    • 同步:定义收发双方的时序关系。

服务

  • 服务:在协议的控制下,两个对等实体间的逻辑通信使得本层能够向上一层提供服务。
    • 要实现本层协议,还需要使用下面一层所提供的服务。
    • 协议是“水平的”,服务是“垂直的”
    • 实体看得见相邻下层所提供的服务,但并不知道实现该服务的具体协议。也就是说,下面的协议对上面的实体是”透明”的。
  • 服务访问点:在同一系统中相邻两层的实体交换信息的逻辑接口,用于区分不同的服务类型。
    • 数据链路层的服务访问点为帧的“类型”字段。
    • 网络层的服务访问点为IP数据报首部中的“协议字段”。
    • 运输层的服务访问点为“端口号”。
  • 服务原语:上层使用下层所提供的服务必须通过与下层交换一些命令,这些命令称为服务原语。
  • 协议数据单元PDU:对等层次之间传送的数据包称为该层的协议数据单元。
  • 服务数据单元SDU:同一系统内,层与层之间交换的数据包称为服务数据单元。
    • 多个SDU可以合成为一个PDU;一个SDU也可划分为几个PDU;

网络传输过程

网络传输的整个过程,可以形象地比作一次精密的“快递寄送”流程。当你在浏览器输入一个网址(如 www.example.com)并按下回车时,数据在发送端会经历一次严密的“层层打包(封装)”,通过互联网传输后,在接收端再经历“层层拆包(解封装)”,最终还原出网页内容。

📦 发送端

数据从你的电脑发出前,会从上到下穿越各个网络层级,每一层都会给数据贴上专属的“快递面单”(头部信息)。

  • 应用层(准备货物):浏览器生成一段 HTTP 请求数据(比如“请给我 example.com 的首页”),这是最原始的“货物”。
  • 传输层(贴上分拣码):TCP 协议将大块数据切分成小段,并加上 TCP 头部(包含源端口和目标端口)。此时的数据包被称为数据段(Segment)。TCP 就像一位负责任的快递员,通过“三次握手”确保连接可靠,并保证货物不丢失、按序到达。
  • 网络层(填写物流地址):IP 协议在数据段外面加上 IP 头部(包含你电脑的源 IP 地址和网站的服务器目标 IP 地址)。此时的数据包被称为数据包(Packet)。IP 协议就像物流总调度,只负责根据 IP 地址规划路线,不保证一定送达。
  • 数据链路层(装入运输箱):以太网协议再加上包含 MAC 地址(物理硬件地址)的头部和尾部校验码。此时的数据包被称为数据帧(Frame)。MAC 地址负责在相邻的两个设备(比如你的电脑到家里的路由器)之间进行精准投递。
  • 物理层(装车发货):最后,完整的数据帧被转换成二进制的比特流(0和1),通过网线变成电脉冲,或通过 Wi-Fi 变成无线电波,正式发射出去。

🚚 路由转发

你的数据离开家后,会经过运营商、骨干网等无数个路由器。路由器是工作在网络层的“物流转运中心”。

  • 在这个过程中,有一个极其关键的细节:IP 地址全程不变,MAC 地址逐跳更新。
  • 每经过一个路由器,路由器会拆开外层的“运输箱”(数据链路层帧头),查看里面的“物流地址”(IP 头部)。
  • 确认下一站的方向后,路由器会重新封装一个新的“运输箱”(换上下一跳设备的 MAC 地址),然后继续转发。
  • 这个“拆箱 -> 看 IP -> 换 MAC -> 封箱”的过程会在全球的路由器之间接力数十次,直到到达目标服务器所在的局域网。

🎁 接收端

当电信号到达目标服务器(如百度的服务器)后,服务器开始自底向上“拆快递”。

  • 物理层:网卡接收电信号,还原成二进制比特流。
  • 数据链路层:检查 MAC 地址是否匹配,匹配则剥掉帧头,将数据包交给上一层。
  • 网络层:检查 IP 地址,确认是发给自己的,剥掉 IP 头部,将数据段交给上一层。
  • 传输层:根据端口号找到对应的服务器程序(如 Web 服务),如果是 TCP 协议,还会检查数据是否完整、按序,如有丢失会要求重传。
  • 应用层:服务器程序(如 Nginx/Apache)拿到最原始的 HTTP 请求,开始处理业务,生成网页 HTML 数据。

获取反馈

  • 接收端处理完成发送端的请求,会生成相应的数据(网页)
  • 按照完全相反的流程(接收端变为发送端,发送端成为接收端),再次封装成数据包,通过互联网传回你的电脑。
  • 你的浏览器收到后,解析 生成的数据(HTML 和 CSS),最终将精美的网页渲染在你的屏幕上。

物理层

在计算机网络中,物理层的基本概念可以简单概括为“信号和介质”,主要负责在物理传输媒体上透明地传输原始的比特流(Bit)。

  • 物理层不关心比特流(即一连串的0和1)的具体含义,它的任务仅仅是把这些比特流从一个节点传送到另一个节点。
  • 数据单位:比特(Bit)。
  • 信号转换:计算机中的0和1无法直接在网线或空气中传输,物理层负责将这些数字比特转换为适合在介质上传输的物理信号(如电信号、光信号或电磁波)。

接口特性

为了让不同厂商生产的设备(比如一台惠普的电脑和一个思科的路由器)能够顺利连接,物理层制定了严格的四大特性标准:

  • 机械特性:规定了物理连接器的形状、尺寸、引脚数量和排列等(例如我们常见的网线水晶头 RJ45 接口)。
  • 电气特性:规定了传输信号时的电压范围、阻抗匹配、传输速率和距离限制等(例如多少伏特代表1,多少伏特代表0)。
  • 功能特性:规定了某条线上出现的某一电平电压的具体意义(例如某根引脚是用来发送数据,还是用来接收数据)。
  • 过程特性:规定了建立、维持和释放物理连接时,各条信号线的工作顺序和时序关系。

传输媒体

物理层屏蔽了底层传输介质的差异,常见的传输方式包括:

  • 导引型(有线):双绞线(如Cat6网线)、同轴电缆、光纤(单模/多模)、电力线。
  • 非导引型(无线):无线电波(如Wi-Fi)、微波、红外线、可见光等。

传输方式

在计算机网络物理层中,数据的传输方式主要可以从数据排列方式、同步方式以及通信方向这三个维度来划分。

📏 按数据排列方式划分

这两种方式的核心区别在于:数据是“排队走”还是“并排走”。

  • 串行传输 (Serial Transmission)
    • 原理:数据在一条通信线路上,按顺序一位一位(bit by bit)地依次传输。
    • 特点:只需要一条传输线路,成本低,布线简单。虽然单次只传一位,但非常适合长距离通信,因为不易产生信号干扰和失真。
    • 常见应用:USB接口、SATA硬盘接口、以太网(网线)、光纤通信等。
  • 并行传输 (Parallel Transmission)
    • 原理:数据在多条并行的通信线路上,一次同时传输一组比特(例如8位、16位、32位等)。
    • 特点:传输速度理论上是串行传输的N倍(N为线路数量),但需要多条线路,成本高,且长距离传输时线路间容易产生干扰,因此通常只用于短距离通信。
    • 常见应用:计算机内部CPU与内存之间的数据总线、老式的打印机接口(LPT)。

⏱️ 按同步方式划分

这两种方式的核心区别在于:收发双方如何对齐时间,确保数据被正确识别。

  • 同步传输 (Synchronous Transmission)
    • 原理:发送方和接收方使用统一的时钟信号进行协调。数据以较大的数据块(帧)为单位,连续不断地以比特流形式发送,数据块之间没有间隔。
    • 特点:不需要为每个字符添加额外的起始和停止标记,传输效率高,适合高速、大批量的数据传输。但对硬件时钟的同步要求非常严格,实现成本较高。
    • 常见应用:现代高速网络(如以太网)、光纤通信。
  • 异步传输 (Asynchronous Transmission)
    • 原理:收发双方不需要统一的时钟。数据以字符(字节)为单位独立发送,每个字符前后都会加上起始位和停止位作为标记。
    • 特点:接收端通过识别起始位和停止位来确认数据的开始和结束。实现简单、成本低,但由于每个字符都带有额外的辅助位,传输效率相对较低。
    • 常见应用:早期的键盘、鼠标、串口通信(RS-232)。

↔️ 按数据流向划分

这三种方式的核心区别在于:数据能否双向流动,以及能否同时流动。

  • 单向通信 / 单工 (Simplex)
    • 解释:数据只能沿一个方向传输。通信双方中,一方固定为发送端,另一方固定为接收端,无法反向交互。
    • 应用:广播电台。电台只管发射信号,收音机只管接收信号,你无法通过收音机给电台发信息。
  • 双向交替通信 / 半双工 (Half-Duplex)
    • 解释:通信双方都可以发送和接收数据,但不能同时进行。同一时刻,信道只能在一个方向上传输数据,必须轮流交替使用。
    • 应用:对讲机。当你按住按钮说话时,对方只能听;你说完松开按钮,对方才能说话。双方不能同时讲话。
  • 双向同时通信 / 全双工 (Full-Duplex)
    • 解释:通信双方可以同时发送和接收数据。这通常需要两条独立的信道(物理上或通过技术手段分离),互不干扰。
    • 应用:打电话。你和对方可以同时说话,也能同时听到对方的声音,交流非常自然流畅。

编码与调制

在计算机网络物理层中,编码与调制是两个核心概念。简单来说,它们都是将数据(0和1)转换成能在物理介质上传输的信号的过程。两者的根本区别在于转换后的信号类型以及适用的传输信道:

  • 编码 (Encoding):将数字数据转换为数字信号(如高低电平),适用于数字信道(如网线、光纤)。
  • 调制 (Modulation):将数字数据转换为模拟信号(如连续的正弦波),适用于模拟信道(如电话线、无线电波/Wi-Fi)。

💻 编码

数字数据转换为数字信号,在局域网等数字信道中,我们需要用不同的电压电平或光脉冲来表示二进制的 0 和 1。常见的编码方式主要有以下几种:

  • 归零编码 (RZ, Return-to-Zero)
    • 原理:发送“1”时:产生一个正向脉冲(高电平),但在该码元时间结束前,电压会回到零电平。发送“0”时:通常保持零电平(无电压)。
    • 优点:自带同步时钟:这是归零编码最大的优势。由于每个“1”都有从“高”到“零”的跳变,接收端很容易利用这个下降沿来校准时钟,从而实现收发双方的同步。由于信号总是回到零基准线,接收端判断信号是否存在(即判断是1还是0)相对简单。
    • 缺点:带宽占用大(效率低),因为每个码元都需要额外的时间回到零,导致信号变化的频率加快。为了传输同样的比特率,归零编码需要的带宽是不归零编码的两倍。抗干扰能力较弱,相比于差分编码等复杂技术,简单的归零编码更容易受到噪声的影响。
  • 不归零编码 (NRZ, Non-Return-to-Zero)
    • 原理:用高电平代表 1,低电平代表 0(或反之),在一个码元时间内电平不会回到零。
    • 优缺点:实现非常简单,编码效率高。但最大的缺点是无法自同步(如果传输一连串的 1 或 0,接收方无法确定一个码元的结束和下一个码元的开始),且存在直流分量,不适合长距离传输。
  • 曼彻斯特编码 (Manchester Encoding)
    • 原理:在每个码元的中间时刻都会发生电平跳变。例如,规定从高到低的跳变表示 1,从低到高的跳变表示 0。
    • 优缺点:中间的跳变既作为时钟信号(用于收发双方同步),又作为数据信号,因此具有良好的自同步能力且无直流分量。缺点是信号频率加倍,占用的带宽更宽,传输效率只有 50%。经典以太网(10BASE-T)就采用了这种编码。
  • 差分曼彻斯特编码 (Differential Manchester Encoding)
    • 原理:同样是每个码元中间都有跳变(用于同步),但数据的表示取决于码元开始处是否有电平跳变(例如,开始处有跳变表示 0,无跳变表示 1)。
    • 优缺点:具备自同步能力,且由于采用差分(比较前后变化),抗干扰能力比曼彻斯特编码更强,常用于令牌环网等场景。

📡 调制

数字数据转换为模拟信号,当我们需要通过电话线、无线电波(如 Wi-Fi、4G/5G)等模拟信道传输数字数据时,就需要通过改变高频载波信号(正弦波)的特征来表示 0 和 1。正弦波有三个基本特征:振幅、频率和相位。

  • 调幅 (AM / ASK 幅移键控)
    • 原理:通过改变载波的振幅来表示 0 和 1(例如,有载波/高振幅表示 1,无载波/低振幅表示 0)。
    • 特点:实现简单,但抗干扰能力最差,因为振幅很容易受到噪声和信号衰减的影响。
  • 调频 (FM / FSK 频移键控)
    • 原理:通过改变载波的频率来表示 0 和 1(例如,高频表示 1,低频表示 0)。
    • 特点:抗干扰能力比调幅强,但占用的带宽较大。
  • 调相 (PM / PSK 相移键控)
    • 原理:通过改变载波的初始相位来表示 0 和 1(例如,相位 0° 表示 0,相位 180° 表示 1)。
    • 特点:抗干扰能力强,占用带宽小,但实现相对复杂。
  • 混合调制 (QAM 正交振幅调制)
    • 为了在有限的带宽内传输更多的数据,现代通信(如 Wi-Fi、5G)广泛采用 QAM 技术。它同时结合了调幅和调相,让一个码元可以携带多个比特的信息。
    • 例如 16-QAM 有 16 种不同的振幅和相位组合,一个码元就能携带 2^4 = 16 个比特。从而大幅提升了数据传输速率。
  • 码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形。

信道的极限容量

信道的极限容量,也被称为香农极限(Shannon Limit)或香农容量,是信息论中最核心的概念之一。

香农定理

它由“信息论之父”克劳德·香农在1948年提出,为任何通信系统的数据传输速率设定了一个理论上的绝对上限。单来说,它回答了通信领域的一个终极问题:在一个存在噪声和干扰的信道中,我们究竟能以多快的速度、多可靠地传输信息?香农定理解决的是“受噪声干扰时,数据传输速率(bps)的上限是多少”。

1
2
3
4
5
6
7
8
信道容量的数学公式被称为香农-哈特利定理
C = B × log₂(1 + S/N)

C (Capacity):信道容量,单位是比特每秒(bps)。这是在理论上可以实现无差错传输的最高速率。
B (Bandwidth):信道带宽,单位是赫兹(Hz)。可以理解为信号能够使用的频率范围。
S/N (Signal-to-Noise Ratio):信噪比,是信号平均功率(S)与噪声平均功率(N)的比值。它衡量了有用信号相对于背景噪声的强度。

决定信道容量的两个关键物理因素:带宽(B)和信噪比(S/N)。

奈氏准则

奈氏准则(Nyquist Criterion)是物理层中关于码元传输速率极限的定律。在理想无噪声的信道中,为了避免码间串扰,码元的传输速率(波特率)上限是多少?奈奎斯特(Harry Nyquist)推导出,在任何信道中,码元传输的速率是有上限的。如果传输速率过高,接收端将无法准确区分前后两个码元,导致前一个码元的波形拖尾延伸到后一个码元的时间段内,这种现象称为码间串扰。

1
2
3
4
5
6
7
理想低通信道的最高码元传输速率公式
Rmax = 2W (Baud)

Rmax:极限码元传输速率,单位是波特(Baud)。
W :信道的带宽,单位是赫兹(Hz)。

结论:在带宽为 W 的理想低通信道中,每秒钟最多只能传输 2W 个码元。

从“波特率”到“比特率”

奈氏准则限制了码元的传输速率,但并没有限制每个码元能携带多少比特的信息。如果我们采用更复杂的调制技术(如前面提到的 QAM),让一个码元携带更多的二进制位,就可以在不增加波特率的情况下提高数据传输速率。

1
2
3
4
5
6
7
8
结合奈氏准则,理想信道下的极限数据传输速率公式为
C = 2W × log₂V

C :极限数据传输速率,单位是 bps。
W :信道带宽(Hz)。
V:码元所采取的离散电平个数(或相位状态数)。
例如:如果是二进制信号(只有高、低两种电平),则V = 2,log₂2 = 1,此时C = 2W。
例如:如果是四进制信号(有4种不同的电压),则V = 4,log₂4 = 2,意味着每个码元携带2比特信息,此时C = 4W。

数据链路层

📋 概述

数据链路层(Data Link Layer)位于物理层之上、网络层之下,是OSI七层模型中的第二层。它的核心任务是在相邻节点之间(即直接相连的两个设备)提供可靠的数据传输服务。

  • 链路(Link):指从一个节点到相邻节点的物理线路,是一条无源的点到点的物理线路段,中间没有任何其他的交换节点。
  • 数据链路(Data Link):除了物理线路外,还必须有实现通信协议的硬件和软件。有了数据链路,就可以把数据从源节点传送到相邻的目的节点。因此,数据链路可以理解为”链路 + 协议”。

🎯 核心功能

数据链路层主要实现以下三大功能:

  1. 封装成帧(Framing):将网络层交下来的IP数据报添加首部和尾部,构成一个帧。帧是数据链路层的协议数据单元(PDU)。
  2. 透明传输:无论什么比特组合,都能通过数据链路层传送出去,就像数据链路层不存在一样。
  3. 差错检测:检测帧在传输过程中是否产生比特差错,如有差错则丢弃该帧。

📦 数据单位:帧

帧是数据链路层数据传输的基本单位。一个典型的帧结构包括:

  • 帧头(Header):包含控制信息,如目的MAC地址、源MAC地址、类型字段等。
  • 数据部分(Payload):承载上层(网络层)传递下来的数据包。
  • 帧尾(Trailer):通常包含差错检测码(如CRC校验码)。
组成部分 作用 典型内容
帧首部 标识帧的开始,提供控制信息 MAC地址、类型/长度字段
数据部分 承载上层数据 IP数据报
帧尾部 标识帧的结束,进行差错检测 FCS(帧检验序列)

🔧 三大基本功能详解

1️⃣ 封装成帧

封装成帧就是在一段数据的前后分别添加首部和尾部,从而构成一个帧。帧的首部和尾部有一个重要作用就是进行帧定界,即确定帧的界限。

⭐ 帧定界方法

不同的协议采用不同的帧定界方法:

以太网V2的MAC帧

  • 不使用特殊的帧定界符,而是利用物理层添加的8字节前导码和帧开始分隔符(SFD)来标识帧的开始。
  • 帧的长度由帧头中的”长度/类型”字段或上层协议确定。
  • 帧的最小长度为64字节,最大长度为1518字节。

PPP帧(点对点协议)

  • 使用特定的标志字段 0x7E(二进制 01111110)作为帧的开始和结束标志。
  • 如果数据部分出现 0x7E,则需要通过转义字符进行处理(见透明传输部分)。

2️⃣ 透明传输

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样。也就是说,无论数据中包含什么样的比特组合,都能够正确传输。

⭐ 实现方法

面向字节的物理链路:字节填充(字符填充)

  • 当数据中出现了与帧定界符相同的字节时,在该字节前插入一个转义字符(ESC)。
  • 例如:PPP协议中,如果数据中出现 0x7E,则将其转换为两个字节:0x7D(转义字符)和 0x5E(0x7E XOR 0x20)。
  • 接收端收到数据后,会将 0x7D 0x5E 还原为 0x7E。

面向比特的物理链路:比特填充(零比特填充)

  • 在发送端,扫描整个数据字段,只要发现连续的5个 1,就立即填入一个 0。
  • 在接收端,先找到标志字段 01111110 确定帧边界,然后对数据部分进行反向操作:每当发现连续的5个 1,就把后面紧跟的 0 删除。
  • 这种方法确保了数据中不会出现与帧定界符相同的比特模式 01111110。
  • 经典应用:HDLC协议、PPP协议的同步传输模式。

3️⃣ 差错检测

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1 可能会变成 0,而 0 也可能变成 1。这称为比特差错。

  • 误码率(BER, Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率。
  • 数据链路层广泛使用**循环冗余校验(CRC)**来检测比特差错。
  • 注意:数据链路层的差错检测只能检测出错误,不能纠正错误。检测到错误的帧会被直接丢弃。

⭐ 常见差错检测方法对比

方法 原理 检错能力 应用场景
奇偶校验 在数据后添加一位校验位,使整个数据中1的个数为奇数或偶数 只能检测出奇数个比特错误,偶数个错误无法检测 早期串行通信、内存校验
校验和 将数据按一定位数分组求和,取反码作为校验值 能检测出大部分错误,但不如CRC可靠 IP首部、TCP/UDP首部
CRC循环冗余校验 基于多项式除法,生成冗余码附加在数据后 检错能力强,能检测出所有单比特、双比特、奇数个比特错误以及突发错误 以太网、PPP、HDLC等几乎所有数据链路层协议

⭐⭐ CRC循环冗余校验详解

CRC是目前应用最广泛的差错检测技术,其工作原理如下:

发送端处理流程

  1. 收发双方事先约定一个生成多项式 G(x)(例如 CRC-32 的标准多项式)。
  2. 在待发送的数据 M 后面添加 r 个 0(r 为生成多项式的最高次幂),得到新的数据 M’。
  3. 用 M’ 除以 G(x)(模2除法,即异或运算),得到余数 R。
  4. 将余数 R 附加在原数据 M 后面,形成最终的帧发送给接收端。

接收端验证流程

  1. 接收端收到帧后,提取数据和冗余码。
  2. 用整个接收到的数据除以同样的生成多项式 G(x)。
  3. 如果余数为 0,则认为传输无误;如果余数不为 0,则判定传输出错,丢弃该帧。
1
2
3
4
5
6
7
8
9
10
11
示例:假设数据 M = 101001,生成多项式 G(x) = x³ + x + 1(对应二进制 1011)

步骤1:M后面添加3个0(因为G(x)最高次为3),得到 M' = 101001000
步骤2:用 M' 除以 1011(模2除法)
101001000 ÷ 1011 = 商...余数 R
步骤3:计算得到余数 R = 011
步骤4:最终发送的帧 = 101001 + 011 = 101001011

接收端收到 101001011 后,用 1011 去除:
- 如果余数为0 → 传输正确
- 如果余数不为0 → 传输错误,丢弃帧

重要说明:

  • CRC只能实现无比特差错的传输,但还不能实现可靠传输。因为数据链路层检测到错误后只是丢弃帧,并不重传。
  • 要实现可靠传输,需要上层协议(如TCP)或数据链路层的可靠传输协议(如停止-等待协议)配合。

🛠️ 两种信道类型

根据通信方式的不同,数据链路层可以分为两大类:

📌 点对点信道

  • 特点:使用一对一的通信方式,相邻的两个节点通过一条链路直接通信。
  • 典型协议:PPP协议(Point-to-Point Protocol)、HDLC协议。
  • 应用场景:路由器之间的广域网连接、拨号上网。

📌 广播信道

  • 特点:使用一对多的通信方式,一个节点发送的数据可以被多个节点接收。
  • 核心问题:如何解决多个节点同时发送数据时的冲突问题?这需要**媒体接入控制(MAC)**协议。
  • 典型协议:以太网协议(Ethernet)、Wi-Fi协议(802.11)。
  • 应用场景:局域网、无线局域网。

📜 重要协议详解

PPP协议(Point-to-Point Protocol)

PPP协议是点对点信道上最常用的数据链路层协议,广泛应用于拨号上网和路由器之间的连接。

⭐ PPP协议的组成

  1. 一个将IP数据报封装到串行链路的方法
    • PPP既支持异步传输(使用字节填充),也支持同步传输(使用比特填充)。
  2. 一个用来建立、配置和测试数据链路的链路控制协议LCP
    • 通信双方通过LCP协商各种参数,如最大帧长、认证协议等。
  3. 一套网络控制协议NCP
    • 支持多种网络层协议,如IP、IPX等。每个NCP负责配置相应的网络层协议。

⭐ PPP帧格式

1
| 标志(1B) | 地址(1B) | 控制(1B) | 协议(2B) | 信息(<1500B) | FCS(2B或4B) | 标志(1B) |
  • 标志字段:0x7E,标识帧的开始和结束。
  • 地址字段:固定为 0xFF,因为点对点通信不需要寻址。
  • 控制字段:固定为 0x03,表示无编号帧。
  • 协议字段:标识信息字段中封装的是什么协议的数据(如 0x0021 表示IP数据报)。
  • 信息字段:上层传递下来的数据,最大长度为1500字节。
  • FCS字段:帧检验序列,使用CRC校验。

⭐ PPP的特点

  • 简单:只检测差错,不纠正差错;不使用序号和确认机制;不提供流量控制。
  • 封装成帧:定义了特殊的帧格式。
  • 透明传输:支持字节填充和比特填充。
  • 差错检测:使用CRC校验。
  • 支持多种网络层协议:通过NCP实现。
  • 支持身份认证:可选PAP或CHAP认证协议。
  • 动态分配IP地址:通过IPCP协议实现。

HDLC是一个面向比特的同步数据链路层协议,广泛应用于广域网中。

⭐ HDLC帧格式

1
| 标志(1B) | 地址(1B) | 控制(1B) | 信息(NB) | FCS(2B) | 标志(1B) |
  • 标志字段:01111110,标识帧的开始和结束。
  • 地址字段:标识从站地址(在点对点链路中意义不大)。
  • 控制字段:最复杂的部分,用于实现流量控制和差错控制。
  • 信息字段:可变长度。
  • FCS字段:CRC校验码。

⭐ HDLC的特点

  • 面向比特:使用比特填充实现透明传输。
  • 可靠性高:支持序号、确认、重传等机制,可以实现可靠传输。
  • 效率高:适用于高质量的数字链路。

🔄 可靠传输机制

虽然大多数现代数据链路层协议(如以太网)只提供无连接、不可靠的服务(检测到错误就丢弃),但在某些场景下(如噪声较大的无线链路),需要实现可靠传输。以下是三种经典的可靠传输协议:

1️⃣ 停止-等待协议(Stop-and-Wait)

这是最简单的可靠传输协议。

工作原理

  1. 发送方发送一个数据帧后,就停止发送,等待接收方的确认。
  2. 接收方收到正确的帧后,发送一个确认帧(ACK)。
  3. 发送方收到ACK后,才发送下一个数据帧。
  4. 如果发送方在一定时间内没有收到ACK,就超时重传该帧。

优缺点

  • ✅ 实现简单。
  • ❌ 信道利用率极低,尤其是在传播时延较大的情况下。
情况 处理方式
正常传输 发送帧 → 接收ACK → 发送下一帧
数据帧丢失 发送方超时 → 重传该帧
ACK丢失 发送方超时 → 重传该帧 → 接收方收到重复帧 → 丢弃并重新发送ACK
数据帧出错 接收方检测到错误 → 丢弃 → 发送方超时 → 重传

2️⃣ 回退N帧协议(GBN, Go-Back-N)

为了提高信道利用率,GBN允许发送方连续发送多个帧,而不必等待每个帧的确认。

工作原理

  • 发送窗口:发送方维护一个大小为 W 的发送窗口,窗口内的帧可以连续发送。
  • 累积确认:接收方只按序接收帧。如果收到序号为 n 的帧,就发送 ACK[n],表示序号 n 及之前的所有帧都已正确接收。
  • 超时重传:如果发送方超时未收到某个帧的ACK,就重传该帧及其之后已发送的所有帧(即”回退N帧”)。

优缺点

  • ✅ 信道利用率比停止-等待协议高。
  • ❌ 如果某个帧丢失,后续已正确到达的帧也会被重传,造成浪费。
1
2
3
4
5
6
7
8
示例:发送窗口大小 W = 4

发送方:发送帧0、1、2、3(全部在窗口内)
接收方:收到帧0、1、3(帧2丢失)
→ 帧0、1正确,但帧2缺失,所以帧3也不能上交
→ 发送ACK[1](表示帧1及之前都收到了)
发送方:超时未收到ACK[2]
→ 重传帧2、3、4、5(回退到帧2,重传之后的所有帧)

3️⃣ 选择重传协议(SR, Selective Repeat)

SR协议进一步改进了GBN,只重传出错的帧,而不是所有后续帧。

工作原理

  • 发送窗口:与GBN类似,允许连续发送多个帧。
  • 接收窗口:接收方也维护一个接收窗口,可以缓存乱序到达的正确帧。
  • 逐个确认:接收方对每个正确收到的帧单独发送ACK,即使前面的帧还未到达。
  • 选择性重传:发送方只重传超时或收到否定确认(NAK)的帧。

优缺点

  • ✅ 信道利用率最高,只重传出错的帧。
  • ❌ 实现复杂,需要在接收方缓存乱序帧。
1
2
3
4
5
6
7
8
9
10
11
示例:发送窗口大小 W = 4

发送方:发送帧0、1、2、3
接收方:收到帧0、1、3(帧2丢失)
→ 缓存帧3(因为窗口允许)
→ 发送ACK[0]、ACK[1]、ACK[3]
发送方:收到ACK[0]、ACK[1]、ACK[3]
→ 知道帧2未确认
→ 只重传帧2
接收方:收到重传的帧2
→ 现在帧0、1、2、3都齐了,一起上交网络层

⭐⭐ 三种协议对比

特性 停止-等待 GBN SR
发送窗口大小 1 W > 1 W > 1
接收窗口大小 1 1 W > 1
确认方式 逐个确认 累积确认 逐个确认
重传策略 重传出错帧 重传出错帧及之后所有帧 只重传出错帧
信道利用率 低 中 高
实现复杂度 简单 中等 复杂
典型应用 简单场景 TCP(部分类似) 高性能网络

🌐 媒体接入控制(MAC)

在广播信道中,多个节点共享同一传输介质,必须解决”谁可以使用信道”的问题。这就是**媒体接入控制(Media Access Control, MAC)**的核心任务。

📊 MAC协议分类

分类 子类别 典型协议 特点
静态划分信道 频分多址(FDMA) 传统无线电广播 每个用户占用固定频率带宽
时分多址(TDMA) GSM移动通信 每个用户在固定时间片内占用全部带宽
码分多址(CDMA) 3G移动通信 每个用户使用不同的码型,可同时同频传输
动态接入控制 受控接入 令牌环网、轮询协议 用户不能随机发送,必须按某种规则轮流发送
随机接入 ALOHA、CSMA/CD、CSMA/CA 用户可以随机发送,但可能发生冲突,需解决冲突

⭐⭐ CSMA/CD协议(载波监听多点接入/碰撞检测)

CSMA/CD是传统以太网(使用集线器的半双工以太网)的核心协议。

工作原理:“先听后发,边发边听,冲突停发,随机重发”

  1. 载波监听(Carrier Sense):发送数据前先监听信道是否空闲。如果忙,则等待;如果空闲,则准备发送。
  2. 碰撞检测(Collision Detection):发送数据的同时继续监听信道。如果检测到碰撞(信号电压异常),立即停止发送。
  3. 强化干扰:停止发送后,继续发送32比特或48比特的干扰信号,确保所有节点都知道发生了碰撞。
  4. 随机退避:执行截断二进制指数退避算法,等待一段随机时间后重新尝试发送。

⭐ 截断二进制指数退避算法

1
2
3
4
5
1. 确定基本退避时间:通常为争用期 2τ(τ为端到端传播时延),以太网规定为51.2μs。
2. 定义参数 k = min(重传次数, 10)。
3. 从整数集合 [0, 1, 2, ..., (2^k - 1)] 中随机取出一个数 r。
4. 重传所需的退避时间 = r × 2τ。
5. 如果重传次数达到16次仍不成功,则丢弃该帧,向上层报告错误。

重要概念:争用期(Collision Window)

  • 争用期 = 2τ(端到端往返传播时延)。
  • 以太网规定的争用期为 512 比特时间(即 51.2μs)。
  • 如果发送的前 512 比特没有发生碰撞,就能肯定这次发送不会发生碰撞。
  • 以太网的最短帧长为 64 字节(512 比特),就是为了保证在发送完整个帧之前能够检测到碰撞。

⭐⭐ CSMA/CA协议(载波监听多点接入/碰撞避免)

CSMA/CA主要用于无线局域网(Wi-Fi),因为无线环境中很难实现碰撞检测(信号强度差异大、隐藏终端问题等)。

工作原理:“先听后发,预约信道,确认机制”

  1. 载波监听:与CSMA/CD类似,发送前先监听信道。
  2. 碰撞避免:
    • 如果信道忙,等待直到信道空闲。
    • 信道空闲后,再等待一个DIFS(分布式协调功能帧间间隔)时间。
    • 进入退避阶段:选择一个随机退避时间,在此期间持续监听信道。如果信道变忙,冻结退避计时器;信道再次空闲后,继续退避。
    • 退避时间到后,开始发送数据。
  3. 预约信道(可选):对于大数据帧,可以先发送RTS(请求发送)帧,接收方回复CTS(清除发送)帧,预约信道使用权。
  4. 确认机制:接收方成功收到数据后,发送ACK确认帧。如果发送方未收到ACK,则认为传输失败,进行重传。

⭐ CSMA/CD vs CSMA/CA 对比

特性 CSMA/CD CSMA/CA
全称 碰撞检测 碰撞避免
应用场景 有线以太网(半双工) 无线局域网(Wi-Fi)
碰撞处理 检测碰撞后停止发送 尽量避免碰撞发生
确认机制 无ACK(上层负责) 有ACK(链路层确认)
信道预约 不支持 支持(RTS/CTS)
退避时机 碰撞发生后 发送数据前

🔗 数据链路层设备

网桥(Bridge)

  • 工作层次:数据链路层。
  • 功能:连接两个或多个局域网段,根据MAC地址转发帧。
  • 特点:可以隔离冲突域,但不能隔离广播域。

交换机(Switch)

  • 本质:多端口网桥。
  • 工作层次:数据链路层(二层交换机)。
  • 功能:
    • 自学习:自动建立和维护MAC地址表,记录哪个MAC地址连接到哪个端口。
    • 转发过滤:根据MAC地址表决定将帧转发到哪个端口,或者丢弃(如果目的地址在同一端口)。
    • 隔离冲突域:每个端口都是一个独立的冲突域,大大提高了网络性能。
  • 优点:
    • 独享带宽:每个端口都可以以全速运行。
    • 全双工通信:可以同时发送和接收数据。
    • 即插即用:无需配置,自动学习。

⭐ 交换机的转发方式

转发方式 工作原理 优点 缺点
直通式 接收到帧的目的MAC地址后立即开始转发,不检查差错 延迟最小 不检查差错,可能转发错误帧
存储转发式 接收完整帧后进行CRC校验,无误后再转发 可靠性高,可过滤错误帧 延迟较大
碎片隔离式 接收前64字节(最小帧长)后开始转发 折中方案,能过滤大部分冲突碎片 仍可能转发部分错误帧

📋 以太网(Ethernet)

以太网是目前应用最广泛的局域网技术,由IEEE 802.3标准定义。

⭐ 以太网的MAC帧格式(Ethernet V2)

1
| 目的MAC(6B) | 源MAC(6B) | 类型(2B) | 数据(46-1500B) | FCS(4B) |
  • 目的MAC地址:6字节,标识接收方的物理地址。
  • 源MAC地址:6字节,标识发送方的物理地址。
  • 类型字段:2字节,标识上层协议类型(如 0x0800 表示IPv4,0x0806 表示ARP)。
  • 数据字段:最小46字节,最大1500字节(MTU)。如果上层数据不足46字节,需要填充。
  • FCS:4字节,CRC校验码。

注意:以太网帧在物理层传输时,还会在前面添加8字节的前导码和帧开始分隔符(SFD),但这部分不属于MAC帧的内容。

⭐ MAC地址

  • 定义:MAC地址(Media Access Control Address)是固化在网卡(NIC)中的48位全球唯一标识符。
  • 格式:通常用12个十六进制数表示,如 00-1A-2B-3C-4D-5E。
  • 分类:
    • 单播地址:第一位为0,标识单个网卡。
    • 组播地址:第一位为1,标识一组网卡。
    • 广播地址:FF-FF-FF-FF-FF-FF,标识局域网内所有网卡。

⭐ 以太网的发展

标准 速率 传输介质 最大距离
10BASE-T 10 Mb/s 双绞线(Cat3) 100米
100BASE-TX 100 Mb/s 双绞线(Cat5) 100米
1000BASE-T 1 Gb/s 双绞线(Cat5e) 100米
10GBASE-T 10 Gb/s 双绞线(Cat6a) 100米
1000BASE-SX 1 Gb/s 多模光纤 550米
10GBASE-LR 10 Gb/s 单模光纤 10公里

🎯 总结

数据链路层是计算机网络中承上启下的关键一层,它的主要职责包括:

  1. 封装成帧:将网络层的数据包封装成帧,添加首部和尾部。
  2. 透明传输:通过字节填充或比特填充,确保任意数据都能正确传输。
  3. 差错检测:使用CRC等技术检测传输错误,丢弃错误帧。
  4. 媒体接入控制:在广播信道中,通过CSMA/CD或CSMA/CA等协议协调多个节点的访问。
  5. 可靠传输(可选):通过停止-等待、GBN、SR等协议实现可靠的数据传输。

数据链路层屏蔽了物理层的细节,为网络层提供了统一的服务接口,是构建可靠网络通信的重要基础。

网络层

应用层

学习资源

  • 视频
    • 计算机网络微课堂:https://www.bilibili.com/video/BV1c4411d7jb
  • 大学课件
    • 浙大计算机网络基础:https://github.com/QSCTech/zju-icicles