「Linux 网络编程」计算机网络核心知识

0 前言:网络的起点——两台电脑的连接

我有一台电脑,我的老婆 魔理沙 也有一台电脑,现在我们想要互相发送消息进行聊天。

最简单的方式就是用一根网线直接连接这两台电脑,这样我和可爱的魔理沙就可以尽情聊天啦😘! 这就是网络中最基础的连接方式——点对点连接

点对点连接


在上面的最简单的点对点连接方式中,没有任何路由器、没有任何交换机,仅通过物理介质(网线)实现两台设备的通信。

然而,如果要实现 100 台、1000 台、10000 台甚至全世界的电脑都是先互通,怎么办呢?如果依旧采取点对点连接的方式,那么每两个设备之间都要连接一个网线,这在数量上完全不可取,况且还要造出可以跨越太平洋的网线… 🤔

显然,我们需要一个完整的 “网络规则” 去实现这个看似不可能的事情。


接下来,将从硬件设备到软件协议,从分层架构到数据传输流程,一步步拆解计算机网络的核心知识,理解“数据是如何通过网络跨越山海的”。



1 网络基本概念:什么是网络

网络的基础定义、功能和分类——这些是理解后续计算机网络内容的根基。

1.1 网络的定义和组成

定义:将地理上分散的、具有独立功能的多台计算机,通过 传输介质(如网线、光纤)和 网络设备(如交换机、路由器)连接起来,再通过一套统一的 网络协议(如TCP/IP)实现数据通信和资源共享的系统。

总的来说:设备+介质+协议 三者缺一不可。😌

组成 分为两部分:

  • 硬件部分

    • 终端设备:电脑、手机、服务器、打印机等;
    • 传输介质:有线(网线、光纤)、无线(WiFi、5G);
    • 网络设备:中继器、集线器、交换机、路由器等。
  • 软件部分

    • 网络协议:TCP、IP、HTTP 等(相当于“通信规则”);
    • 操作系统:Windows、Linux 等(提供网络接口);
    • 应用程序:浏览器、QQ、FTP 客户端等。

1.2 网络的核心功能

网络存在的意义,本质是解决 信息传递资源共享 的问题。

主要核心功能如下:

  1. 数据通信:最基础的功能,比如微信发消息、视频通话、邮件传输;
  2. 资源共享:分为“硬件共享”(如共享公司打印机)和“软件/数据共享”(如共享服务器上的文件、访问百度的数据库);
  3. 分布式处理:将复杂任务拆分给多台计算机协同完成,比如云计算(你用的在线文档,其实是多台服务器共同处理数据);
  4. 提高可靠性:单台设备故障时,数据可通过其他路径传输,比如互联网中某条光缆断了,数据会自动走备用路线。

1.3 网络的分类

  • 按覆盖范围划分

    分类 覆盖范围 典型场景 特点
    局域网(LAN) 几百米到几公里 家庭WiFi、公司内网 速度快(100Mbps-10Gbps)、延迟低
    城域网(MAN) 一座城市 城市政务网、运营商城域网 连接多个LAN,速度中等
    广域网(WAN) 跨城市/国家 互联网骨干网、企业分支互联 覆盖广、速度较慢、延迟高
    互联网(Internet) 全球 我们日常用的“上网” 由无数LAN、MAN、WAN组成
  • 按拓扑结构划分

    “拓扑结构”指网络中设备的连接方式,决定了网络的稳定性和维护成本。

    • 总线型:所有设备连在一条“总线”(如同轴电缆)上,成本低但故障难排查(某一点断了整个网络瘫痪),已淘汰😣;

    总线型

    • 星型:所有设备连到一个中心设备(如交换机),故障只影响单台设备,维护方便,是现在最常用的结构;

    星型

    • 环型:设备首尾相连成环,数据单向传输,稳定性高但扩容难(如早期的令牌环网);

    环型

    • 网状型:每台设备都和多台设备连接,可靠性最高(多条备用路径),但成本高,仅用于核心网络(如互联网骨干网)。

    网状型

  • 按使用者划分

    • 公用网:面向公众开放,由运营商维护,比如中国移动的宽带、联通的 5G 网络;
    • 专用网:仅特定用户使用,比如企业内网、政府专网、银行内部网络,安全性高。

1.4 网络性能指标

我们常说“网速快”“网络卡”,其实是对性能指标的直观感受。网络核心指标如下:

  1. 速率(比特率):单位时间内传输的二进制位数(bps\text{bps},如 1Mbps=106bps1 \text{Mbps} = 10^6 \text{bps}),是我们常说的“网速”,比如家庭宽带 100Mbps100 \text{Mbps} 指的就是速率;

  2. 带宽:网络的 最大传输能力,比如 100Mbps100 \text{Mbps} 带宽意味着最快能传 100Mbps100 \text{Mbps},实际速率会低于带宽(受信号衰减、设备性能影响);

  3. 时延数据从发送端到接收端的时间,分为4类:

    • 传播时延:信号在介质中传输的时间(如光纤中光的传播速度);
    • 传输时延:数据全部发出的时间(如 100MB100 \text{MB} 数据用 100Mbps100 \text{Mbps} 速率传,传输时延= 100×8×106100×106=8\frac{100 \times 8 \times 10^6}{100 \times 10^6} = 8 秒);
    • 处理时延:设备(如路由器)处理数据的时间;
    • 排队时延:数据在设备缓存中等待的时间(网络拥堵时排队时延会增加);
  4. 丢包率传输过程中丢失的数据包占总数据包的比例,丢包率高会导致视频卡顿、文件传输失败(正常网络丢包率应低于1%);

  5. 吞吐量实际传输的有效数据量(排除协议开销),比如 100Mbps100 \text{Mbps} 带宽的吞吐量可能只有 80Mbps80 \text{Mbps}(因为要传TCP/IP头部信息)。



2 网络分层结构:为什么要分层?

如果让一台电脑直接给另一台电脑发数据,需要处理 “转电信号、加地址、选路径、保证可靠” 等很多任务——这样逻辑太复杂了,而且有一个模块出了问题也难排查😣。

“分层”的思路就像“寄快递”:你(应用层)只需要把快递交给快递员(传输层),不用管快递怎么运到分拣中心(网络层)、怎么装车(数据链路层)、用什么交通工具(物理层)。每层只做自己的事,下层为上层提供服务,上层不用关心下层的细节。

目前主流的分层模型有两种:OSI七层模型TCP/IP四层模型


2.1 OSI 七层模型(理论模型)

OSI(开放式系统互联)是国际标准化组织(ISO)提出的理论模型,分为7层,从下到上依次是:

1. 物理层2. 数据链路层3. 网络层4. 传输层5. 会话层6. 表示层7. 应用层\text{1. 物理层} \rightarrow \text{2. 数据链路层} \rightarrow \text{3. 网络层} \rightarrow \text{4. 传输层} \rightarrow \text{5. 会话层} \rightarrow \text{6. 表示层} \rightarrow \text{7. 应用层}

每层的核心作用

  • 下三层(1-3):负责“数据传输”,处理硬件相关的工作(如信号、地址、路径);
  • 上四层(4-7):负责“数据处理”,处理软件相关的工作(如可靠传输、会话管理、应用服务)。

但 OSI 模型太复杂(比如会话层和表示层功能重叠),实际中几乎没人用,仅作为理论参考。


