Socket监听与TCP IP通信基础到实战 - 第1节
1.1 计算机网络发展史
计算机网络的发展经历了从单机通信到全球互联的演进过程,理解这段历史有助于把握 TCP/IP 协议栈的设计初衷。
| 阶段 | 时间 | 关键特征 | 代表性技术 |
|---|---|---|---|
| 第一代:面向终端的网络 | 1950s–1960s | 主机-终端模式,集中式计算 | IBM SNA、DECNET |
| 第二代:分组交换网络 | 1960s–1970s | 分组交换、分布式控制 | ARPANET(1969) |
| 第三代:标准化互联 | 1970s–1980s | 开放体系结构、协议分层 | TCP/IP v4(1981)、OSI 参考模型 |
| 第四代:高速与移动互联 | 1990s–至今 | 光纤、无线、云计算 | IPv6、5G、SDN |
关键里程碑:1983 年 1 月 1 日,ARPANET 正式从 NCP 切换到 TCP/IP 协议,这一天被视为互联网的“生日”。
1.2 OSI 七层模型
OSI(开放系统互连)参考模型由 ISO 于 1984 年发布,将网络通信划分为七个层次,每一层负责特定的功能,并为上层提供服务。
1.2.1 七层结构总览
| 层次 | 名称 | 核心功能 | 典型协议/设备 |
|---|---|---|---|
| 7 | 应用层 | 为用户应用提供网络服务接口 | HTTP、FTP、SMTP、DNS |
| 6 | 表示层 | 数据格式转换、加密、压缩 | SSL/TLS、JPEG、ASCII |
| 5 | 会话层 | 建立、管理、终止会话 | NetBIOS、RPC |
| 4 | 传输层 | 端到端可靠传输、流量控制 | TCP、UDP |
| 3 | 网络层 | 路由选择、逻辑寻址 | IP、ICMP、路由器 |
| 2 | 数据链路层 | 帧封装、介质访问控制、差错检测 | Ethernet、PPP、交换机 |
| 1 | 物理层 | 比特流传输、电气特性 | RJ45、光纤、集线器 |
记忆口诀:“物链网传会表应”——从下往上对应物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
1.3 TCP/IP 四层模型
TCP/IP 模型是互联网事实上的标准协议栈,它比 OSI 模型更简洁,将七层合并为四层。本课程后续所有 Socket 编程均基于此模型。
| TCP/IP 层 | 对应 OSI 层 | 核心协议 | Socket 编程关注点 |
|---|---|---|---|
| 应用层 | 5–7 层 | HTTP、FTP、SMTP、WebSocket | 应用协议解析、数据格式 |
| 传输层 | 4 层 | TCP、UDP | Socket 类型(SOCK_STREAM / SOCK_DGRAM) |
| 网络层 | 3 层 | IP、ICMP、ARP | IP 地址、路由 |
| 网络接口层 | 1–2 层 | Ethernet、Wi-Fi | MAC 地址、帧封装 |
重要概念:TCP/IP 模型中的“网络接口层”在 OSI 中对应物理层和数据链路层,但在实际编程中我们通常不直接操作这一层,而是由操作系统内核和网卡驱动完成。
1.4 数据封装与解封装过程
当数据从一台主机发送到另一台主机时,每一层都会在数据前添加自己的头部信息(某些层还会添加尾部),这个过程称为封装。接收端则逐层去掉头部,还原原始数据,称为解封装。
1.4.1 封装过程(发送端)
- 应用层:生成原始数据(如 HTTP 请求报文)。
- 传输层:添加 TCP/UDP 头部(包含源端口、目的端口),形成数据段。
- 网络层:添加 IP 头部(包含源 IP、目的 IP),形成数据包。
- 数据链路层:添加 MAC 头部和尾部(包含源 MAC、目的 MAC、FCS 校验),形成数据帧。
- 物理层:将帧转换为比特流,通过物理介质发送。
1.4.2 解封装过程(接收端)
- 物理层:接收比特流,还原为数据帧。
- 数据链路层:检查 MAC 地址和 FCS 校验,去掉头部和尾部,得到数据包。
- 网络层:检查 IP 地址,去掉 IP 头部,得到数据段。
- 传输层:检查端口号,去掉 TCP/UDP 头部,得到原始数据。
- 应用层:将数据交给对应应用程序处理。
核心要点:封装是“从上到下”加头,解封装是“从下到上”去头。每一层只关心自己层的头部信息,这种分层设计使得网络协议具有高度的模块化和可扩展性。
1.5 各层协议数据单元(PDU)
在不同层次中,数据单元有不同的名称,这是网络面试和开发中常见的概念。
| 层次 | PDU 名称 | 封装内容 |
|---|---|---|
| 应用层 | 报文(Message) | 原始应用数据 |
| 传输层 | 数据段(Segment) / 数据报(Datagram) | 传输层头 + 应用数据 |
| 网络层 | 数据包(Packet) | 网络层头 + 传输层数据 |
| 数据链路层 | 数据帧(Frame) | 数据链路层头 + 网络层数据 + 尾部 |
| 物理层 | 比特流(Bits) | 原始二进制位 |
面试高频题:请描述从浏览器输入 URL 到页面显示的数据封装和解封装全过程。答案要点:应用层生成 HTTP 请求 → 传输层封装 TCP 段 → 网络层封装 IP 包 → 数据链路层封装帧 → 物理层发送比特流 → 接收端反向解封装。
1.6 本章小结
- 计算机网络经历了终端网络、分组交换、标准化互联和高速移动互联四个阶段。
- OSI 七层模型是理论参考,TCP/IP 四层模型是实际工业标准。
- 数据封装是逐层添加头部,解封装是逐层剥离头部。
- 每一层的 PDU 名称不同:报文 → 数据段 → 数据包 → 数据帧 → 比特流。
- 理解分层模型是学习 Socket 编程的基础,后续章节将深入传输层和网络层的具体实现。