1. 应用层概述
- 每个应用层协议都是为了解决某一应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。
- 两台主机通信实际是其对应的两个应用进程在通信。
- 应用进程:为解决具体应用问题而彼此通信的进程。
- 应用层的具体内容就是规定应用进程在通信时所遵循的协议。
- 应用进程的通信方式:
- 客户/服务器方式(C/S,Client/Server)
- 应用层的许多协议都是基于C/S方式:
- 客户(Client)和服务器(Server)是指通信中所涉及的两个应用进程
- C/S方式描述的是应用进程之间服务和被服务的关系
- 客户是服务请求方
- 服务器是服务提供方
- 两者并没有明确的界限,也就是说服务请求方也可以是服务提供方,服务提供方也可以是服务请求方
- C/S方式可以是面向连接的,也可以是无连接的
- 面向连接时,C/S通信关系一旦建立,通信就是双向的,双方地位平等,都可发送和接收数据
图片引自计算机网络,谢希仁 - 客户进程的特点:
- 在进行通信时临时成为客户
- 用户计算机上运行,主动地向服务器发起通信
- 客户方必须知道服务器进程所在主机的IP地址才能发出服务请求
- 需要时可以与多个服务器进行通信
- 服务器进程的特点:
- 专门提供某种服务的程序,可“同时”处理多个远地或本地客户的请求
- 必须始终处于运行状态才有可能提供服务
- 通信开始之前服务器进程不需要知道客户进程所在主机的IP地址,被动等待并接受来自客户的通信请求
- 通常是当系统启动时即自动调用并一直运行着。某些服务器程序也可以由用户或其它进程在通信前启动
- 应用层的许多协议都是基于C/S方式:
- 浏览器/服务器方式(B/S,Browser/Server)
- B/S方式可以看作C/S方式的特例,客户进程为浏览器
- B/S方式采取浏览器请求、服务器响应的工作模式
- B/S方式下,用户界面完全通过浏览器实现,一部分事务逻辑在前端实现,主要的事务逻辑在服务器端实现
图片引自计算机网络,谢希仁 - B/S方式的特点:
- 界面统一,使用简单。客户端只需要安装浏览器软件
- 易于维护。对应用系统升级时,只需更新服务器端的软件,减轻了系统维护和升级的成本
- 可扩展性好。采用标准的TCP/IP和HTTP协议,具有良好的扩展性
- 信息共享度高。HTML是数据格式的一个开放标准,目前大多数流行的软件均支持HTML
- 需要注意,一种浏览器环境下开发的界面在另一种浏览器环境下可能有不完全适配的情况
- 对等方式(P2P,Peer to Peer)
- P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器
- 对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方
- 只要两个主机都运行P2P软件,它们就可以进行平等、对等的通信
- 如果权限允许的话,双方都可以下载对方存储在硬盘中的共享文档
- 音频/视频应用推动了P2P对等通信方式的发展,音频/视频流量已占主要比例
- 客户/服务器方式(C/S,Client/Server)
2. 域名系统DNS(Domain Name System)
-
域名系统概述
- 域名——用字符表示的网络主机名,是一种主机标识符,用于应用层。如www.baidu.com,直观,便于记忆
- IP地址——定长的 32 位二进制数字组成,难于记忆,但方便机器处理,用于网络层
- DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。这里的分布式数据库是指每个站点只保留它自己的那部分数据。域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。
- DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输:
- 如果返