网络发展
早期计算机主要用于军事领域,处于单机独立运行状态。随着需求增加,多台计算机开始连接以实现互联。
局域网(LAN)通过交换机和路由器将数量众多的计算机连接在一起;广域网(WAN)则负责连接远隔千里的设备。这两者其实是相对概念:家庭路由器内部是局域网,连接社区的则是广域网;社区之间互联构成更大的广域网,而全球互联则构成了互联网。
认识协议
协议本质上是一种约定。计算机之间通过光信号或电信号交流,利用频率强弱代表 0 和 1。为了传递不同信息,必须约定好数据格式,例如 000 代表什么含义。
要让多台计算机相互通信,就必须遵循共同的标准,这就是网络协议。
协议分层
分层设计的核心优势在于封装。以打电话为例,语言层有汉语、英语等协议,通信设备层也有相应的传输协议。如果双方改用英语交流,只需变更语言层协议,无需改动电话硬件协议;若改为无线电通信,则只需调整通信层协议,语言层依然保持不变。
实际的网络协议结构比这个例子更复杂,层数更多。
OSI 七层模型
OSI 模型从逻辑上将网络分为七层,概念清晰且理论完整:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP 四层/五层模型
在实际学习中,通常将上三层合并为应用层,因此常称为 TCP/IP 五层模型。由于物理层涉及较少,有时也被简称为 TCP/IP 四层模型。
之所以重点强调 TCP/IP,是因为它们分别代表了传输层和网络层的核心协议。每一层都有对应的协议规范:
- 应用层:处理具体业务数据(如 HTTP, HTTPS, FTP, SMTP)。
- TCP 协议:解决长距离传输中的数据丢失问题。
- IP 协议:负责主机定位。
- 数据链路层:确保数据准确到达下一跳设备。
网络传输基本流程
网络通信的本质就是贯穿协议栈的过程。操作系统中的网络协议栈负责管理这一流程。
数据包的封装和解包
发送端的数据流向是从上到下:用户层拿到有效载荷后添加报头传给传输层,传输层再添加报头传给网络层,依此类推,直到物理层将数据发出。
接收端则相反:数据链路层解包属于自己的报头并向上传输,网络层、传输层、应用层依次解包,最终拿到原始数据。
关键点在于:
- 每一层协议都需提供分离报头和有效载荷的能力。
- 每一层的报头中需包含决定将有效载荷交给哪一层协议的信息。

MAC 地址
MAC 地址用于识别数据链路层的相连节点。它由 48 位(6 字节)组成,通常用十六进制加冒号表示,例如 08:00:27:03:fb:19。MAC 地址在网卡出厂时设定,通常具有唯一性。

在局域网中,多台主机共享同一信道。当主机 H1 发送数据时,所有主机都会接收到该数据帧。H2 发现目标 MAC 不是自己,直接丢弃;H10 发现是自己,则向上层传输。
为了避免冲突,同一时间只能有一台主机向局域网发送数据,发送前需执行避免碰撞的算法。交换机在此过程中起到关键作用:它能划分碰撞域。当左侧主机交换数据时,数据不会传到右侧;右侧发生碰撞也不会干扰左侧,从而提升了网络效率。


