Linux 网络基础
网络发展
计算机早期主要用于军事领域,那时的计算机处于独立模式,彼此之间互不相连。
![图片:独立计算机模式]
随着需求增加,多台计算机连接在一起实现了网络互联。
![图片:网络互联示意图]
当计算机数量增多时,通过交换机和路由器连接形成局域网(LAN);而将远隔千里的计算机连接在一起的则是广域网(WAN)。
![图片:广域网示意图]
其实局域网和广域网的概念是相对的。家庭路由器属于局域网,连接社区的则是广域网;社区本身可视为局域网,连接各社区的就是广域网。以此类推,中国网络可视作局域网,连接世界才是广域网。
认识协议
协议本质上是一种约定。计算机之间通过光信号或电信号交流,利用频率强弱代表 0 和 1。要想传递不同信息,必须约定好数据格式,比如 000 代表什么含义。
![图片:信号与数据格式]
要让多台计算机相互通信,就必须约定共同的标准,这就是网络协议。
网络协议
协议分层
分层思想可以通过打电话的例子来理解:语言层有汉语或英语协议,通信设备层也有相应的硬件协议。
![图片:电话通信分层]
如果只用英语交流,只需变更语言层协议,不必修改电话设备协议;改成无线电协议,也不必改动语言层。分层最大的好处在于封装,这样某一层的变化不会影响其他层。实际网络协议比这个例子更复杂,层数更多。
OSI 七层协议
该协议将网络从逻辑上分为 7 层,概念清晰且理论完整:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP/IP 五层(四层)协议
学习时通常将上三层合并称为应用层。TCP/IP 五层协议有时也被称为四层协议,因为物理层往往不是重点。之所以叫 TCP/IP,是因为 TCP 代表传输层,IP 代表网络层,这两层是我们学习的核心。
每一层都有对应的协议:
- 应用层:处理发来的数据(如 https, http, ftp, smtp)
- TCP 协议:解决长距离传输中的数据丢失问题
- IP 协议:负责如何定位主机
- 数据链路层:保证数据准确到达下一个设备
网络传输基本流程
网络通信的本质就是贯穿协议栈的过程。操作系统中的网络协议栈与网络通信紧密相关。
![图片:协议栈与 OS 关系]
数据包的封装和解包
当用户层拿到有效载荷后,会添加报头传给传输层,传输层再添加报头传给网络层,依此类推直到物理层。数据传到另一台主机后,接收端从下往上逐层解包:数据链路层剥离自己的报头,向上传输;网络层解包自己的报头;传输层解包自己的报头;最后应用层解包,拿到原始数据。
![图片:封装与解包过程]
扩展理解:
- 每一层协议都要提供一种能力,即分离报头和有效载荷的能力。
- 每一层协议都要在报头中提供决定将有效载荷提供给上一层协议的信息。
MAC 地址
MAC 地址用于识别数据链路层的相连节点。它是 48 位(6 字节),用十六进制加冒号表示,例如 08:00:27:03:fb:19。MAC 地址通常在网卡出厂时设置,具有唯一性。
![图片:MAC 地址结构]
在局域网中,多台主机共享同一信道。主机 H1 发送数据时,所有主机都会收到,但只有目标主机(如 M10)会向上层传输,其他主机(如 H2)发现地址不匹配则直接丢弃。
同一时间只能有一台主机向局域网发送数据,因此发送前需执行避免碰撞的算法。交换机的核心工作是划分碰撞域,当左侧主机交换数据时,数据不会传到右侧,反之亦然,从而减少干扰。


