「Linux 网络编程」计算机网络核心知识
0 前言:网络的起点——两台电脑的连接
我有一台电脑,我的老婆 魔理沙 也有一台电脑,现在我们想要互相发送消息进行聊天。
最简单的方式就是用一根网线直接连接这两台电脑,这样我和可爱的魔理沙就可以尽情聊天啦😘! 这就是网络中最基础的连接方式——点对点连接。
在上面的最简单的点对点连接方式中,没有任何路由器、没有任何交换机,仅通过物理介质(网线)实现两台设备的通信。
然而,如果要实现 100 台、1000 台、10000 台甚至全世界的电脑都是先互通,怎么办呢?如果依旧采取点对点连接的方式,那么每两个设备之间都要连接一个网线,这在数量上完全不可取,况且还要造出可以跨越太平洋的网线… 🤔
显然,我们需要一个完整的 “网络规则” 去实现这个看似不可能的事情。
接下来,将从硬件设备到软件协议,从分层架构到数据传输流程,一步步拆解计算机网络的核心知识,理解“数据是如何通过网络跨越山海的”。
1 网络基本概念:什么是网络
网络的基础定义、功能和分类——这些是理解后续计算机网络内容的根基。
1.1 网络的定义和组成
定义:将地理上分散的、具有独立功能的多台计算机,通过 传输介质(如网线、光纤)和 网络设备(如交换机、路由器)连接起来,再通过一套统一的 网络协议(如TCP/IP)实现数据通信和资源共享的系统。
总的来说:设备+介质+协议 三者缺一不可。😌
组成 分为两部分:
-
硬件部分:
- 终端设备:电脑、手机、服务器、打印机等;
- 传输介质:有线(网线、光纤)、无线(WiFi、5G);
- 网络设备:中继器、集线器、交换机、路由器等。
-
软件部分:
- 网络协议:TCP、IP、HTTP 等(相当于“通信规则”);
- 操作系统:Windows、Linux 等(提供网络接口);
- 应用程序:浏览器、QQ、FTP 客户端等。
1.2 网络的核心功能
网络存在的意义,本质是解决 信息传递 和 资源共享 的问题。
主要核心功能如下:
- 数据通信:最基础的功能,比如微信发消息、视频通话、邮件传输;
- 资源共享:分为“硬件共享”(如共享公司打印机)和“软件/数据共享”(如共享服务器上的文件、访问百度的数据库);
- 分布式处理:将复杂任务拆分给多台计算机协同完成,比如云计算(你用的在线文档,其实是多台服务器共同处理数据);
- 提高可靠性:单台设备故障时,数据可通过其他路径传输,比如互联网中某条光缆断了,数据会自动走备用路线。
1.3 网络的分类
-
按覆盖范围划分
分类 覆盖范围 典型场景 特点 局域网(LAN) 几百米到几公里 家庭WiFi、公司内网 速度快(100Mbps-10Gbps)、延迟低 城域网(MAN) 一座城市 城市政务网、运营商城域网 连接多个LAN,速度中等 广域网(WAN) 跨城市/国家 互联网骨干网、企业分支互联 覆盖广、速度较慢、延迟高 互联网(Internet) 全球 我们日常用的“上网” 由无数LAN、MAN、WAN组成 -
按拓扑结构划分
“拓扑结构”指网络中设备的连接方式,决定了网络的稳定性和维护成本。
- 总线型:所有设备连在一条“总线”(如同轴电缆)上,成本低但故障难排查(某一点断了整个网络瘫痪),已淘汰😣;
- 星型:所有设备连到一个中心设备(如交换机),故障只影响单台设备,维护方便,是现在最常用的结构;
- 环型:设备首尾相连成环,数据单向传输,稳定性高但扩容难(如早期的令牌环网);
- 网状型:每台设备都和多台设备连接,可靠性最高(多条备用路径),但成本高,仅用于核心网络(如互联网骨干网)。
-
按使用者划分
- 公用网:面向公众开放,由运营商维护,比如中国移动的宽带、联通的 5G 网络;
- 专用网:仅特定用户使用,比如企业内网、政府专网、银行内部网络,安全性高。
1.4 网络性能指标
我们常说“网速快”“网络卡”,其实是对性能指标的直观感受。网络核心指标如下:
-
速率(比特率):单位时间内传输的二进制位数(,如 ),是我们常说的“网速”,比如家庭宽带 指的就是速率;
-
带宽:网络的 最大传输能力,比如 带宽意味着最快能传 ,实际速率会低于带宽(受信号衰减、设备性能影响);
-
时延:数据从发送端到接收端的时间,分为4类:
- 传播时延:信号在介质中传输的时间(如光纤中光的传播速度);
- 传输时延:数据全部发出的时间(如 数据用 速率传,传输时延= 秒);
- 处理时延:设备(如路由器)处理数据的时间;
- 排队时延:数据在设备缓存中等待的时间(网络拥堵时排队时延会增加);
-
丢包率:传输过程中丢失的数据包占总数据包的比例,丢包率高会导致视频卡顿、文件传输失败(正常网络丢包率应低于1%);
-
吞吐量:实际传输的有效数据量(排除协议开销),比如 带宽的吞吐量可能只有 (因为要传TCP/IP头部信息)。
2 网络分层结构:为什么要分层?
如果让一台电脑直接给另一台电脑发数据,需要处理 “转电信号、加地址、选路径、保证可靠” 等很多任务——这样逻辑太复杂了,而且有一个模块出了问题也难排查😣。
“分层”的思路就像“寄快递”:你(应用层)只需要把快递交给快递员(传输层),不用管快递怎么运到分拣中心(网络层)、怎么装车(数据链路层)、用什么交通工具(物理层)。每层只做自己的事,下层为上层提供服务,上层不用关心下层的细节。
目前主流的分层模型有两种:OSI七层模型 和 TCP/IP四层模型。
2.1 OSI 七层模型(理论模型)
OSI(开放式系统互联)是国际标准化组织(ISO)提出的理论模型,分为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的 IP192.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协议(载波监听多点接入/碰撞检测):
- 设备发数据前,先监听线路是否空闲;
- 如果空闲,就发数据;如果忙,就等待;
- 发数据时 如果检测到冲突(比如两台设备同时发),就 立即停止发送,并发送“冲突信号”,让其他设备知道有冲突;
- 所有设备等待随机时间后,再重新尝试发送。
3.2.3 集线器的特点:已被淘汰的“老古董”
集线器的缺点非常明显,现在几乎被交换机取代:
- 共享带宽:比如 口集线器,总带宽 ,每台设备平均只有 ;
- 所有端口在一个冲突域:一台设备发数据,所有端口都能收到(广播),不仅效率低,还不安全(别人能截获数据)😋;
- 半双工模式:无法同时收发数据,延迟高;
- 无智能转发:不管目的地址,一律广播,浪费带宽。
4 数据链路层:给数据“加MAC地址”
物理层 解决了信号传输,但 不知道“数据要发给谁”——数据链路层的核心作用就是“给数据加MAC地址”,实现设备到设备的精准通信。
数据链路层的核心设备是 网桥 和 交换机。
4.1 MAC 地址:“网络身份证号”
MAC 地址(Media Access Control Address,媒体访问控制地址),也称为 物理地址 或 硬件地址,是分配给网络设备(如电脑网卡、手机、路由器、打印机等)网络接口控制器(NIC)的 唯一标识符。
它就像你设备的“网络身份证号”,用于在局域网(如家庭、公司内部网络)中唯一识别每一台设备。
MAC 地址的核心特点:
-
唯一性:
- 理论上,全球每个网络接口的 MAC 地址都是独一无二的(由设备制造商烧录在硬件中)。
- 地址由 IEEE(电气和电子工程师协会)管理和分配给制造商,前半部分标识厂商(OUI - 组织唯一标识符),后半部分由厂商自行分配。
-
格式:
- 通常由 12 个十六进制数字(0-9, A-F)组成。
- 常见的表示方式是用冒号
:
或连字符-
分隔成 6 组,例如:00:1A:C2:7B:00:47
00-1A-C2-7B-00-47
-
层级:
- 工作在 OSI 模型的第二层——数据链路层。
- 主要用于 局域网 内的设备间通信。当数据包在同一个网络(如你的家庭 WiFi)内传输时,交换机等设备依靠 MAC 地址来确定数据应该发送给哪台具体的设备。
-
与 IP 地址的区别:
- MAC 地址:是 物理的、硬件层面 的地址,通常固定不变(虽然可以软件修改,称为“MAC 地址欺骗”),用于 本地网络 寻址。
- IP 地址:是 逻辑的、软件层面 的地址,可以动态分配(如 DHCP)或手动设置,用于在 互联网或不同网络 之间进行路由和寻址。
- 类比:可以把 MAC 地址想象成你的“身份证号”(唯一且相对固定),IP 地址想象成你的“邮寄地址”(可能变化,用于定位你在哪个区域)。
-
主要用途:
- 局域网内设备识别与通信:交换机通过 MAC 地址表来转发数据帧到正确的端口。
- 网络访问控制:一些路由器或企业网络会设置 MAC 地址过滤,只允许特定设备接入。
- DHCP 分配:DHCP 服务器有时会根据设备的 MAC 地址为其分配固定的 IP 地址(IP-MAC 绑定)。
- 设备追踪(在特定环境下):例如,在大型商场或机场的 WiFi 中,可以通过 MAC 地址大致追踪设备的移动轨迹(出于隐私考虑,现代操作系统如 iOS 和 Android 默认会使用随机 MAC 地址连接 WiFi)。
4.2 网桥:连接两个局域网的“过滤器”
网桥(Bridge) 工作在数据链路层,用于连接两个不同的局域网(比如两个办公室的LAN),并根据 MAC 地址“过滤帧”——只把需要跨网段传输的帧转发过去,减少不必要的广播。
-
工作原理:
- 网桥有两个端口,分别连接两个 LAN;
- 学习:收到帧时,记录“源 MAC 地址”和对应的端口(比如 LAN1 的设备 MAC 都存在端口 1);
- 转发:收到帧后,查看“目的 MAC 地址”,如果在另一个 LAN,就转发;如果在同一个 LAN,就丢弃(不转发);
-
特点:
- 隔离冲突域:两个 LAN 分别是一个冲突域,减少冲突;
- 不能隔离广播域:如果收到广播帧(比如 ARP 请求),还是会转发到另一个 LAN;
- 端口少:通常只有 2 个端口,现在被多端口的交换机取代。
4.3 交换机(Switch):多端口的“智能网桥”
交换机 是数据链路层的核心设备,相当于“多端口的网桥”,更智能、更快,是现在局域网的核心连接设备(比如家庭的千兆交换机、公司的核心交换机)。
4.3.1 什么是交换机
交换机(Ethernet Switch) 有多个端口(常见 8口、16口、24口、48口),每个端口可以连接电脑、服务器、打印机等设备,能根据 MAC 地址“定向转发”数据,而不是像集线器那样广播。
4.3.2 交换机的工作模式:全双工
交换机的每个端口都是 全双工模式 —— 同一时间,一个端口可以同时发数据和收数据。因为每个端口独占带宽(比如 24口千兆交换机,每个端口都是 带宽)。
全双工模式下,不需要 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地址”和“对应端口”的映射关系,就像我们手机里的通讯录(名字 手机号)。
MAC 地址表的工作流程:
- 初始化:刚通电时,MAC地址表是空的;
- 学习:比如电脑A(MAC-A)通过端口1给电脑B(MAC-B)发数据,交换机收到帧后,会把“MAC-A 端口1”记录到表中;
- 转发:交换机查看帧的目的MAC(MAC-B),如果表中有MAC-B对应的端口(比如端口2),就直接转发到端口2;如果没有(未知MAC),就广播到所有端口(除了入端口);
- 老化:如果某个MAC地址长时间(比如5分钟)没有数据传输,交换机会删除该条目,避免表过大。
举个例子:第一次A给B发数据,交换机广播;B收到后回复A,交换机学习到“MAC-B 端口2”;之后A再给B发数据,交换机就直接转发到端口2,不再广播。
5 网络层:实现“跨网段通信”
数据链路层解决了同一局域网内的设备通信(比如 192.168.1.2
给 192.168.1.3
发数据),但 如果要跨网段通信(比如 192.168.1.2
给 192.168.2.3
发数据),就需要网络层。
网络层的核心是“IP地址”和“路由器”。
5.1 网络层的功能和服务
网络层的核心目标是“实现跨网段的分组转发”,主要功能如下:
- IP寻址:给每个设备分配唯一的IP地址(如
192.168.1.2
),确定数据的“源地址”和“目的地址”; - 路由选择:在多个网段之间选择最优路径(比如从北京到上海,选联通还是电信的链路);
- 分组转发:根据路由表,将数据包转发到下一个设备(比如路由器);
- 拥塞控制:当网络拥堵时,减少数据包发送,避免丢包(如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
)传文件”。⭐
-
“大方向定位”—— 靠地址的前 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 段)负责 “跨区域找目标网段”,就像快递先到 “目标街道”,数据先到 “目标局域网”。
-
“具体定位”—— 靠地址的第 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.XX
或 192.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
,特点是:
-
适合小型局域网:每个
192.168.X.0
网段(如192.168.1.0
)最多能容纳 254 台设备(IP 从192.168.1.1
到192.168.1.254
),刚好满足家庭(几台手机 + 电脑 + 电视)、小公司(几十台设备)的需求; -
默认配置方便:路由器厂商(如华为、TP-Link)默认把内网 IP 设为
192.168.1.1
或192.168.0.1
,用户不用手动配置,插电就能用; -
不冲突:因为私有 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.1
到127.255.255.254
)都指向本机。最常用的是127.0.0.1
。 - 它有一个对应的主机名,叫做
localhost
。在自己的电脑上,ping localhost
和ping 127.0.0.1
的效果是完全一样的。
工作机制:
- 当你的程序通过
127.0.0.1
发送网络数据时,操作系统内核的网络协议栈会直接处理这个数据包,而不会通过任何真实的物理或虚拟网络硬件(如网卡、Wi-Fi 适配器)发送出去。 - 数据包直接从“发送端”回环到本机的“接收端”。这个过程完全在操作系统内部完成,速度极快,且不依赖任何外部网络环境。
127.0.0.1
的主要用途 🤔:
- 本地服务和开发测试:这是最重要的用途。当开发一个网络应用(如网站、数据库、游戏服务器)时,可以先在本地机器上同时运行客户端和服务器端进行测试,而无需依赖另一台电脑或复杂的网络配置。
- 进程间通信(IPC):两个或多个运行在同一台机器上的进程可以通过 TCP/IP 协议进行通信,就像它们在不同的机器上一样。这为构建分布式系统提供了统一的通信模型。
- 访问本地主机服务:例如,在本机搭建了一个 Web 服务器(如 Apache 或 Nginx),就可以在浏览器中输入
http://127.0.0.1
或http://localhost
来访问它。 - 隔离与安全:一些服务可能只绑定到
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 分钟)。
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 的工作流程(以电脑连路由器为例):
- 电脑启动后,发送 DHCP Discover 广播:“有没有 DHCP 服务器?我需要 IP 地址”;
- 路由器(内置 DHCP 服务器)收到后,发送 DHCP Offer:“我是 DHCP 服务器,给你分配 IP
192.168.1.100
,子网掩码255.255.255.0
”; - 电脑收到 Offer 后,发送 DHCP Request 广播:“我接受这个 IP 地址”;
- 路由器发送 DHCP ACK:“确认,IP 地址租期为 24 小时”;
- 电脑获得 IP 地址,租期快到前会申请续租。
5.6 ICMP 协议(互联网控制消息协议)
ICMP 协议用于 “在 IP 网络中传递控制消息”,比如报错、测试连通性。我们常用的 ping 命令,就是基于 ICMP 协议。
ping 的工作流程:
- 发送端(A)发送 ICMP Echo Request(回显请求)数据包,包含一定长度的数据;
- 接收端(B)收到后,发送 ICMP Echo Reply(回显响应)数据包,返回相同的数据;
- 如果 A 收到 Reply,说明 A 和 B 连通;如果超时,说明不通(可能是网络故障、防火墙拦截)。
ICMP 还能返回错误信息,比如 “目标不可达”“超时”“源抑制(拥塞)” 等,帮助排查网络问题。
5.7 路由器(Router):跨网段通信的 “网关”
路由器 是网络层的核心设备,相当于 “网络之间的桥梁”—— 实现不同网段的通信(比如家庭内网 192.168.1.0
和公司内网 192.168.2.0
),也是连接局域网和互联网的 “网关”。
5.7.1 路由器的主要功能
- 路由选择:这是路由器的核心功能——根据“路由表”选择最优路径,将数据包转发到下一个路由器;
- 分组转发:收到数据包后,查看目的IP地址,匹配路由表,转发到下一跳;
- 隔离广播域:每个端口对应一个网段,广播帧(如ARP请求)不会跨端口转发,减少广播风暴;
- 网络地址转换(NAT):将局域网的私有IP(如
192.168.1.100
)转换成公网IP(如202.103.XX.XX
),实现多台设备共享一个公网 IP 上网(家庭路由器的核心功能)。
5.7.2 路由表及其原理
路由器能选择路径,靠的是内部的路由表 —— 记录了 “目的网络”“下一跳地址”“出接口”“度量值(路径优先级)” 等信息,就像 “地图上的路线”。
路由表的条目生成方式:
-
静态路由:手动配置的路由条目(比如网络管理员手动添加“到
192.168.2.0
网段,下一跳是192.168.1.1
”);- 优点:简单、可靠,适合小型网络;
- 缺点:网络拓扑变化时需要手动修改,不适合大型网络。
-
动态路由:通过动态路由协议(如 RIP、OSPF、BGP)自动学习的路由条目;
- 优点:网络拓扑变化时自动更新路由表,适合大型网络(如互联网);
- 缺点:配置复杂,需要协议支持。
路由转发原理:
以“电脑A(192.168.0.105
)给电脑D(192.168.1.11
)发数据”为例,路由器的转发流程:
- A 把数据包 经过交换机发到网关(路由器的内网端口
192.168.0.107
,对应端口e3
); - 路由器收到数据包,查看目的 IP(
192.168.1.11
),发现两者网络号处于不同的局域网,源 IP 网络号为192.168.0.0
,目的 IP 网络号为192.168.1.0
,需要查找匹配路由表; - 路由表中显示“目的网络
192.168.1.0
,下一跳是192.168.1.23
(另一个路由器的端口),出接口是e2
”; - 路由器将数据包转发到下一跳(
192.168.1.23
); - 最终数据包通过多个路由器(可能),转发到达交换机,交换机发现 MAC 地址是它局域网下的D机器,最后把数据包发送给 D。
如果路由表里找不到,会打到默认网关,从 e1
口发出,发到 IP 192.0.2.1
。这个路由器的路由表不知道该去哪,也许可以其他路由器可以知道。😋
5.8 三层交换机
传统的交换机工作在数据链路层(二层),只能转发同一网段的帧;路由器工作在网络层(三层),能转发跨网段的数据包,但转发速度比交换机慢。
三层交换机 是“二层交换机+三层路由模块”的结合体,既具备交换机的高速转发能力,又具备路由器的跨网段路由功能,适合局域网内不同网段的互联(比如企业内部分为 192.168.1.0
、192.168.2.0
、192.168.3.0
三个网段,用三层交换机互联)。
三层交换机 对比 路由器:
- 转发速度:三层交换机更快(基于硬件转发),路由器较慢(基于软件转发);
- 功能:路由器支持更多高级功能(如 VPN、防火墙),三层交换机功能更简单;
- 适用场景:三层交换机用于局域网内跨网段互联,路由器用于局域网与互联网互联。
6 传输层:实现“端到端的可靠通信”
网络层解决了“跨网段转发数据包”的问题,但不保证数据包的可靠性(可能丢包、乱序);数据链路层解决了“设备到设备的帧转发”,但不关心“哪个应用程序”接收数据。
传输层的核心作用是:在两个应用程序之间建立“端到端”的通信,并保证 数据的可靠传输(或满足实时性需求)。😌
6.1 传输层的基础概念
6.1.1 传输层的核心功能
- 端到端通信:将数据从 “发送端的应用程序”传到“接收端的应用程序”(比如A的QQ传到B的QQ),而不是“设备到设备”;
- 可靠传输:通过确认、重传、排序等机制,保证数据不丢包、不重复、不乱序(TCP协议的核心);
- 流量控制:控制发送端的发送速率,避免接收端处理不过来导致丢包(TCP的滑动窗口机制);
- 拥塞控制:检测网络拥堵,减少发送速率,避免网络瘫痪(TCP的拥塞控制机制);
- 多路复用/分用:一个 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的核心特点:
- 无连接:发送数据前不需要建立连接,直接发送数据报(Datagram);
- 不可靠:不保证数据能到达接收端,不确认、不重传、不排序,丢包后不处理;
- 面向报文:直接将应用层的数据封装成数据报,不拆分也不合并(应用层给多少数据,就传多少);
- 开销小:UDP头部只有8个字节(TCP头部有20-60字节),传输效率高;
- 支持广播/组播:可以向多个设备同时发送数据(如直播、组播会议)。
UDP适用场景:
UDP 适合“实时性优先,可靠性其次”的场景。
- 视频/音频传输:如直播、视频通话(丢几帧不影响整体观看);
- 游戏数据传输:如王者荣耀、英雄联盟(延迟比丢包更重要);
- DNS查询:DNS请求数据量小,需要快速响应;
- 物联网设备:如传感器数据传输(数据量小,实时性要求高)。
6.3 TCP协议:追求“可靠性”的核心协议
TCP(传输控制协议) 是传输层的“核心协议”,核心特点是“面向连接、可靠传输、面向字节流、开销大”,是互联网中最常用的协议(如 HTTP、HTTPS、FTP、邮件都基于 TCP)。
TCP的核心特点:
- 面向连接:通信前必须建立连接(三次握手),通信后必须断开连接(四次挥手);
- 可靠传输:通过“确认重传、排序、校验、流量控制、拥塞控制”保证数据不丢包、不重复、不乱序;
- 面向字节流:将应用层的数据拆分成多个“段(Segment)”发送,接收端再合并成字节流交给应用层;
- 全双工通信:通信双方可以同时发送和接收数据;
- 开销大:TCP头部有 20-60 字节(包含序列号、确认号、窗口大小等字段),传输效率比 UDP 低。
TCP核心机制:
-
三次握手(建立连接) 🤝:确保双方都能收发数据,避免“失效的连接请求”被误处理;
- 客户端(A)发SYN包:“我想连接你,我的初始序列号是x”;
- 服务器(B)发SYN+ACK包:“我同意连接,我的初始序列号是y,确认收到你的x”;
- 客户端(A)发ACK包:“确认收到你的y,连接建立”。
-
数据传输 ✉️:
- 发送方(如客户端)将 数据分割成段,按顺序发送,并为每个段分配一个序列号。
- 接收方(如服务器)收到数据段后,会发送一个 ACK(确认)包回来,告知发送方“我已成功收到第 X 号数据”。
- 如果发送方在一定时间内没有收到 ACK,它会认为数据包丢失,并重新发送该数据包。这就是可靠性的核心。
-
四次挥手(断开连接) 👋:确保双方都已完成数据传输,避免数据丢失;
- 客户端(A)发FIN包:“我没有数据要发了,想断开连接”;
- 服务器(B)发ACK包:“确认收到,我还在处理剩余数据”;
- 服务器(B)发FIN包:“我也没有数据要发了,可以断开连接”;
- 客户端(A)发ACK包:“确认收到,断开连接”。
TCP的应用场景:
TCP 适合“可靠性优先,实时性其次”的场景。
- 网页访问(HTTP/HTTPS):网页内容不能丢包,否则显示错乱;
- 文件传输(FTP):传文件不能丢包,否则文件损坏;
- 电子邮件(SMTP/POP3):邮件不能丢失;
- 即时通信的文本消息(如微信文字):文字消息需要可靠传输,不能丢。
7 应用层:直接为“应用程序”服务
应用层是网络的最上层,直接为应用程序提供网络服务——我们日常用的浏览器、QQ、邮件客户端,都是通过应用层协议与服务器通信的。
应用层不关心数据的传输细节(那是下四层的事),只关心“如何满足应用程序的需求”(比如浏览网页需要 HTTP 协议,发邮件需要 SMTP 协议)。
7.1 应用层的基础概念
7.1.1 应用层的核心功能
- 为应用程序提供网络接口:比如浏览器通过 HTTP 协议访问网页,QQ通过自定义协议发送消息;
- 处理应用层协议细节:比如HTTP协议处理“请求行、响应头、响应体”的格式,DNS协议处理“域名到IP的解析”;
- 数据格式转换:比如将应用程序的文本数据转换成网络传输的二进制数据,接收端再转换回文本;
- 用户认证与授权:比如HTTP的Basic认证、HTTPS的证书认证,确保通信安全。
7.1.2 应用层的两种工作模式:C/S与B/S
-
C/S模式(客户机/服务器模式)
- 结构:分为“客户端(Client)”和“服务器(Server)”两部分;
- 客户端:安装在用户设备上的应用程序,如QQ客户端、微信客户端、FTP客户端;
- 服务器:运行在远程机房的服务器程序,如QQ服务器、微信服务器、FTP服务器;
- 工作流程:客户端主动向服务器发送请求,服务器接收请求后处理并返回响应;
- 特点:
- 客户端需要安装专门的软件;
- 服务器需要24小时开机,处理大量客户端请求;
- 安全性高(客户端和服务器之间的协议可自定义);
- 典型应用:QQ、微信、穿越火线😋。
- 结构:分为“客户端(Client)”和“服务器(Server)”两部分;
-
B/S模式(浏览器/服务器模式)
- 结构:分为“浏览器(Browser)”和“服务器(Server)”两部分,没有专门的客户端;
- 浏览器:如Chrome、Edge、Firefox,是通用的客户端软件;
- 服务器:如Web服务器(Nginx、Apache)、应用服务器(Tomcat、Spring Boot);
- 工作流程:用户在浏览器中输入 URL,浏览器发送HTTP请求到服务器,服务器返回 HTML 页面,浏览器渲染页面并显示;
- 特点:
- 不需要安装专门的客户端,用浏览器即可;
- 开发和维护成本低(只需维护服务器);
- 安全性依赖 HTTP/HTTPS 协议;
- 典型应用:百度、淘宝、在线文档(如腾讯文档)、Qwen网页端。
- 结构:分为“浏览器(Browser)”和“服务器(Server)”两部分,没有专门的客户端;
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的工作流程:
- 用户在浏览器输入
www.baidu.com
,浏览器 先查询本地DNS缓存(电脑自带的缓存),如果有对应的 IP,直接访问; - 如果本地缓存没有,浏览器向“本地 DNS 服务器”(通常是路由器或运营商提供的 DNS,如
114.114.114.114
)发送 DNS 查询请求; - 本地 DNS 服务器查询自己的缓存,如果有,返回IP;如果没有,向“根DNS服务器”发送请求;
- 根 DNS 服务器返回“.com顶级域DNS服务器”的地址;
- 本地 DNS 服务器向“.com顶级域DNS服务器”发送请求,返回“baidu.com权威 DNS 服务器”的地址;
- 本地 DNS 服务器向“
baidu.com
权威DNS服务器”发送请求,返回www.baidu.com
的 IP 地址(如180.101.49.12
); - 本地 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
、图片、视频);
- ASCII模式:传输文本文件(如
- 支持用户认证:需要输入用户名和密码才能登录 FTP 服务器(也支持匿名登录)。
FTP的应用场景:
- 网站维护:开发者用 FTP 客户端(如FileZilla)将网页文件上传到Web服务器;
- 企业文件共享:企业搭建 FTP 服务器,供员工上传下载工作文件;
- 软件下载:早期的软件下载站用 FTP 提供下载服务(现在多被 HTTP 下载取代)。
7.3 电子邮件协议与WWW、HTTP协议
7.3.1 电子邮件协议:SMTP、POP3、IMAP
电子邮件(如QQ邮箱、163邮箱)的传输需要三个核心协议配合:
-
SMTP协议(简单邮件传输协议)
- 作用:发送邮件,负责将邮件从“发件人邮箱服务器”传输到“收件人邮箱服务器”;
- 基于TCP协议(端口25,加密版用465);
- 流程:比如用户A(a@qq.com)给用户B(b@163.com)发邮件,A的邮箱客户端通过 SMTP 协议将邮件发送到 QQ 邮箱服务器,QQ 邮箱服务器再通过 SMTP 协议将邮件转发到163邮箱服务器。
-
POP3协议(邮局协议版本3)
- 作用:接收邮件,负责将“收件人邮箱服务器”中的邮件下载到“本地客户端”;
- 基于TCP协议(端口110,加密版用995);
- 特点:
- 下载邮件后,默认将服务器上的邮件删除(可设置保留);
- 不支持邮件同步,本地修改(如标记已读)不会同步到服务器;
- 适用场景:适合用单台设备接收邮件(如个人电脑)。
-
IMAP协议(互联网邮件访问协议)
- 作用:接收邮件,比POP3更先进,支持“邮件同步”;
- 基于TCP协议(端口143,加密版用993);
- 特点:
- 邮件默认保存在服务器上,本地客户端只下载邮件的摘要(如发件人、主题),查看时再下载完整内容;
- 支持邮件同步:本地修改(如标记已读、删除、移动文件夹)会同步到服务器,多台设备(电脑、手机)访问时邮件状态一致;
- 适用场景:适合用多台设备接收邮件(如同时用电脑和手机查邮箱)。
7.3.2 WWW与HTTP协议:网页访问的核心
-
WWW(万维网)
WWW(World Wide Web,万维网)是互联网上最常用的服务,由无数“网页”组成,用户通过浏览器访问网页。
WWW的核心组成:
- 网页:由 HTML(结构)、CSS(样式)、JavaScript(交互)组成;
- URL(统一资源定位符):访问网页的地址,如
https://www.baidu.com/s?wd=计算机网络
; - Web服务器:存储网页文件,响应浏览器的请求(如Nginx、Apache)。
-
HTTP协议(超文本传输协议)
HTTP 协议是 WWW 的“核心通信协议”,负责“浏览器和Web服务器之间的请求与响应”,比如打开百度,浏览器就是通过 HTTP 协议向百度服务器请求网页,服务器通过 HTTP 协议返回网页内容。
HTTP的工作流程:
- 用户在浏览器输入URL(
https://www.baidu.com
); - 浏览器解析 URL,确定 Web 服务器的域名(
www.baidu.com
),通过 DNS 解析得到 IP 地址; - 浏览器与百度服务器建立 TCP 连接(三次握手);
- 浏览器发送 HTTP 请求(Request):包含请求行(如GET / HTTP/1.1)、请求头(如User-Agent、Cookie)、请求体(可选,如表单数据);
- 百度服务器处理请求,返回 HTTP 响应(Response):包含状态码(如 200 表示成功)、响应头(如Content-Type、Server)、响应体(HTML 网页内容);
- 浏览器接收响应,解析HTML、CSS、JavaScript,渲染网页并显示;
- (可选)TCP连接断开(四次挥手)。
HTTP的特点:
- 基于TCP协议(可靠传输,确保网页内容完整);
- 无状态:服务器不保存客户端的状态(比如你第一次访问百度和第二次访问,服务器不知道你是同一个人),需要用Cookie、Session来保持状态;
- 明文传输:HTTP请求和响应都是明文,容易被截获和篡改(不安全),所以现在主流用HTTPS。
- 用户在浏览器输入URL(
-
HTTPS协议(HTTP+SSL/TLS)
HTTPS是“HTTP+SSL/TLS加密”的组合,解决了HTTP明文传输的安全问题,现在所有涉及支付、登录的网站(如淘宝、网银)都用HTTPS。
HTTPS的核心特点:
- 加密传输:通过SSL/TLS协议对HTTP请求和响应进行加密,防止数据被截获;
- 身份认证:Web服务器需要安装“SSL证书”(由权威机构颁发),浏览器验证证书的合法性,确保访问的是真实服务器(不是钓鱼网站);
- 基于TCP协议,端口号443;
- 开销比HTTP大(加密解密需要时间),但安全性高。
总结
从两台电脑直连,到亿万台设备组成的互联网,核心逻辑就是“分层协作”:
- 物理层:传信号,解决“能不能传”;
- 数据链路层:加MAC地址,解决“发给哪个设备”;
- 网络层:加IP地址、选路径,解决“跨网段怎么传”;
- 传输层:加端口号、保证可靠,解决“发给哪个应用”;
- 应用层:提供服务,解决“应用程序需要什么”。
每一层只做自己的事,下层为上层提供服务,上层不用关心下层的细节——这就是计算机网络的“分层思想”。😎