
一、计算机网络背景
在现实世界中,人之间需要协作,计算机作为工具也需要协作。计算机之间的通信依赖于网络。从诞生到操作系统,再到计算机网络技术,都是源于人们日益增长的需求。
网络发展过程:
- 早期计算机独立,通过软盘等硬件共享数据,效率低。
- 出现最初的网络,数据上传至服务器,实现共享。
- 交换机和路由器出现,形成局域网(LAN),支持不同地区通信。
- 多个局域网合并为广域网(WAN),覆盖范围更广。
二、初识协议
'协议'简单理解就是一种约定。计算机之间通过光信号和电信号传输,需约定频率或强弱来标识 0 和 1。为了让不同厂商、操作系统的计算机互相通信,需要制定共同遵守的标准,即网络协议。
三、协议分层
3.1 软件分层的好处
协议本质是软件,设计为层状结构以实现模块化和解耦合。例如打电话时,语言层用汉语,通信设备层有各自的协议,只要遵守协议,变更某一层不影响整体通信,降低维护成本。
3.2 OSI 七层模型
OSI(Open System Interconnection)七层网络模型是一个逻辑上的定义和规范。包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。工程实践中最终落地的是五层协议。
3.3 TCP/IP 五层(或四层)模型
TCP/IP 是一组协议的代名词,包含许多协议组成协议簇。它将应用层、表示层和会话层合并为应用层,形成了现在的 TCP/IP 五层模型。
四、再识协议
4.1 为什么要有 TCP/IP 协议?
单机内部也有协议(如 USB)。但网络通信距离以公里为单位,引发路由、定位、丢包处理等问题。TCP/IP 协议参考 OSI 七层模型设计,是解决网络通信的具体方案。
4.2 TCP/IP 协议与操作系统的关系
TCP/IP 的五层模型称为网络协议栈。网卡在底层硬件实现,应用层在最上层。操作系统中实现的传输层和网络层是核心。TCP 和 IP 是核心协议,因此整体称为 TCP/IP 协议。TCP/IP 协议是操作系统的一部分。
4.3 究竟什么是协议?
操作系统通常用 C 语言编写。协议属性(状态、地址、数据等)类型不同,使用结构体来描述协议。网络协议栈的每一层都存在这样的结构体,不同操作系统能识别各自层级的结构体进行通信。
五、网络传输基本流程
5.1 局域网通信原理
两台主机在同一局域网可直接通信。主机通过 MAC 地址识别目标。MAC 地址长度为 48 比特,由网卡出厂确定,唯一。以太网中存在碰撞检测和碰撞避免机制,保证同一时刻只允许一台主机发送数据,类似临界区访问。
5.2 两台主机发送消息的过程
发送方按协议栈从上到下封装,接收方从下到上解包。每一层添加报头,内容称为有效载荷。封装过程体现栈的后进先出特性。分用标识符用于确定数据交给上层哪种协议。数据链路层信息称为数据帧,网络层称为数据报,传输层称为数据段。
5.3 跨网络传输
跨网络传输需使用路由器和 IP 地址。IP 地址分为 IPv4 和 IPv6,IPv4 为 32 位整数,常用点分十进制表示。
IP 地址始终不变(源和目标),MAC 地址随经过的路由器变化(上一站和下一站)。数据包经过路由器时,源 IP 和目标 IP 不变,源 MAC 和目标 MAC 会更新。每经历一个路由器,都要进行向上交付、解包、向下交付、封装的过程。