2.2 TCP/IP 四层模型(实际模型)

TCP/IP 是互联网的“事实标准”,由美国国防部提出,更简洁实用,分为4层(也常被扩展为5层,将网络接口层分为数据链路层和物理层)。

TCP/IP四层模型 对应OSI七层模型 核心作用 典型协议/设备
应用层 应用层+表示层+会话层 为应用程序提供服务 HTTP、DNS、FTP
传输层 传输层 端到端可靠传输、流量控制 TCP、UDP
网际层(网络层) 网络层 路由选择、IP寻址 IP、ARP、路由器
网络接口层 数据链路层+物理层 MAC寻址、信号转换 MAC、交换机、网线

2.3 发送消息的完整流程:从“封装”到“解封装”

以 “电脑A给电脑B发一条消息” 为例,解析数据在分层模型中怎么传输。核心是 “自上而下封装,自下而上解封装”。

  • 发送端(电脑A):自上而下“封装”

    • 应用层:应用(例如 QQ)将消息(如“你好”)处理成“应用层数据”,加上HTTP/QQ自定义协议的“头部”(记录消息类型、发送时间);
    • 传输层:接收应用层的数据,加上 TCP 头部(记录源端口,比如QQ的端口号;目的端口,比如电脑B QQ的端口号),形成“段(Segment)”;
    • 网络层:接收传输层的段,加上 IP 头部(记录源IP,比如A的 IP 192.168.1.2;目的IP,比如B的 IP 192.168.1.3),形成“数据包(Packet)”;
    • 数据链路层:接收网络层的数据包,加上MAC头部(记录A的 MAC 地址;B的 MAC 地址)和尾部(校验信息),形成“帧(Frame)”;
    • 物理层:将帧转换成电信号/光信号,通过网线/光纤传输。
  • 接收端(电脑B):自下而上“解封装”

    • 物理层:接收电信号,转换成帧,传给数据链路层;
    • 数据链路层:验证尾部的校验信息,去掉 MAC 头部和尾部,将数据包传给网络层;
    • 网络层:验证 IP 头部,去掉 IP 头部,将段传给传输层;
    • 传输层:验证 TCP 头部,去掉 TCP 头部,将应用层数据传给应用层;
    • 应用层:QQ 接收数据,解析后显示“你好”。

发送消息-接收消息完整流程

总结:发送端每层加“头部”(包装),接收端每层拆“头部”(拆包),每层只处理自己加的头部信息,互不干扰。



3 物理层:网络的物理基础

物理层是网络的最底层,负责 将数据转换成物理信号 并传输,不关心数据的含义——就像快递的交通工具(卡车、飞机),只负责运货,不管货里装的是什么😋。

物理层的核心设备是 中继器集线器


3.1 中继器:信号的放大器

信号在传输介质中会衰减(比如网线超过 100 米,信号就会弱到无法识别),中继器的作用就是 放大信号延长传输距离

  • 工作原理:接收衰减的信号,还原信号的波形和幅度,再发送出去;
  • 特点
    • 仅工作在物理层,只处理信号,不理解数据内容;
    • 只能连接同类型的传输介质(如网线中继器不能连光纤);
    • 不能隔离“冲突域”(多台设备同时发数据会冲突),现在很少单独使用。

在日常生活中,WiFi 中继器(又称 WiFi 扩展器)是最常用的中继器类型,核心解决 “家庭 / 小空间 WiFi 覆盖死角” 的问题。多数家庭的 WiFi 主路由会放在客厅(方便接宽带),但卧室、阳台、卫生间等 “角落区域” 信号弱。

把 WiFi 中继器插在客厅与卧室之间的 “过渡区域”(比如走廊插座、客厅靠近卧室的边柜插座),让中继器能稳定接收到客厅主路由的强信号,再通过中继器把信号 “放大延伸” 到卧室。


3.2 集线器(Hub):多端口的“中继器”

集线器就是“多端口的中继器”,可以将多个设备连接到同一个网络。

3.2.1 什么是集线器

集线器(Hub) 是一种简单的网络设备,有多个端口(常见4口、8口、16口),每个端口可以连接一台电脑或其他设备。⭐

集线器模型

3.2.2 集线器的工作模式:半双工

集线器的所有端口共享同一带宽,且工作在 半双工模式 —— 同一时间,一个端口只能发数据或收数据,不能同时进行。

为了避免多台设备同时发数据导致冲突,集线器会使用 CSMA/CD协议(载波监听多点接入/碰撞检测):

  1. 设备发数据前,先监听线路是否空闲
  2. 如果空闲,就发数据;如果忙,就等待
  3. 发数据时 如果检测到冲突(比如两台设备同时发),就 立即停止发送,并发送“冲突信号”,让其他设备知道有冲突;
  4. 所有设备等待随机时间后,再重新尝试发送

3.2.3 集线器的特点:已被淘汰的“老古董”

集线器的缺点非常明显,现在几乎被交换机取代:

  • 共享带宽:比如 88 口集线器,总带宽 100Mbps\text{100Mbps},每台设备平均只有 12.5Mbps\text{12.5Mbps}
  • 所有端口在一个冲突域:一台设备发数据,所有端口都能收到(广播),不仅效率低,还不安全(别人能截获数据)😋;
  • 半双工模式:无法同时收发数据,延迟高;
  • 无智能转发:不管目的地址,一律广播,浪费带宽。

集线器缺点:所有端口在一个冲突域

图片来源:硬核图解!30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?



4 数据链路层:给数据“加MAC地址”

物理层 解决了信号传输,但 不知道“数据要发给谁”——数据链路层的核心作用就是“给数据加MAC地址”,实现设备到设备的精准通信。

数据链路层的核心设备是 网桥交换机


4.1 MAC 地址:“网络身份证号”

MAC 地址(Media Access Control Address,媒体访问控制地址),也称为 物理地址硬件地址,是分配给网络设备(如电脑网卡、手机、路由器、打印机等)网络接口控制器(NIC)的 唯一标识符

它就像你设备的“网络身份证号”,用于在局域网(如家庭、公司内部网络)中唯一识别每一台设备。

MAC 地址的核心特点:

  1. 唯一性

    • 理论上,全球每个网络接口的 MAC 地址都是独一无二的(由设备制造商烧录在硬件中)。
    • 地址由 IEEE(电气和电子工程师协会)管理和分配给制造商,前半部分标识厂商(OUI - 组织唯一标识符),后半部分由厂商自行分配。
  2. 格式

    • 通常由 12 个十六进制数字(0-9, A-F)组成。
    • 常见的表示方式是用冒号 : 或连字符 - 分隔成 6 组,例如:
      • 00:1A:C2:7B:00:47
      • 00-1A-C2-7B-00-47
  3. 层级

    • 工作在 OSI 模型的第二层——数据链路层
    • 主要用于 局域网 内的设备间通信。当数据包在同一个网络(如你的家庭 WiFi)内传输时,交换机等设备依靠 MAC 地址来确定数据应该发送给哪台具体的设备。
  4. 与 IP 地址的区别

    • MAC 地址:是 物理的、硬件层面 的地址,通常固定不变(虽然可以软件修改,称为“MAC 地址欺骗”),用于 本地网络 寻址。
    • IP 地址:是 逻辑的、软件层面 的地址,可以动态分配(如 DHCP)或手动设置,用于在 互联网或不同网络 之间进行路由和寻址。
    • 类比:可以把 MAC 地址想象成你的“身份证号”(唯一且相对固定),IP 地址想象成你的“邮寄地址”(可能变化,用于定位你在哪个区域)。
  5. 主要用途

    • 局域网内设备识别与通信:交换机通过 MAC 地址表来转发数据帧到正确的端口。
    • 网络访问控制:一些路由器或企业网络会设置 MAC 地址过滤,只允许特定设备接入。
    • DHCP 分配:DHCP 服务器有时会根据设备的 MAC 地址为其分配固定的 IP 地址(IP-MAC 绑定)。
    • 设备追踪(在特定环境下):例如,在大型商场或机场的 WiFi 中,可以通过 MAC 地址大致追踪设备的移动轨迹(出于隐私考虑,现代操作系统如 iOS 和 Android 默认会使用随机 MAC 地址连接 WiFi)。

