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 协议,这一天被视为互联网的“生日”。
计算机网络发展时间线 1950s 终端网络 1969 ARPANET 1981 TCP/IP 至今 移动互联 1983 年 ARPANET 全面切换至 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、光纤、集线器
记忆口诀:“物链网传会表应”——从下往上对应物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
OSI 七层模型结构 7 应用层 (Application) 6 表示层 (Presentation) 5 会话层 (Session) 4 传输层 (Transport) 3 网络层 (Network) 2 数据链路层 (Data Link) 1 物理层 (Physical) 数据流方向

1.3 TCP/IP 四层模型

TCP/IP 模型是互联网事实上的标准协议栈,它比 OSI 模型更简洁,将七层合并为四层。本课程后续所有 Socket 编程均基于此模型。

TCP/IP 层对应 OSI 层核心协议Socket 编程关注点
应用层5–7 层HTTP、FTP、SMTP、WebSocket应用协议解析、数据格式
传输层4 层TCP、UDPSocket 类型(SOCK_STREAM / SOCK_DGRAM)
网络层3 层IP、ICMP、ARPIP 地址、路由
网络接口层1–2 层Ethernet、Wi-FiMAC 地址、帧封装
重要概念:TCP/IP 模型中的“网络接口层”在 OSI 中对应物理层和数据链路层,但在实际编程中我们通常不直接操作这一层,而是由操作系统内核和网卡驱动完成。
TCP/IP 四层模型 vs OSI 七层模型 应用层 传输层 网络层 网络接口层 应用层 / 表示层 / 会话层 传输层 网络层 数据链路层 / 物理层 TCP/IP 模型将 OSI 上三层合并为应用层,下两层合并为网络接口层

1.4 数据封装与解封装过程

当数据从一台主机发送到另一台主机时,每一层都会在数据前添加自己的头部信息(某些层还会添加尾部),这个过程称为封装。接收端则逐层去掉头部,还原原始数据,称为解封装。

1.4.1 封装过程(发送端)

  1. 应用层:生成原始数据(如 HTTP 请求报文)。
  2. 传输层:添加 TCP/UDP 头部(包含源端口、目的端口),形成数据段。
  3. 网络层:添加 IP 头部(包含源 IP、目的 IP),形成数据包。
  4. 数据链路层:添加 MAC 头部和尾部(包含源 MAC、目的 MAC、FCS 校验),形成数据帧。
  5. 物理层:将帧转换为比特流,通过物理介质发送。

1.4.2 解封装过程(接收端)

  1. 物理层:接收比特流,还原为数据帧。
  2. 数据链路层:检查 MAC 地址和 FCS 校验,去掉头部和尾部,得到数据包。
  3. 网络层:检查 IP 地址,去掉 IP 头部,得到数据段。
  4. 传输层:检查端口号,去掉 TCP/UDP 头部,得到原始数据。
  5. 应用层:将数据交给对应应用程序处理。
核心要点:封装是“从上到下”加头,解封装是“从下到上”去头。每一层只关心自己层的头部信息,这种分层设计使得网络协议具有高度的模块化和可扩展性。
数据封装与解封装过程 发送端(封装) 应用层数据 TCP 头 + 数据 IP 头 + TCP 头 + 数据 MAC 头 + IP 头 + TCP 头 + 数据 + FCS 比特流 010101... 网络传输 物理介质 接收端(解封装) 比特流 010101... MAC 头 + IP 头 + TCP 头 + 数据 + FCS IP 头 + TCP 头 + 数据 TCP 头 + 数据 应用层数据 封装:从上到下逐层加头 → 解封装:从下到上逐层去头 每一层只处理自己层的头部,对上层数据透明

1.5 各层协议数据单元(PDU)

在不同层次中,数据单元有不同的名称,这是网络面试和开发中常见的概念。

层次PDU 名称封装内容
应用层报文(Message)原始应用数据
传输层数据段(Segment) / 数据报(Datagram)传输层头 + 应用数据
网络层数据包(Packet)网络层头 + 传输层数据
数据链路层数据帧(Frame)数据链路层头 + 网络层数据 + 尾部
物理层比特流(Bits)原始二进制位
面试高频题:请描述从浏览器输入 URL 到页面显示的数据封装和解封装全过程。答案要点:应用层生成 HTTP 请求 → 传输层封装 TCP 段 → 网络层封装 IP 包 → 数据链路层封装帧 → 物理层发送比特流 → 接收端反向解封装。

1.6 本章小结

  • 计算机网络经历了终端网络、分组交换、标准化互联和高速移动互联四个阶段。
  • OSI 七层模型是理论参考,TCP/IP 四层模型是实际工业标准。
  • 数据封装是逐层添加头部,解封装是逐层剥离头部。
  • 每一层的 PDU 名称不同:报文 → 数据段 → 数据包 → 数据帧 → 比特流。
  • 理解分层模型是学习 Socket 编程的基础,后续章节将深入传输层和网络层的具体实现。