第2章 网络基础
2.1 网络模型与协议
网络编程的基础是理解网络模型和协议。网络模型为网络通信提供了一个抽象框架,而协议则定义了通信的具体规则。
2.1.1 OSI 七层模型
OSI(Open Systems Interconnection,开放系统互联)模型是由国际标准化组织(ISO)提出的网络通信模型。它将网络通信分为七个层次,每一层都有特定的功能:
- 物理层(Physical Layer):负责物理连接的建立、维护和断开,包括传输介质、信号编码等。
- 数据链路层(Data Link Layer):负责物理地址的寻址、数据帧的传输和错误检测。
- 网络层(Network Layer):负责逻辑地址(如 IP 地址)的寻址和路由选择。
- 传输层(Transport Layer):负责端到端的通信,提供可靠的数据传输。
- 会话层(Session Layer):负责建立、管理和终止会话。
- 表示层(Presentation Layer):负责数据格式的转换、加密和解密。
- 应用层(Application Layer):提供应用程序间的通信接口,如 HTTP、FTP 等。
2.1.2 TCP/IP 模型
TCP/IP 模型是互联网的实际应用模型,它将网络通信分为四个层次:
- 网络接口层(Network Interface Layer):对应 OSI 模型的物理层和数据链路层,负责数据帧的传输。
- 网络层(Internet Layer):对应 OSI 模型的网络层,负责 IP 地址的寻址和路由选择。
- 传输层(Transport Layer):对应 OSI 模型的传输层,提供可靠的 TCP 和不可靠的 UDP 传输服务。
- 应用层(Application Layer):对应 OSI 模型的应用层、表示层和会话层,提供应用程序间的通信接口。
2.2 IP 地址与端口
网络通信依赖于 IP 地址和端口来标识通信的主机和服务。
2.2.1 IPv4 与 IPv6
- IPv4(Internet Protocol Version 4):使用 32 位地址,共有约 43 亿个地址。IPv4 地址通常表示为四个十进制数,中间用点分隔,如 192.168.1.1。
- IPv6(Internet Protocol Version 6):使用 128 位地址,可以提供几乎无限的地址空间。IPv6 地址通常表示为八组十六进制数,中间用冒号分隔,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334。
2.2.2 网络掩码与子网
- 网络掩码(Subnet Mask):用于划分 IP 地址的网络部分和主机部分。常见的网络掩码如 255.255.255.0。
- 子网(Subnet):将一个大网络划分为多个小网络,通过调整网络掩码实现。
2.2.3 端口
- 端口(Port):标识主机上的具体服务。端口号为 16 位整数,范围为 0 到 65535。常见端口如 HTTP 的 80 端口,HTTPS 的 443 端口。
2.3 数据包与分组
数据在网络中以数据包的形式传输。理解数据包的结构和分组技术对于网络编程非常重要。
2.3.1 数据包结构
- 数据包(Packet):包含头部和数据两部分。头部包含源地址、目的地址、协议等信息,数据部分是实际传输的数据。
2.3.2 分组与重组
- 分组(Fragmentation):当数据包过大时,需将其分为多个小包传输。
- 重组(Reassembly):接收端将分组的小包重新组合成完整的数据包。
通过本章的学习,读者应能够理解网络通信的基础知识,包括网络模型、IP 地址、端口、数据包等。这些知识是后续网络编程实践的基础。