# 6.1 网络应用模型 ## 一、网络应用概述 ### 1.1 什么是网络应用 **网络应用**: - 运行在计算机网络上的应用程序 - 为用户提供服务 - 使用网络进行通信 ### 1.2 网络应用的组成 **客户端(Client)**: - 请求服务的一方 - 主动发起连接 - 如:浏览器、邮件客户端 **服务器(Server)**: - 提供服务的一方 - 被动等待连接 - 如:Web服务器、邮件服务器 ### 1.3 网络应用的体系结构 **客户/服务器模型(C/S)**: - 客户端请求服务 - 服务器提供服务 - 服务器始终运行 **对等模型(P2P)**: - 每个节点既是客户端又是服务器 - 节点之间直接通信 - 如:BitTorrent、Skype **混合模型**: - 结合C/S和P2P - 如:即时通信软件 --- ## 二、客户/服务器模型 ### 2.1 客户/服务器模型概述 **特点**: - 客户端主动发起请求 - 服务器被动等待请求 - 服务器始终运行 - 客户端和服务器角色固定 ### 2.2 客户端 **特点**: - 主动发起连接 - 请求服务 - 可能间歇运行 - 多个客户端可以同时访问服务器 **功能**: - 发起连接请求 - 发送请求 - 接收响应 - 处理数据 ### 2.3 服务器 **特点**: - 被动等待连接 - 提供服务 - 始终运行 - 处理多个客户端请求 **功能**: - 监听端口 - 接受连接 - 接收请求 - 处理请求 - 发送响应 ### 2.4 客户/服务器通信过程 ``` 客户端 服务器 | | |-------- 连接请求 ------>| | | |<------- 连接确认 -------| | | |-------- 服务请求 ------>| | | |<------- 服务响应 -------| | | |-------- 断开连接 ------>| | | ``` ### 2.5 客户/服务器的例子 - **Web**:浏览器(客户端)+ Web服务器 - **邮件**:邮件客户端 + 邮件服务器 - **FTP**:FTP客户端 + FTP服务器 - **DNS**:DNS客户端 + DNS服务器 --- ## 三、对等模型(P2P) ### 3.1 P2P模型概述 **特点**: - 每个节点既是客户端又是服务器 - 节点之间直接通信 - 没有固定的服务器 - 可扩展性好 ### 3.2 P2P的优点 - **可扩展性**:节点增加,服务能力增强 - **容错性**:节点故障不影响整体 - **成本低**:不需要专用服务器 - **隐私性**:直接通信,不经过服务器 ### 3.3 P2P的缺点 - **管理困难**:没有中心管理 - **安全性**:节点不可信 - **性能不稳定**:依赖其他节点 - **发现困难**:如何找到其他节点 ### 3.4 P2P的分类 #### 结构化P2P **特点**: - 使用分布式哈希表(DHT) - 节点有组织地连接 - 高效查找 **例子**: - Chord - CAN - Pastry - BitTorrent(部分) #### 非结构化P2P **特点**: - 节点随机连接 - 使用泛洪查找 - 简单但效率低 **例子**: - Gnutella - KaZaA #### 混合P2P **特点**: - 有中心服务器辅助 - 节点之间直接通信 - 结合C/S和P2P优点 **例子**: - Skype - BitTorrent( tracker ) ### 3.5 P2P的例子 - **文件共享**:BitTorrent、eMule - **即时通信**:Skype、微信 - **流媒体**:PPLive、PPStream - **区块链**:比特币、以太坊 --- ## 四、进程通信 ### 4.1 进程 **进程**: - 运行在主机上的程序 - 是操作系统资源分配的基本单位 **进程通信**: - 不同主机上的进程通过网络通信 - 同一主机上的进程通过IPC通信 ### 4.2 套接字(Socket) **套接字**: - 进程与网络之间的接口 - 应用层与传输层之间的门 **套接字地址**: - IP地址 + 端口号 - 唯一标识网络中的一个进程 ### 4.3 进程寻址 **标识进程**: - IP地址:标识主机 - 端口号:标识进程 **例子**: - Web服务器:IP:80 - 邮件服务器:IP:25 --- ## 五、应用层协议 ### 5.1 什么是应用层协议 **应用层协议**: - 定义应用进程之间通信的规则 - 包括报文类型、格式、语义、时序 ### 5.2 应用层协议的组成 **报文类型**: - 请求报文 - 响应报文 **报文格式**: - 首部字段 - 数据字段 **语义**: - 字段的含义 - 动作 **时序**: - 报文发送的顺序 - 响应的规则 ### 5.3 常见的应用层协议 | 协议 | 功能 | 传输层协议 | 端口 | |-----|------|-----------|------| | HTTP | Web | TCP | 80/443 | | FTP | 文件传输 | TCP | 20/21 | | SMTP | 邮件发送 | TCP | 25 | | POP3 | 邮件接收 | TCP | 110 | | IMAP | 邮件访问 | TCP | 143 | | DNS | 域名解析 | UDP/TCP | 53 | | DHCP | 动态配置 | UDP | 67/68 | | Telnet | 远程登录 | TCP | 23 | | SSH | 安全远程登录 | TCP | 22 | --- ## 六、网络应用的需求 ### 6.1 可靠性需求 **可靠传输**: - 文件传输、邮件、Web - 使用TCP **不可靠传输**: - 实时视频、IP电话 - 使用UDP ### 6.2 带宽需求 **带宽敏感**: - 多媒体应用 - 需要最小带宽保证 **弹性应用**: - 文件传输、邮件 - 可用带宽变化 ### 6.3 延迟需求 **延迟敏感**: - 实时应用 - 交互式应用 **延迟不敏感**: - 文件传输 - 邮件 ### 6.4 安全性需求 **安全需求**: - 加密 - 认证 - 完整性 --- ## 七、考研重点 1. **网络应用的组成**: - 客户端 - 服务器 2. **网络应用的体系结构**: - 客户/服务器模型(C/S) - 对等模型(P2P) - 混合模型 3. **客户/服务器模型**: - 特点 - 客户端和服务器特点 - 通信过程 - 例子 4. **P2P模型**: - 特点 - 优点和缺点 - 分类:结构化、非结构化、混合 - 例子 5. **进程通信**: - 进程 - 套接字 - 进程寻址 6. **应用层协议**: - 概念 - 组成 - 常见协议 7. **网络应用的需求**: - 可靠性 - 带宽 - 延迟 - 安全性 --- *下一节:6.2 DNS系统*