4.2 网桥:连接两个局域网的“过滤器”

网桥(Bridge) 工作在数据链路层,用于连接两个不同的局域网(比如两个办公室的LAN),并根据 MAC 地址“过滤帧”——只把需要跨网段传输的帧转发过去,减少不必要的广播。

  • 工作原理

    1. 网桥有两个端口,分别连接两个 LAN;
    2. 学习:收到帧时,记录“源 MAC 地址”和对应的端口(比如 LAN1 的设备 MAC 都存在端口 1);
    3. 转发:收到帧后,查看“目的 MAC 地址”,如果在另一个 LAN,就转发;如果在同一个 LAN,就丢弃(不转发);
  • 特点

    • 隔离冲突域:两个 LAN 分别是一个冲突域,减少冲突;
    • 不能隔离广播域:如果收到广播帧(比如 ARP 请求),还是会转发到另一个 LAN;
    • 端口少:通常只有 2 个端口,现在被多端口的交换机取代。

4.3 交换机(Switch):多端口的“智能网桥”

交换机 是数据链路层的核心设备,相当于“多端口的网桥”,更智能、更快,是现在局域网的核心连接设备(比如家庭的千兆交换机、公司的核心交换机)。

4.3.1 什么是交换机

交换机(Ethernet Switch) 有多个端口(常见 8口、16口、24口、48口),每个端口可以连接电脑、服务器、打印机等设备,能根据 MAC 地址“定向转发”数据,而不是像集线器那样广播。

4.3.2 交换机的工作模式:全双工

交换机的每个端口都是 全双工模式 —— 同一时间,一个端口可以同时发数据和收数据。因为每个端口独占带宽(比如 24口千兆交换机,每个端口都是 1000Mbps\text{1000Mbps} 带宽)。

全双工模式下,不需要 CSMA/CD 协议 —— 因为每个端口的发送和接收链路是分开的,不会冲突。

4.3.3 交换机的核心特点

  • 每个端口一个冲突域:设备之间通信互不干扰,冲突率极低;
  • 基于MAC地址定向转发:不是广播(除了未知MAC地址),效率高;
  • 全双工通信:速率快,延迟低;
  • 支持VLAN(虚拟局域网):可以将一个交换机分成多个“虚拟网段”,隔离广播域(后续进阶内容)。

4.3.4 交换机和集线器的核心对比

交换机和集线器两者差异

对比维度 集线器(Hub) 交换机(Switch)
工作层级 物理层 数据链路层
冲突域 所有端口共享一个冲突域 每个端口一个冲突域
带宽分配 共享带宽(如8口100Mbps,每口12.5Mbps) 独占带宽(每口都是100Mbps)
工作模式 半双工(不能同时收发) 全双工(可同时收发)
转发依据 无(广播所有数据) MAC 地址(定向转发)
安全性 低(所有设备能收到数据) 高(仅目的设备能收到数据)
适用场景 早期小网络(已淘汰) 家庭、企业局域网(主流)

4.3.5 MAC 地址表:交换机的“通讯录”

交换机之所以能定向转发,靠的是内部的 MAC地址表(也叫“CAM表”)——记录了“MAC地址”和“对应端口”的映射关系,就像我们手机里的通讯录(名字 \rightarrow 手机号)。

MAC 地址表的工作流程

  1. 初始化:刚通电时,MAC地址表是空的;
  2. 学习:比如电脑A(MAC-A)通过端口1给电脑B(MAC-B)发数据,交换机收到帧后,会把“MAC-A \rightarrow 端口1”记录到表中;
  3. 转发:交换机查看帧的目的MAC(MAC-B),如果表中有MAC-B对应的端口(比如端口2),就直接转发到端口2;如果没有(未知MAC),就广播到所有端口(除了入端口);
  4. 老化:如果某个MAC地址长时间(比如5分钟)没有数据传输,交换机会删除该条目,避免表过大。

举个例子:第一次A给B发数据,交换机广播;B收到后回复A,交换机学习到“MAC-B \rightarrow 端口2”;之后A再给B发数据,交换机就直接转发到端口2,不再广播。

交换机和MAC地址表

图片来源:硬核图解!30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?



5 网络层:实现“跨网段通信”

数据链路层解决了同一局域网内的设备通信(比如 192.168.1.2192.168.1.3 发数据),但 如果要跨网段通信(比如 192.168.1.2192.168.2.3 发数据),就需要网络层。

网络层的核心是“IP地址”和“路由器”。


5.1 网络层的功能和服务

网络层的核心目标是“实现跨网段的分组转发”,主要功能如下:

  1. IP寻址:给每个设备分配唯一的IP地址(如 192.168.1.2),确定数据的“源地址”和“目的地址”;
  2. 路由选择:在多个网段之间选择最优路径(比如从北京到上海,选联通还是电信的链路);
  3. 分组转发:根据路由表,将数据包转发到下一个设备(比如路由器);
  4. 拥塞控制:当网络拥堵时,减少数据包发送,避免丢包(如TCP的拥塞控制)。

网络层提供的服务是 面向无连接的(以IP协议为例):

  • 无连接:发送数据包前不需要建立连接,直接发送;
  • 不可靠:不保证数据包一定能到达,丢包后不重发(重发由传输层的TCP负责);
  • 无顺序:数据包到达接收端的顺序可能和发送顺序不一致(需要TCP排序)。

5.2 IP 协议(网际协议)

在讲 IP 协议前,先搞懂 “IP 地址” 本身 —— 它是网络层的核心 “定位工具”,没有 IP 地址,跨网段通信就像 “寄快递没有收件人地址”,数据根本找不到目的地。

5.2.1 什么是 IP 地址

IP 地址(Internet Protocol Address)是分配给网络中每台设备的 逻辑地址,相当于设备在网络中的 “居住地址”,格式为 点分十进制(如 192.168.1.2),由 32 位二进制数 组成(对应 IPv4,也是日常最常用的版本)。​

前面提到的 192.168.1.2 就是一个 IP,同一个局域网内还可能会有一个IP是 192.168.1.200。它们都是 192.168.1.xxx都处于 192.168.1.0 这一个网段中

具体来说,把 192.168.1.2 翻译成 “网络地址”,就是 C 类私有网段.168细分段.1号局域网.2号设备

举个通俗的例子:

