网络编程基础
理解网络体系结构
OSI 七层模型
OSI(Open Systems Interconnection)七层模型是理论上的通信框架,由 ISO 提出。它将网络通信划分为七个层次,每一层都有特定的功能和协议:
- 物理层(Physical Layer):负责传输原始比特流(0 和 1),定义物理介质特性。
- 数据链路层(Data Link Layer):将比特流组织成帧,管理 MAC 地址和局域网通信。
- 网络层(Network Layer):负责数据包的路由和转发,使用 IP 地址标识设备。
- 传输层(Transport Layer):提供端到端的数据传输服务,确保可靠性和顺序。
- 会话层(Session Layer):管理通信会话的建立、维护和终止。
- 表示层(Presentation Layer):处理数据的格式转换,如加密、压缩。
- 应用层(Application Layer):直接为用户应用程序提供网络服务。
TCP/IP 四层模型
实际应用中广泛使用的是 TCP/IP 模型,由四层组成:
- 网络接口层:对应 OSI 的物理层和数据链路层。
- 网络层(Internet Layer):对应 OSI 的网络层,处理路由和寻址。
- 传输层(Transport Layer):对应 OSI 的传输层,提供端到端服务。
- 应用层(Application Layer):对应 OSI 的应用层、表示层和会话层。
主要区别与协议概述
- 层次划分:OSI 是理论模型(7 层),TCP/IP 是实用模型(4 层)。
- 协议支持:TCP/IP 是互联网的基础实现。
- HTTP:应用层协议,无状态,基于请求 - 响应模型。
- TCP:传输层协议,可靠、面向连接,通过三次握手建立连接。
- IP:网络层协议,无连接、不可靠,负责路由。
Socket 基础
Socket 概念与类型
Socket 是网络通信的基本操作单元,是对不同主机上应用进程之间双向通信端点的抽象。一个套接字由 IP 地址和端口号唯一标识。
流式套接字(SOCK_STREAM):基于 TCP,提供可靠、有序的数据传输,适合文件传输等场景。 数据报套接字(SOCK_DGRAM):基于 UDP,无连接,不保证可靠性,适合实时性要求高的应用。
Socket 地址结构
在 C++ 中,常用 sockaddr 及其衍生结构。
struct sockaddr {
unsigned short sa_family; // 地址家族,如 AF_INET
char sa_data[14]; // 协议地址
};
struct sockaddr_in {
sin_family;
sin_port;
sin_addr;
sin_zero[];
};


