学习完下层服务后,终于来到了模型中最上层——应用层。应用层是最接近用户/终端系统的一层,它决定了系统之间的通信是否有足够的资源。
应用层的通信分为:客户端/服务端模型(client/server model)和对等通信模型(peer-to-peer model)。
客户端/服务端模型中,请求信息的设备称为客户端,响应请求的设备称为服务端。服务端通常在后台运行服务或进程,不受终端用户的直接控制。客户端通过向服务端请求数据开始交换。每当服务器收到请求时,就会按照其协议的要求,以适当的格式与客户端交换适当的信息。
绝大部分的协议都是基于客户端/服务端模型的。
而在对等通信模型中,任何一台设备既可以作为客户端又可以作为服务端。在对等网络中,每个客户端都是服务端,每个服务端都是客户端。两者都可以发起通信,并在通信过程中被视为平等。
例如比较常见的P2P下载,点对点电话等就是使用对等通信模型。
用户层协议有很多,例如:
域名系统(DNS)是一个从域名解析为IP地址的系统。域名是一组字母和数字组成的名称用于代替IP地址,让人更容易记住。
顶级域名(Top-level Domain)是最高级域名,位于域名的最右端。可以根据国别/地区等,分成很多种顶级域名:
在顶级域名左侧存在名称的,称为N级域名。在域名中有N-1个点.
,这个域名就是N级域名。例如:
hoyue.fun => .fun为顶级域名,hoyue.fun为二级域名
www.lib.hoyue.fun => 四级域名
DNS使用分层结构,一级一级地存储域名-IP的映射关系。如图:
在层次结构的顶层,根服务器(Root DNS servers)保存着如何到达顶级域服务器的记录。
例如www.lib.hoyue.fun
的DNS信息查询,先从本地DNS服务器,向上级DNS服务器请求地址,直到找到解析记录或到达根服务器。根服务器找到顶级域名DNS服务器.fun
,再找到二级域名DNS服务器hoyue.fun
,再找到三级域名DNS服务器lib.hoyue.fun
,最后在这个服务器上找到了www.lib.hoyue.fun
的记录。
如果当前DNS服务器是负责最终解析域名的服务器,而不是需要去询问其他服务器得到的,则称为权威服务器。否则为非权威服务器。我们可以在自己电脑中输入nslookup
命令,查询一些DNS信息可以看到。
例如查询huawei.com,它不是在我们的DNS服务器上解析的,所以当前为非权威服务器。
DNS服务器通过不同的记录来解析不同的资源类型。DNS有如下常见的记录:
我们主要来看看A记录和NS记录的区别。
A记录指向的是一个指定的主机,表示这个域指向这个主机。而NS记录指向的是一个DNS服务器,这个服务器里包含了这个子域的所有解析。
举个例子,在hoyue.fun的解析中,设置了一个A记录将www指向1.1.1.1,说明www.hoyue.fun指向了主机1.1.1.1。再设置了一个NS记录将lib指向2.2.2.2,说明lib.hoyue.fun的所有DNS解析都存在DNS服务器2.2.2.2中,接下来的解析交给这个服务器。在DNS服务器中,还可以设置www.lib.hoyue.fun,admin.lib.hoyue.fun等指向不同的主机。
总的来说:A记录指向主机后,该域不能再拓展。NS记录指向主机后,域名还可以继续拓展。
超文本传输协议(HTTP)用于传输动态/静态的网页信息。常见的Web服务器有:Apache、IIS、Nginx等。而客户端一般使用浏览器进行渲染。
HTTP使用统一资源定位符(URL)去告诉浏览器所访问的资源。它遵循如下格式:
文件传输协议(FTP)是一种可靠的、面向连接的服务。客户端在TCP端口21上建立到服务器的连接,用于控制流量,包括客户端命令和服务器应答。客户端还通过TCP端口20建立到服务器的第二个连接,用于实际的文件传输,并且在每次传输文件时创建。
简单文件传输协议(TFTP)是一种使用UDP的不可靠的无连接服务。用于小型文件的快速传输与下载。
Telnet和SSH提供登录到远程Internet主机的能力,可以通过远程连接主机并进行远程操作。
SMTP协议用于发送邮件,POP3协议用于接收邮件。在邮件通信中,我们将发送邮件的客户端称为邮件用户代理(MUA, Mail User Agent),中转服务器或转发邮件的服务器为邮件传输代理(MTA, Mail Transfer Agent),最后抵达的收件人所在的服务器称为邮件传递代理(MDA, Mail Delivery Agent)。
下面是一个简单邮件传输的例子,现在client需要发送一个邮件到位于account server里的账号上:
下面是传输过程:
本文介绍了应用层的功能,以及用户层协议的一些常见协议。其中,域名系统(DNS)是一个从域名解析为IP地址的系统。HTTP用于传输动态/静态的网页信息。文件传输协议(FTP)是一种可靠的、面向连接的服务。Telnet和SSH提供登录到远程Internet主机的能力,可以通过远程连接主机并进行远程操作。SMTP协议用于发送邮件,POP3协议用于接收邮件。