应用层协议原理
网络应用程序体系结构
BS架构和P2P架构。
进程通信
BS架构中,如WEB服务,浏览器进程是客户机,WEB服务器进程是服务器。
P2P架构中,发起通信的进程被称为客户机,在会话开始时等待联系的进程是服务器。
进程通过套接字(socket)的接口在网络上发送和接收报文,套接字是一个软件接口。
套接字是应用程序和网络之间的应用编程接口(API)。应用程序开发者可以控制套接字在应用层的所有内容,但是对于套接字在运输层的部分,开发者只能控制:
- 选择运输层协议,
- 设定几个运输层参数。
仅此而已,一旦运输层协议确定之后,应用程序就建立在该协议提供的运输层服务之上。
应用层需要的服务种类
- 可靠数据传输。
- 吞吐量。
- 定时。
- 安全性。
TCP/IP网络提供的运输层协议
- 提供面向连接和可靠数据传输服务的TCP协议。TCP还有拥塞控制机制。
- 提供无连接的和不可靠的数据传输服务的UDP协议。UDP没有拥塞控制机制。
- TCP和UDP都没有加密。SSL是TCP的加强,是在应用层上实现的。
- 上面说的应用层可能需要的服务种类,1和4可以通过TCP,UDP和SSL实现,而2和3其实还没有运输层协议实现。
- 端口号用来做进程寻址,IP地址用于做网络中主机的寻址。
应用层协议
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。
应用层协议和网络应用的区别,应用层协议是网络应用的一部分。比如HTTP协议是Web应用的一部分。
HTTP协议和Web应用
Web应用的应用层协议是HTTP协议。HTTP协议由两部分组成,一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文进行会话。
HTTP定义了Web客户机如何向Web服务器请求Web页面,以及服务器如何将Web页面传送给客户机。HTTP使用TCP而不是UDP作为它的运输层协议,TCP为HTTP提供可靠数据传输服务,客户机进程和服务器进程之间的每一个报文都能到达目的地。HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的,这是TCP和更底层协议栈的工作。
HTTP服务器并不保存关于客户机的任何信息,所以说它是一个无状态协议。
非持久连接和持久连接
当客户机和服务器长时间通信时,客户机发出一系列请求,服务器对于每个请求进行响应。如果每一个请求/响应对都有一个单独的TCP连接发送的,叫做非持久连接,如果所有的请求/响应经过同一个TCP连接发送,就做持久连接。
HTTP既可以使用持久连接也可以使用非持久连接。默认情况下使用持久连接。
HTTP报文格式
HTTP请求报文
一个请求行,
多个首部行,
空行,
实体主体
HTTP响应报文
一个状态行,
多个首部行,
空行,
实体主体
用户和服务器的交互:cookie
HTTP协议是无状态的,使用cookie可以用来识别用户。
cookie的组成部分:
- 在HTTP相应报文中有一个cookie首部行。
- 在HTTP请求报文中有一个cookie首部行。
- 在用户端系统有一个cookie文件,由用户的浏览器管理。
- Web站点有一个后台数据库。
Web缓存
条件GET
FTP协议和文件服务器
FTP使用两个并行的TCP来传输文件,一个是控制连接,一个是数据连接。控制连接用于在两个主机之间传输控制信息,数据连接用于实际传输一个文件。
因为FTP使用一个分离的控制连接,也称FTP的控制信息是带外传送的。而HTTP协议在传输文件的TCP连接中发送请求和响应首部行的,所以HTTP也可以说是带内发送控制信息的。
FTP的控制连接是持久的,而数据连接是非持久的。每传输一个文件,都需要打开一个数据连接。
FTP必须在整个会话期间保留用户的状态信息,而HTTP是无状态的。
DNS
因特网上的主机通过IP地址被识别,也可以通过主机名(hostname)被识别。主机名是不定长的,路由器很难处理,而IP地址是定长的,但是全是数字,不方便记忆。
什么是DNS
域名系统(Domain Name System)进行主机名到IP地址转换的目录服务。DNS是:
- 一个分层的DSN服务器实现的分布式数据库
- 一个允许主机查询分布式数据库的应用层协议。
DNS的解析流程
DNS运行在UDP上,使用53号端口。DNS通常由其他应用层协议使用,将用户提供的主机名解析为地址。当某个用户主机上的浏览器请求www.baidu.com时,具体的流程:
- 同一台用户主机上运行着DNS应用的客服端。
- 浏览器从url中取出主机名,将它传给DNS应用的客户端。
- DNS客户端向DNS服务器发送一个包含主机名的请求。
- DNS客户端接收一份回答报文,上面包含有对应主机名的IP地址。
- 浏览器接收到IP地址后,向IP地址指定的HTTP服务器发起一个TCP连接。
DNS的功能
- 向主机名转换为IP地址。
- 主机别名,给一个主机名起一个别名,原来的主机名叫做规范主机名。主机别名通常比规范主机名更好记。
- 邮件服务器别名。
- 负载分配。DNS可以用于冗余的服务器之间进行负载分配。
DNS工作原理
- 分布式,层次数据库
有三种类型的DNS服务器,根DNS服务器,顶级域DNS服务器和权威DNS服务器。在因特网上有13个DNS服务器;顶级域服务器,负责顶级域名(com,org, net, edu, gov)和国家的顶级域名(uk, fr, ca和jp);权威DNS服务器,将在因特网上拥有公共可访问主机的组织机构的主机名字映射为IP地址,权威DNS服务器负责保存这些记录。
此外,还有本地DNS服务器,它不属于DNS服务器的层次结构,但是对于DNS层次结构很重要。
DNS查询可以是迭代查询也可以是递归查询。
迭代查询的过程,主机向本地DNS服务器请求某个域名的ip地址,本地DNS服务器依次向DNS服务器,顶级DNS服务器,权威DNS服务器发送请求。权威DNS服务器将目标主机的ip返回给本地DNS服务器,本地DNS服务器再将IP地址返回给主机。
递归查询的过程,主机向本地DNS服务器请求,本地DNS服务器向根域名服务器请求,根域名服务器向顶级域名服务器发送请求,顶级域名服务器向权威域名服务器发送请求,返回再依次递归返回。 - DNS缓存。当一个DNS服务器接收到一个DNS回答时,DNS服务器能将回答中的信息缓存在本地存储器。当下次有相同的请求时,这个DNS服务器可以直接返回缓存的结果而不需要请求上层DNS服务器,但是主机,主机名和IP之间的映射不是永久的,DNS服务器通常会在一段时间内丢弃缓存的信息。
电子邮件
参考文献
1.《计算机网络自顶向下》