类似于 南京市.玄武区.孝陵卫街道.200号 这样一个地址,我们可以根据这个 ``南京市.玄武区.孝陵卫街道` 地址到达这个地区(局域网段),然后再定位到 200 门牌号这个具体位置。


IP 地址和数据链路层的 “MAC 地址”(设备硬件自带的物理地址,如 XX:XX:XX:XX:XX:XX)是不同的:

  • MAC 地址是 硬件地址,像设备的 “身份证号”,出厂后固定不变;​
  • IP 地址是 逻辑地址,像设备的 “临时居住地址”,可以手动修改或由 DHCP 自动分配(比如手机连不同 WiFi,IP 地址会变);​
  • 跨网段通信时,数据靠 IP 地址 “找大方向”(比如从 192.168.1.0 网段到 192.168.2.0 网段),到了目标网段后,再靠 MAC 地址 “找具体设备”(这就是 ARP 协议的作用)。

5.2.2 为什么需要 IP 地址?

核心原因是解决 跨网段定位设备 的问题 —— 没有 IP 地址,数据只能在同一局域网内 “瞎逛”,无法跨网段传递。

以 “快递运输” 类比:​

同一局域网(如家庭 WiFi)内的设备通信,就像 “同一栋楼里的邻居递东西”:只需要知道对方的 “门牌号后几位”,直接递过去就行;​

跨网段通信(如家庭内网连互联网、公司南京分公司连杭州分公司),就像 “从南京寄快递到杭州”:只知道对方的 “门牌号后几位”没用,说不定门牌号都一样🤔,所以必须知道 “省 + 市 + 区 + 街道”(IP 地址),快递员(路由器)才能按地址把包裹(数据)送到目标区域,再找具体门牌号。​

接下来以 “从上海寄一封信到 南京市.玄武区.孝陵卫街道.200号,类比 “从公司电脑(IP:10.0.2.3)给家里的手机(IP:192.168.1.200)传文件”。⭐

  1. “大方向定位”—— 靠地址的前 3 层(对应 IP 的前 3 段)​

    现实场景:​

    上海的快递员(对应公司路由器)拿到快递单,先看 南京市.玄武区.孝陵卫街道 —— 这 3 层告诉快递员:“不用在上海找,先把快递送到南京玄武区的孝陵卫街道片区(目标小区域)”,至于具体 200 号,等到了孝陵卫街道再找。

    网络场景:​

    公司电脑发数据时,路由器先看目标 IP 192.168.1.2 的前 3 段 192.168.1 —— 这 3 段告诉路由器:“不用在公司的 10.0.2.0 网段找,先把数据传到家里的 192.168.1.0 网段(目标局域网)”,至于具体是 192.168.1.200 这个设备,等数据到了家里的网段再确定。​

    核心:地址前 3 层(IP 前 3 段)负责 “跨区域找目标网段”,就像快递先到 “目标街道”,数据先到 “目标局域网”。

  2. “具体定位”—— 靠地址的第 4 层(对应 IP 的第 4 段)

    现实场景:​

    快递到了孝陵卫街道后,当地快递员(对应家里的路由器 / 交换机)再看第 4 层 “200 号”—— 这一层是 “街道内的具体门牌号”,直接找到 200 号住户,把快递送到手上。​

    网络场景:​

    数据到了家里的 192.168.1.0 网段后,家里的交换机(对应街道快递员)再看 IP 的第 4 段 “2”—— 这一层是 “网段内的具体设备号”,直接把数据传给 192.168.1.200 的手机(对应 200 号住户)。​

    核心:地址第 4 层(IP 第 4 段)负责 “网段内找具体设备”,就像快递到街道后找 “具体门牌号”,数据到网段后找 “具体设备”。

简单说:MAC 地址解决 “局域网内找设备”,IP 地址解决 “跨网段找区域”,两者配合才能实现全局通信。

有了网段,就可以一次性表示一大批地址。不需要像交换机的一条一条MAC地址记录在表里(一张表里存巨多 MAC 地址也不现实)。


5.2.3 “公有 IP” 和 “私有 IP”

家里的路由器、公司的内网设备,IP 地址几乎都是 192.168.1.XX192.168.0.XX,核心原因是:192.168. 开头的 IP 属于 “私有 IP 地址” —— 专门给局域网内部使用,不占用公网资源

要理解这一点,先区分 “公有 IP” 和 “私有 IP”:

  • 公有 IP 地址:由运营商(如移动、联通)分配的 “公网地址”,像 “城市的公共街道地址”,可以在互联网上直接被访问(比如 180.101.49.12 是公有 IP);

  • 私有 IP 地址:由 IANA(互联网地址分配机构)规定的 “局域网专用地址”,像 “小区内部的楼号门牌号”,只能在局域网内使用,无法直接被互联网访问(需要通过路由器的 NAT 功能,把私有 IP 转换成公有 IP 才能上网)。

公有 IP 就好比 对外可查的 “真实物理地址”。

  • 现实中,这个地址是 “公开可定位” 的 —— 无论从上海、北京还是外地,只要写对这个地址,快递都能找到。
  • 网络中:公有 IP(例如 180.101.49.12)也是 “公开可访问的”—— 无论你在哪个城市的网络,只要输入这个 IP,都能连接,因为它属于 “互联网公开的 IP 体系”,由运营商分配。

私有 IP 就好比 小区内部的 “虚拟门牌号”。

  • 现实中:“233 号楼 甲 单元 101” 只能在 XX 小区内部用 —— 如果只写 “233 号楼 甲 单元 101”,外地快递根本找不到(不知道在哪个城市、哪个街道),必须加上 “南京市.玄武区.孝陵卫街道 XX 小区”(对应路由器的公有 IP),才能对外通信。
  • 网络中:192.168.1.2 这类私有 IP 也只能在 “家庭 / 公司内网” 用 —— 如果只给数据写 192.168.1.2,互联网上的路由器根本不知道要传到哪个 “公网区域”,必须通过家里路由器的 “NAT 转换”(把私有 IP 转换成公有 IP),才能连互联网。

总的来说:私有 IP 是 “局域网内的小地址”,必须结合 “公有 IP(大地址)” 才能对外通信,就像小区内部门牌号必须结合 “城市街道地址” 才能收外地快递。


那么,MAC 地址呢? 😋

MAC 地址 就好比 “房子的房产证号”

MAC 地址 = 房子的 “房产证编号”(如 苏 A2023XXXX)—— 这是房子的 “唯一硬件标识”,从房子建好就固定不变(对应设备出厂时的 MAC 地址,终身不变)。

IP 地址 = 房子的 “门牌号”(如 南京市.玄武区.孝陵卫街道.200 号)—— 这是房子的 “使用地址”,如果房子出租、出售,门牌号可能不变,但如果房子拆迁搬到别的街道,门牌号就变了(对应设备连不同 WiFi,IP 地址会变)。

总的来说:MAC 地址是 “设备的身份证”(固定),IP 地址是 “设备的居住地址”(可改)


192.168. 开头的 IP,是 C 类私有 IP 地址的核心段,具体范围是 192.168.0.0 ~ 192.168.255.255,特点是:

  1. 适合小型局域网:每个 192.168.X.0 网段(如 192.168.1.0最多能容纳 254 台设备(IP 从 192.168.1.1192.168.1.254),刚好满足家庭(几台手机 + 电脑 + 电视)、小公司(几十台设备)的需求;

  2. 默认配置方便:路由器厂商(如华为、TP-Link)默认把内网 IP 设为 192.168.1.1192.168.0.1,用户不用手动配置,插电就能用;

  3. 不冲突:因为私有 IP 只在局域网内有效,哪怕全世界千万个家庭都用 192.168.1.2,也不会互相干扰(就像 “3 号楼 2 单元 501” 在不同小区里可以重复)。


5.2.4 还有哪些常用的 IP 地址开头?

除了 192.168. 段,IANA 还规定了另外两类私有 IP 地址,分别适合中型、大型局域网,日常在企业、学校等场景中很常见:

私有 IP 类别 地址范围 常用开头 适用场景 特点(单网段最大设备数)
A 类私有 IP 10.0.0.0 ~ 10.255.255.255 10. 大型企业、校园网、运营商内网 65534 台(网段范围极广)
B 类私有 IP 172.16.0.0 ~ 172.31.255.255 172.16. ~ 172.31. 中型企业、园区网 65534 台(介于 A 类和 C 类之间)
C 类私有 IP 192.168.0.0 ~ 192.168.255.255 192.168. 家庭、小公司、SOHO 办公 254 台(小型场景够用)

举几个日常能接触到的例子:

  • 学校校园网的 IP 可能是 10.20.30.40(A 类私有 IP,能覆盖全校几千台电脑、手机);
  • 中型公司的内网 IP 可能是 172.18.5.6(B 类私有 IP,适合几百台设备的部门使用);
  • 你家的智能电视 IP 可能是 192.168.1.10(C 类私有 IP,和手机、电脑在同一小网段)。

这些私有 IP 的共同特点是:不能直接访问互联网,必须通过路由器的 “NAT 转换”,把私有 IP 换成运营商分配的公有 IP,才能浏览网页、刷视频 —— 这也是为什么你家所有设备连 WiFi 后,对外显示的都是同一个公有 IP 的原因。

打开终端输入 ipconfig/all(windows 系统),可以查看连接的无线网络信息:


5.2.5 IPv4 和 IPv6

目前主流的IP协议有两个版本:

  • IPv4:32位地址,格式如 192.168.1.2,总共有2^32≈42亿个地址,已耗尽;
  • IPv6:128位地址,格式如 2001:0db8:85a3:0000:0000:8a2e:0370:7334,总共有2^128个地址,足够未来几十年使用。

IP协议的核心作用:给数据包加IP头部(源IP、目的IP),让数据包能在跨网段中传输。


5.2.5 127.0.0.1 是什么

127.0.0.1 是一个特殊的 IPv4 地址,称为 本地回环地址

  • 它是一个保留的地址块,整个 127.0.0.0/8 网段(从 127.0.0.1127.255.255.254)都指向本机。最常用的是 127.0.0.1
  • 它有一个对应的主机名,叫做 localhost。在自己的电脑上,ping localhostping 127.0.0.1 的效果是完全一样的。

工作机制

  • 当你的程序通过 127.0.0.1 发送网络数据时,操作系统内核的网络协议栈会直接处理这个数据包,而不会通过任何真实的物理或虚拟网络硬件(如网卡、Wi-Fi 适配器)发送出去。
  • 数据包直接从“发送端”回环到本机的“接收端”。这个过程完全在操作系统内部完成,速度极快,且不依赖任何外部网络环境。

127.0.0.1 的主要用途 🤔:

  1. 本地服务和开发测试:这是最重要的用途。当开发一个网络应用(如网站、数据库、游戏服务器)时,可以先在本地机器上同时运行客户端和服务器端进行测试,而无需依赖另一台电脑或复杂的网络配置。
  2. 进程间通信(IPC):两个或多个运行在同一台机器上的进程可以通过 TCP/IP 协议进行通信,就像它们在不同的机器上一样。这为构建分布式系统提供了统一的通信模型。
  3. 访问本地主机服务:例如,在本机搭建了一个 Web 服务器(如 Apache 或 Nginx),就可以在浏览器中输入 http://127.0.0.1http://localhost 来访问它。
  4. 隔离与安全:一些服务可能只绑定到 127.0.0.1,这意味着只有本机上的程序可以访问它们,外部网络上的其他计算机无法连接,从而增加了安全性。

5.3 ARP 协议(地址解析协议)

数据链路层需要 MAC 地址才能转发帧,但网络层用的是 IP 地址 ——ARP 协议的作用就是 “将 IP 地址转换成 MAC 地址”。

举个例子:A(192.168.1.2)要给同网段的 B(192.168.1.3)发数据,A 知道 B 的 IP,但不知道 MAC,流程如下:

A 发送 ARP 广播帧:“谁是 192.168.1.3?请告诉我你的 MAC 地址”;
同网段所有设备收到广播,只有 B(192.168.1.3)回复 ARP 响应:“我是 192.168.1.3,我的 MAC 是 XX:XX:XX:XX:XX:XX”;

A 收到响应:将 “192.168.1.3 → MAC-B” 记录到 ARP 缓存表,之后通信就不用再发 ARP 请求了(缓存表老化时间约 10 分钟)。

ARP 的工作原理


5.4 RARP 协议(反向地址解析协议)

RARP 和 ARP 相反,是 “将 MAC 地址转换成 IP 地址”,主要用于无盘工作站(没有硬盘的电脑):

  • 无盘工作站启动时,只知道自己的 MAC 地址,不知道 IP;
  • 无盘工作站发送 RARP 广播:“我的 MAC 是 XX:XX:XX:XX:XX:XX,请告诉我我的 IP 地址”;
  • 网络中的 RARP 服务器收到后,查询 MAC-IP 映射表,回复 IP 地址。

现在 RARP 已被 DHCP 协议取代


5.5 DHCP 协议(动态主机配置协议)

我们家里的电脑连 WiFi 时,不需要手动设置 IP 地址,就能自动获取 —— 这就是 DHCP 协议的作用:动态分配 IP 地址及相关配置(子网掩码、网关、DNS 服务器)。

DHCP 的工作流程(以电脑连路由器为例):

  1. 电脑启动后,发送 DHCP Discover 广播:“有没有 DHCP 服务器?我需要 IP 地址”;
  2. 路由器(内置 DHCP 服务器)收到后,发送 DHCP Offer:“我是 DHCP 服务器,给你分配 IP 192.168.1.100,子网掩码 255.255.255.0”;
  3. 电脑收到 Offer 后,发送 DHCP Request 广播:“我接受这个 IP 地址”;
  4. 路由器发送 DHCP ACK:“确认,IP 地址租期为 24 小时”;
  5. 电脑获得 IP 地址,租期快到前会申请续租

DHCP 的工作原理


5.6 ICMP 协议(互联网控制消息协议)

ICMP 协议用于 “在 IP 网络中传递控制消息”,比如报错、测试连通性。我们常用的 ping 命令,就是基于 ICMP 协议。

ping 的工作流程

  1. 发送端(A)发送 ICMP Echo Request(回显请求)数据包,包含一定长度的数据;
  2. 接收端(B)收到后,发送 ICMP Echo Reply(回显响应)数据包,返回相同的数据;
  3. 如果 A 收到 Reply,说明 A 和 B 连通;如果超时,说明不通(可能是网络故障、防火墙拦截)。

ICMP 还能返回错误信息,比如 “目标不可达”“超时”“源抑制(拥塞)” 等,帮助排查网络问题。


5.7 路由器(Router):跨网段通信的 “网关”

路由器 是网络层的核心设备,相当于 “网络之间的桥梁”—— 实现不同网段的通信(比如家庭内网 192.168.1.0 和公司内网 192.168.2.0),也是连接局域网和互联网的 “网关”。


5.7.1 路由器的主要功能

  1. 路由选择:这是路由器的核心功能——根据“路由表”选择最优路径,将数据包转发到下一个路由器;
  2. 分组转发:收到数据包后,查看目的IP地址,匹配路由表,转发到下一跳;
  3. 隔离广播域:每个端口对应一个网段,广播帧(如ARP请求)不会跨端口转发,减少广播风暴;
  4. 网络地址转换(NAT)将局域网的私有IP(如 192.168.1.100转换成公网IP(如 202.103.XX.XX),实现多台设备共享一个公网 IP 上网(家庭路由器的核心功能)。

5.7.2 路由表及其原理

路由器能选择路径,靠的是内部的路由表 —— 记录了 “目的网络”“下一跳地址”“出接口”“度量值(路径优先级)” 等信息,就像 “地图上的路线”。

路由表的条目生成方式

  1. 静态路由:手动配置的路由条目(比如网络管理员手动添加“到 192.168.2.0 网段,下一跳是 192.168.1.1 ”);

    • 优点:简单、可靠,适合小型网络;
    • 缺点:网络拓扑变化时需要手动修改,不适合大型网络。
  2. 动态路由:通过动态路由协议(如 RIP、OSPF、BGP)自动学习的路由条目;

    • 优点:网络拓扑变化时自动更新路由表,适合大型网络(如互联网);
    • 缺点:配置复杂,需要协议支持。

路由转发原理

以“电脑A(192.168.0.105)给电脑D(192.168.1.11)发数据”为例,路由器的转发流程:

  1. A 把数据包 经过交换机发到网关(路由器的内网端口 192.168.0.107,对应端口 e3);
  2. 路由器收到数据包,查看目的 IP(192.168.1.11),发现两者网络号处于不同的局域网,源 IP 网络号为 192.168.0.0,目的 IP 网络号为 192.168.1.0需要查找匹配路由表
  3. 路由表中显示“目的网络 192.168.1.0,下一跳是 192.168.1.23另一个路由器的端口),出接口是 e2”;
  4. 路由器将数据包转发到下一跳(192.168.1.23);
  5. 最终数据包通过多个路由器(可能),转发到达交换机,交换机发现 MAC 地址是它局域网下的D机器,最后把数据包发送给 D。

如果路由表里找不到,会打到默认网关,从 e1 口发出,发到 IP 192.0.2.1。这个路由器的路由表不知道该去哪,也许可以其他路由器可以知道。😋

路由转发示意图

图片来源:硬核图解!30张图带你搞懂!路由器,集线器,交换机,网桥,光猫有啥区别?


5.8 三层交换机

传统的交换机工作在数据链路层(二层),只能转发同一网段的帧;路由器工作在网络层(三层),能转发跨网段的数据包,但转发速度比交换机慢。

三层交换机 是“二层交换机+三层路由模块”的结合体,既具备交换机的高速转发能力,又具备路由器的跨网段路由功能,适合局域网内不同网段的互联(比如企业内部分为 192.168.1.0192.168.2.0192.168.3.0 三个网段,用三层交换机互联)。

三层交换机 对比 路由器

  • 转发速度:三层交换机更快(基于硬件转发),路由器较慢(基于软件转发);
  • 功能:路由器支持更多高级功能(如 VPN、防火墙),三层交换机功能更简单;
  • 适用场景:三层交换机用于局域网内跨网段互联,路由器用于局域网与互联网互联。


6 传输层:实现“端到端的可靠通信”

网络层解决了“跨网段转发数据包”的问题,但不保证数据包的可靠性(可能丢包、乱序);数据链路层解决了“设备到设备的帧转发”,但不关心“哪个应用程序”接收数据

传输层的核心作用是:在两个应用程序之间建立“端到端”的通信,并保证 数据的可靠传输(或满足实时性需求)。😌


6.1 传输层的基础概念

6.1.1 传输层的核心功能

  1. 端到端通信:将数据从 “发送端的应用程序”传到“接收端的应用程序”(比如A的QQ传到B的QQ),而不是“设备到设备”;
  2. 可靠传输:通过确认、重传、排序等机制,保证数据不丢包、不重复、不乱序(TCP协议的核心);
  3. 流量控制:控制发送端的发送速率,避免接收端处理不过来导致丢包(TCP的滑动窗口机制);
  4. 拥塞控制:检测网络拥堵,减少发送速率,避免网络瘫痪(TCP的拥塞控制机制);
  5. 多路复用/分用一个 IP 地址可以对应多个应用程序(通过端口号区分),比如电脑A的 IP 是 192.168.1.2,同时运行QQ(端口 2333)和浏览器(端口 8888),传输层能将数据分发给对应的应用程序。

6.1.2 寻址与端口:区分“同一设备的不同应用”

传输层通过端口号来区分同一设备上的不同应用程序,端口号是16位的整数(0-65535),分为三类:

  • 知名端口(0-1023):分配给常用协议,比如HTTP用80,HTTPS用443,FTP用21,SMTP用25
  • 注册端口(1024-49151):由应用程序开发者向IANA注册,比如QQ、微信的端口;
  • 动态端口(49152-65535):由操作系统动态分配,比如浏览器访问网站时,会临时分配一个动态端口。

“IP地址+端口号”构成了“套接字(Socket)”,比如 192.168.1.2:80,唯一标识网络中的一个应用程序,是传输层通信的“端点”。💻


6.1.3 传输层的服务类型

传输层提供两种服务,对应两种核心协议:

  • 面向连接的可靠服务TCP协议,适合需要可靠传输的场景(如文件传输、网页访问);
  • 无连接的不可靠服务UDP协议,适合需要实时性的场景(如视频通话、直播)。

6.1.4 传输层与网络层的关系

  • 网络层点到点(Point-to-Point)通信,负责“数据包从一个路由器到另一个路由器”的转发,不关心应用程序;
  • 传输层端到端(End-to-End)通信,负责“数据从一个应用程序到另一个应用程序”的传输,基于网络层提供的服务。

总的来说:网络层是“公路”,负责把“货车(数据包)”从A地运到B地;传输层是“快递员”,负责把“货物(数据)”从A地的收件人(应用程序)送到B地的收件人(应用程序)。💻


6.2 UDP协议:追求“实时性”的轻量级协议

UDP(用户数据报协议) 是传输层的 “轻量级协议”,核心特点是 “无连接、不可靠、开销小、实时性好”。

UDP的核心特点

  1. 无连接:发送数据前不需要建立连接,直接发送数据报(Datagram);
  2. 不可靠:不保证数据能到达接收端,不确认、不重传、不排序,丢包后不处理;
  3. 面向报文:直接将应用层的数据封装成数据报,不拆分也不合并(应用层给多少数据,就传多少);
  4. 开销小:UDP头部只有8个字节(TCP头部有20-60字节),传输效率高;
  5. 支持广播/组播:可以向多个设备同时发送数据(如直播、组播会议)。

UDP 协议

UDP适用场景

UDP 适合“实时性优先,可靠性其次”的场景。

  • 视频/音频传输:如直播、视频通话(丢几帧不影响整体观看);
  • 游戏数据传输:如王者荣耀、英雄联盟(延迟比丢包更重要);
  • DNS查询:DNS请求数据量小,需要快速响应;
  • 物联网设备:如传感器数据传输(数据量小,实时性要求高)。

6.3 TCP协议:追求“可靠性”的核心协议

TCP(传输控制协议) 是传输层的“核心协议”,核心特点是“面向连接、可靠传输、面向字节流、开销大”,是互联网中最常用的协议(如 HTTP、HTTPS、FTP、邮件都基于 TCP)。

TCP的核心特点

  1. 面向连接:通信前必须建立连接(三次握手),通信后必须断开连接(四次挥手);
  2. 可靠传输:通过“确认重传、排序、校验、流量控制、拥塞控制”保证数据不丢包、不重复、不乱序;
  3. 面向字节流:将应用层的数据拆分成多个“段(Segment)”发送,接收端再合并成字节流交给应用层;
  4. 全双工通信:通信双方可以同时发送和接收数据;
  5. 开销大:TCP头部有 20-60 字节(包含序列号、确认号、窗口大小等字段),传输效率比 UDP 低。

TCP核心机制

  1. 三次握手(建立连接) 🤝:确保双方都能收发数据,避免“失效的连接请求”被误处理;

    • 客户端(A)发SYN包:“我想连接你,我的初始序列号是x”;
    • 服务器(B)发SYN+ACK包:“我同意连接,我的初始序列号是y,确认收到你的x”;
    • 客户端(A)发ACK包:“确认收到你的y,连接建立”。
  2. 数据传输 ✉️:

    • 发送方(如客户端)将 数据分割成段,按顺序发送,并为每个段分配一个序列号。
    • 接收方(如服务器)收到数据段后,会发送一个 ACK(确认)包回来,告知发送方“我已成功收到第 X 号数据”。
    • 如果发送方在一定时间内没有收到 ACK,它会认为数据包丢失,并重新发送该数据包。这就是可靠性的核心。
  3. 四次挥手(断开连接) 👋:确保双方都已完成数据传输,避免数据丢失;

    • 客户端(A)发FIN包:“我没有数据要发了,想断开连接”;
    • 服务器(B)发ACK包:“确认收到,我还在处理剩余数据”;
    • 服务器(B)发FIN包:“我也没有数据要发了,可以断开连接”;
    • 客户端(A)发ACK包:“确认收到,断开连接”。

TCP 协议

TCP的应用场景

TCP 适合“可靠性优先,实时性其次”的场景。

  • 网页访问(HTTP/HTTPS):网页内容不能丢包,否则显示错乱;
  • 文件传输(FTP):传文件不能丢包,否则文件损坏;
  • 电子邮件(SMTP/POP3):邮件不能丢失;
  • 即时通信的文本消息(如微信文字):文字消息需要可靠传输,不能丢。


7 应用层:直接为“应用程序”服务

应用层是网络的最上层,直接为应用程序提供网络服务——我们日常用的浏览器、QQ、邮件客户端,都是通过应用层协议与服务器通信的。

应用层不关心数据的传输细节(那是下四层的事),只关心“如何满足应用程序的需求”(比如浏览网页需要 HTTP 协议,发邮件需要 SMTP 协议)。


7.1 应用层的基础概念

7.1.1 应用层的核心功能

  1. 为应用程序提供网络接口:比如浏览器通过 HTTP 协议访问网页,QQ通过自定义协议发送消息;
  2. 处理应用层协议细节:比如HTTP协议处理“请求行、响应头、响应体”的格式,DNS协议处理“域名到IP的解析”;
  3. 数据格式转换:比如将应用程序的文本数据转换成网络传输的二进制数据,接收端再转换回文本;
  4. 用户认证与授权:比如HTTP的Basic认证、HTTPS的证书认证,确保通信安全。

7.1.2 应用层的两种工作模式:C/S与B/S

  1. C/S模式(客户机/服务器模式)

    • 结构:分为“客户端(Client)”和“服务器(Server)”两部分;
      • 客户端:安装在用户设备上的应用程序,如QQ客户端、微信客户端、FTP客户端;
      • 服务器:运行在远程机房的服务器程序,如QQ服务器、微信服务器、FTP服务器;
    • 工作流程:客户端主动向服务器发送请求,服务器接收请求后处理并返回响应;
    • 特点
      • 客户端需要安装专门的软件;
      • 服务器需要24小时开机,处理大量客户端请求;
      • 安全性高(客户端和服务器之间的协议可自定义);
    • 典型应用:QQ、微信、穿越火线😋。
  2. B/S模式(浏览器/服务器模式)

    • 结构:分为“浏览器(Browser)”和“服务器(Server)”两部分,没有专门的客户端;
      • 浏览器:如Chrome、Edge、Firefox,是通用的客户端软件;
      • 服务器:如Web服务器(Nginx、Apache)、应用服务器(Tomcat、Spring Boot);
    • 工作流程:用户在浏览器中输入 URL,浏览器发送HTTP请求到服务器,服务器返回 HTML 页面,浏览器渲染页面并显示;
    • 特点
      • 不需要安装专门的客户端,用浏览器即可;
      • 开发和维护成本低(只需维护服务器);
      • 安全性依赖 HTTP/HTTPS 协议;
    • 典型应用:百度、淘宝、在线文档(如腾讯文档)、Qwen网页端。

7.1.3 应用层常见协议

  • 网页访问:HTTP、HTTPS;
  • 域名解析:DNS;
  • 文件传输:FTP、SFTP;
  • 电子邮件:SMTP、POP3、IMAP;
  • 远程登录:Telnet、SSH;
  • 即时通信:XMPP(如早期QQ)、WebSocket(如网页版微信)。

7.1.4 应用层与传输层的关系

  • 应用层依赖传输层提供的服务:应用层协议需要基于 TCP 或 UDP 协议传输数据;
    • 基于 TCP 的应用层协议:HTTP、HTTPS、FTP、SMTP、POP3(需要可靠传输);
    • 基于 UDP 的应用层协议:DNS、TFTP(简单文件传输协议)、RTP(实时传输协议,用于视频/音频);
  • 传输层为应用层提供“端口号”:应用层协议通过端口号找到对应的应用程序,比如 HTTP 用 TCP 80 端口,HTTPS 用TCP 443端口。

7.2 DNS与FTP协议:域名解析与文件传输

7.2.1 DNS协议(域名系统)

我们访问网站时,输入的是 域名(如 www.baidu.com),但电脑需要IP地址才能通信——DNS协议的作用就是“将域名转换成IP地址”,相当于“网络中的通讯录”。

DNS的工作流程

  1. 用户在浏览器输入 www.baidu.com,浏览器 先查询本地DNS缓存(电脑自带的缓存),如果有对应的 IP,直接访问;
  2. 如果本地缓存没有,浏览器向“本地 DNS 服务器”(通常是路由器或运营商提供的 DNS,如 114.114.114.114发送 DNS 查询请求
  3. 本地 DNS 服务器查询自己的缓存,如果有,返回IP;如果没有,向“根DNS服务器”发送请求
  4. 根 DNS 服务器返回“.com顶级域DNS服务器”的地址;
  5. 本地 DNS 服务器向“.com顶级域DNS服务器”发送请求,返回“baidu.com权威 DNS 服务器”的地址;
  6. 本地 DNS 服务器向“baidu.com权威DNS服务器”发送请求,返回 www.baidu.com 的 IP 地址(如 180.101.49.12);
  7. 本地 DNS 服务器将 IP 地址返回给浏览器,浏览器用该IP访问百度服务器。

DNS的特点

  • 基于 UDP 协议(数据量小,响应快),如果 UDP 查询失败,会用 TCP 重试;
  • 支持递归查询(本地DNS服务器帮用户查询所有层级)和迭代查询(根DNS服务器返回下一级 DNS 地址,用户自己查询);
  • 有缓存机制,减少重复查询,提高效率。

7.2.2 FTP协议(文件传输协议)

FTP 协议是用于“在客户端和服务器之间传输文件”的应用层协议,比如网站开发者将网页文件上传到服务器,用户从服务器下载软件安装包,都可以用FTP。

FTP的核心特点:

  • 基于TCP协议(可靠传输,确保文件不损坏);
  • 使用两个连接
    • 控制连接(TCP 21 端口):用于传输命令和响应(如登录、上传/下载指令、断开连接),整个会话期间保持连接;
    • 数据连接(主动模式用 TCP 20 端口,被动模式用随机端口):用于传输文件数据(如上传的HTML文件、下载的压缩包),传输完成后断开;
  • 支持两种传输模式
    • ASCII模式:传输文本文件(如 .txt.html);
    • 二进制模式:传输非文本文件(如 .exe.zip、图片、视频);
  • 支持用户认证:需要输入用户名和密码才能登录 FTP 服务器(也支持匿名登录)。

FTP的应用场景:

  • 网站维护:开发者用 FTP 客户端(如FileZilla)将网页文件上传到Web服务器;
  • 企业文件共享:企业搭建 FTP 服务器,供员工上传下载工作文件;
  • 软件下载:早期的软件下载站用 FTP 提供下载服务(现在多被 HTTP 下载取代)。

7.3 电子邮件协议与WWW、HTTP协议

7.3.1 电子邮件协议:SMTP、POP3、IMAP

电子邮件(如QQ邮箱、163邮箱)的传输需要三个核心协议配合:

  1. SMTP协议(简单邮件传输协议)

    • 作用发送邮件,负责将邮件从“发件人邮箱服务器”传输到“收件人邮箱服务器”;
    • 基于TCP协议(端口25,加密版用465);
    • 流程:比如用户A(a@qq.com)给用户B(b@163.com)发邮件,A的邮箱客户端通过 SMTP 协议将邮件发送到 QQ 邮箱服务器,QQ 邮箱服务器再通过 SMTP 协议将邮件转发到163邮箱服务器。
  2. POP3协议(邮局协议版本3)

    • 作用接收邮件,负责将“收件人邮箱服务器”中的邮件下载到“本地客户端”;
    • 基于TCP协议(端口110,加密版用995);
    • 特点
      • 下载邮件后,默认将服务器上的邮件删除(可设置保留);
      • 不支持邮件同步,本地修改(如标记已读)不会同步到服务器;
    • 适用场景:适合用单台设备接收邮件(如个人电脑)。
  3. IMAP协议(互联网邮件访问协议)

    • 作用接收邮件,比POP3更先进,支持“邮件同步”;
    • 基于TCP协议(端口143,加密版用993);
    • 特点
      • 邮件默认保存在服务器上,本地客户端只下载邮件的摘要(如发件人、主题),查看时再下载完整内容;
      • 支持邮件同步:本地修改(如标记已读、删除、移动文件夹)会同步到服务器,多台设备(电脑、手机)访问时邮件状态一致;
    • 适用场景:适合用多台设备接收邮件(如同时用电脑和手机查邮箱)。

7.3.2 WWW与HTTP协议:网页访问的核心

  1. WWW(万维网)

    WWW(World Wide Web,万维网)是互联网上最常用的服务,由无数“网页”组成,用户通过浏览器访问网页。

    WWW的核心组成

    • 网页:由 HTML(结构)、CSS(样式)、JavaScript(交互)组成;
    • URL(统一资源定位符):访问网页的地址,如 https://www.baidu.com/s?wd=计算机网络
    • Web服务器:存储网页文件,响应浏览器的请求(如Nginx、Apache)。
  2. HTTP协议(超文本传输协议)

    HTTP 协议是 WWW 的“核心通信协议”,负责“浏览器和Web服务器之间的请求与响应”,比如打开百度,浏览器就是通过 HTTP 协议向百度服务器请求网页,服务器通过 HTTP 协议返回网页内容。

    HTTP的工作流程

    1. 用户在浏览器输入URL(https://www.baidu.com);
    2. 浏览器解析 URL,确定 Web 服务器的域名(www.baidu.com),通过 DNS 解析得到 IP 地址
    3. 浏览器与百度服务器建立 TCP 连接(三次握手);
    4. 浏览器发送 HTTP 请求(Request):包含请求行(如GET / HTTP/1.1)、请求头(如User-Agent、Cookie)、请求体(可选,如表单数据);
    5. 百度服务器处理请求,返回 HTTP 响应(Response):包含状态码(如 200 表示成功)、响应头(如Content-Type、Server)、响应体(HTML 网页内容);
    6. 浏览器接收响应,解析HTML、CSS、JavaScript,渲染网页并显示;
    7. (可选)TCP连接断开(四次挥手)。

    HTTP的特点:

    • 基于TCP协议(可靠传输,确保网页内容完整);
    • 无状态:服务器不保存客户端的状态(比如你第一次访问百度和第二次访问,服务器不知道你是同一个人),需要用Cookie、Session来保持状态;
    • 明文传输:HTTP请求和响应都是明文,容易被截获和篡改(不安全),所以现在主流用HTTPS。
  3. HTTPS协议(HTTP+SSL/TLS)

    HTTPS是“HTTP+SSL/TLS加密”的组合,解决了HTTP明文传输的安全问题,现在所有涉及支付、登录的网站(如淘宝、网银)都用HTTPS。

    HTTPS的核心特点

    • 加密传输:通过SSL/TLS协议对HTTP请求和响应进行加密,防止数据被截获;
    • 身份认证:Web服务器需要安装“SSL证书”(由权威机构颁发),浏览器验证证书的合法性,确保访问的是真实服务器(不是钓鱼网站);
    • 基于TCP协议,端口号443;
    • 开销比HTTP大(加密解密需要时间),但安全性高。


总结

从两台电脑直连,到亿万台设备组成的互联网,核心逻辑就是“分层协作”:

  • 物理层:传信号,解决“能不能传”;
  • 数据链路层:加MAC地址,解决“发给哪个设备”;
  • 网络层:加IP地址、选路径,解决“跨网段怎么传”;
  • 传输层:加端口号、保证可靠,解决“发给哪个应用”;
  • 应用层:提供服务,解决“应用程序需要什么”。

每一层只做自己的事,下层为上层提供服务,上层不用关心下层的细节——这就是计算机网络的“分层思想”。😎


「Linux 网络编程」计算机网络核心知识
https://marisamagic.github.io/2025/09/23/20250923/
作者
MarisaMagic
发布于
2025年9月23日
许可协议