应用层
应用层是参考模型的最上层,也是距离用户最近的一层,为各式各样的应用定义了通信规则和协同方式,满足不同的应用需求。围绕这个主题,本章主要探讨了以下内容。 (1)应用进程通信方式与套接字编程 客户/服务器模型(C/S):服务器长期运行,被动等待请求;客户主动发起请求,完成服务后断开。优点是集中管理,缺点是服务器可能成为瓶颈。现代 Web、FTP、电子邮件均采用此模型。 套接字(Socket):应用层与传输层的编程接口。原语包括: socket():创建套接字。 bind():绑定本地地址和端口(服务器用)。 listen()(TCP):进入被动监听状态。 accept()(TCP):接受连接请求。 connect()(TCP):主动连接服务器。 send()/recv() 或 write()/read():数据传输。 close():关闭连接。 基于 TCP 的套接字流程:服务器创建→绑定→监听→接受;客户端创建→连接→通信;可靠有序字节流。 基于 UDP 的套接字流程:无需连接,直接使用 sendto()/recvfrom(),发送和接收数据报。 (2)域名系统(DNS) DNS 负责将主机名(如 www.example.com)解析为 IP 地址。域名空间为层次树结构,根域为 ""(点),顶层域(TLD)包括通用域(.com, .org)和国家域(.cn, .uk)等。 域名服务器按层次分工: 根域名服务器:全球 13 组(逻辑上),不直接解析,只指引到 TLD 服务器。 顶级域名服务器:负责特定 TLD 下的域名。 权威域名服务器:负责特定域(如 example.com)的所有记录。 本地域名服务器:ISP 或企业网络提供,缓存解析结果,代表用户发起查询。 解析算法: 递归查询:本地域名服务器代为请求其他服务器,将最终结果返回用户。 迭代查询:本地域名服务器依次询问各服务器(根→TLD→权威),每个服务器返回下一级地址。 DNS 缓存:各层服务器缓存解析结果,降低延迟,但必须设置 TTL 以确保更新。 (3)典型应用层协议 文件传输(FTP):使用两个 TCP 连接:控制连接(端口 21,发送命令)和数据连接(端口 20,传输文件)。支持主动模式(服务器主动连接客户端)和被动模式(客户端连接服务器协商的端口)。 远程登录 TELNET/SSH: TELNET(端口 23):明文传输,不安全。 SSH(端口 22):加密认证,支持远程 shell、文件传输(SFTP)、端口转发。 电子邮件协议: SMTP(简单邮件传输协议)(端口 25):用于邮件客户端到服务器、服务器到服务器之间的邮件发送。仅支持 ASCII 文本,使用 MIME 支持多媒体。 POP3(邮局协议第3版)(端口 110):下载邮件到本地,通常删除服务器上的邮件。 IMAP(互联网消息访问协议)(端口 143):邮件保留在服务器上,支持远程文件夹管理、部分下载。 MIME(多用途互联网邮件扩展):在邮件中传输非 ASCII 内容(图片、音频、附件),通过定义新的内容类型(Content-Type)和编码方式(Base64、QP)。 ...