因特网

因特网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

ISPInternet 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

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

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

标准化工作

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

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

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

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

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

技术文档RFCRequest 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/sMb/sGb/s
  • 关键坑点运营商说的100M宽带指的是 100 Mb/s小写b而你下载软件显示的通常是 MB/s大写B
  • 换算公式1 Byte = 8 bit100 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/IPv6ICMPPing命令用的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 头部包含源端口和目标端口此时的数据包被称为数据段SegmentTCP 就像一位负责任的快递员通过三次握手确保连接可靠并保证货物不丢失按序到达
  • 网络层填写物流地址IP 协议在数据段外面加上 IP 头部包含你电脑的源 IP 地址和网站的服务器目标 IP 地址此时的数据包被称为数据包PacketIP 协议就像物流总调度只负责根据 IP 地址规划路线不保证一定送达
  • 数据链路层装入运输箱以太网协议再加上包含 MAC 地址物理硬件地址的头部和尾部校验码此时的数据包被称为数据帧FrameMAC 地址负责在相邻的两个设备比如你的电脑到家里的路由器之间进行精准投递
  • 物理层装车发货最后完整的数据帧被转换成二进制的比特流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-Fi4G/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-Fi5G广泛采用 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 = 2log₂2 = 1此时C = 2W
例如如果是四进制信号有4种不同的电压则V = 4log₂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转义字符0x5E0x7E XOR 0x20
  • 接收端收到数据后会将 0x7D 0x5E 还原为 0x7E

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

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

3️⃣ 差错检测

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

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

⭐ 常见差错检测方法对比

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

⭐⭐ CRC循环冗余校验详解

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

发送端处理流程

  1. 收发双方事先约定一个生成多项式 G(x)例如 CRC-32 的标准多项式
  2. 在待发送的数据 M 后面添加 r 个 0r 为生成多项式的最高次幂得到新的数据 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

步骤1M后面添加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 ProtocolHDLC协议
  • 应用场景路由器之间的广域网连接拨号上网

📌 广播信道

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

📜 重要协议详解

PPP协议Point-to-Point Protocol

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

⭐ PPP协议的组成

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

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

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

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

工作原理

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

优缺点

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

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

⭐⭐ 三种协议对比

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

🌐 媒体接入控制MAC

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

📊 MAC协议分类

分类 子类别 典型协议 特点
静态划分信道 频分多址FDMA 传统无线电广播 每个用户占用固定频率带宽
时分多址TDMA GSM移动通信 每个用户在固定时间片内占用全部带宽
码分多址CDMA 3G移动通信 每个用户使用不同的码型可同时同频传输
动态接入控制 受控接入 令牌环网轮询协议 用户不能随机发送必须按某种规则轮流发送
随机接入 ALOHACSMA/CDCSMA/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 表示IPv40x0806 表示ARP
  • 数据字段最小46字节最大1500字节MTU如果上层数据不足46字节需要填充
  • FCS4字节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. 可靠传输可选通过停止-等待GBNSR等协议实现可靠的数据传输

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

网络层

应用层

学习资源

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