计算机网络 | 应用层
- [计算机网络 | 应用层](#计算机网络 | 应用层)
参考视频:王道计算机考研 计算机网络
参考书:《2022年计算机网络考研复习指导》
计算机网络 | 应用层
应用层概述
不同的网络应用之间需要有一个确定的通信规则。
网络应用模型
客户/服务器模型(Client/Server,C/S)
客户/服务器模型的主要特点:
- 网络中各计算机的地位不平等。
- 客户机之间不直接通信。
- 可扩展性不佳。
P2P模型(Peer-to-Peer)
网络健壮性指的是P2P模型不容易坏掉,即使一个节点坏了也没问题,可以有其他节点代替。
域名系统(DNS)
域名系统(Domain Name System,DNS)是因特网使用的命名系统,用来把特定含义的主机名(网址)转换为便于机器处理的IP地址。
域名系统(DNS)采用C/S模型,是应用层协议,运行在UDP上,端口为53。
注意:
- 域名与IP地址、MAC地址、主机都不是一一对应的关系。
- 域名在不同的时间可以解析出不同的IP地址。
- 因特网上的主机一定要有IP地址,不一定要有域名。
层次域名空间
因特网采用层次树状结构的命名方法。
域名从左向右,级别逐渐增高。
域名空间的树状结构:
域名服务器
因特网的域名系统是一个联机分布式的数据库系统,采用C/S模型。
DNS使用了大量的域名服务器,以层次方式组织。
根据层次结构分为三层:
- 根域名服务器
- 顶级域名服务器
- 授权域名服务器(权限域名服务器)
域名解析过程
域名解析:域名映射成IP地址或IP地址映射成域名。前者为正向解析,后者为反向解析。
域名解析过程:通过本机的DNS客户端构造一个DNS请求报文,以UDP数据报的形式发往本地域名服务器。
域名解析的两种方法:
- 递归查询
- 递归和迭代相结合的查询
递归查询:
- 主机先是想本地域名服务器发送请求,如果查不到的话,
- 本地域名服务器向根域名服务器发送请求(找别人),如果还是查不到的话,
- 根域名域名服务器向顶级域名服务器发送请求(找别人),如果还是查不到的话,
- 顶级域名服务器向权限域名服务器发送请求(找别人)
可以看到每一次向下一个查询的服务器都变了,不是主机一个个去问,而是服务器自己一个个问下去。
递归和迭代相结合的查询:
- 主机先是想本地域名服务器发送请求,如果查不到的话,
- 本地域名服务器就去向根域名服务器发送请求,如果还是查不到的话,
- 根域名域名服务器让本地域名服务器去向对应的顶级域名服务器发送请求,如果还是查不到的话,
- 顶级域名服务器让本地域名服务器去向对应的权限域名服务器发送请求
- 找到IP地址,本地域名服务器传回给主机
可以看到这里是本地域名服务器一个个挨个问的地址。
注意:
- 递归查询给根域名服务器造成的负载过大,实际几乎不使用。
- 为了提高DNS的查询效率,减少因特网上DNS查询报文数量,在域名服务器中广泛使用高速缓存。注意,高速缓存暂存了域名和IP地址的映射,不是永久的。
文件传输协议(FTP)
文件传输协议(File Transfer Protocol,FTP)提供不同种类主机系统之间的文件传输能力。
文件传输协议(FTP)提供交互式访问,允许客户指名文件的类型和格式,并允许文件具有存取权限。
文件传输协议(FTP)采用C/S模型,使用TCP运输。
文件传输协议(FTP)的工作原理:
为什么有匿名登陆?
对于一些公共服务器来说,增加验证阶段就是增加资源开销,减少验证阶段就可以节省资源来更好地服务。
主进程和从属进程的区别:
- 主进程是打开端口,让外部发送的数据可以进来,并且将这些数据逐个分配各从属进程。
- 从属进程则是单独为这些数据服务。
从属进程:
- 客户端和服务器端先建立TCP连接,端口是21,称为控制连接。
- 服务器创建数据连接 ,然后看情况是主动建立连接还是被动建立连接。
主动建立连接(PORT)是指服务器端主动发送请求和客户端进行连接,此时端口号固定是20。
被动连接(PASV)是指客户端发送请求和服务器端建立数据传送连接,此时端口号是不确定的,由两者协商得到。 - 数据传输完成之后,数据连接断开,控制连接继续保持,直至两边发送断开请求。
无论是PORT模式还是PASV模式,选择权在客户端。
PORT是服务器连接到客户端的端口,端口号固定为20;
PASV是客户端连接到服务器的端口,端口号不确定。
注:这里的主进程被忽略掉了,只是没标在上面,不是没有。
文件传输协议(FTP)的传输模式:
- 文本模式(ASCII模式):以文本序列传输数据。
- 二进制模式:以二进制序列传输数据。
简单文件传输协议(Trivial File Transfer Protocol,TFTP)是一个轻量的、比较容易实现的、面对小文件的、基于UDP的文件传输协议。端口号为69。
电子邮件
电子邮件格式
电子邮件 = 信封 + 内容(首部 + 主体)。
电子邮件地址的规定格式:收件人邮箱名@邮箱所在主机的域名。
电子邮件系统的组成结构
- 用户代理(User Agent,UA):用户与电子邮件系统的接口。至少具有撰写、显示、邮件处理等功能。通常情况下,UA就是一个运行在PC上的程序(电子邮件客户端软件)。
- 邮件服务器:采用C/S模式,能够同时充当客户和服务器。具有发送和接收邮件、向发信人报告邮件传送情况等功能。
- 邮件发送协议和读取协议:邮件发送协议,如SMTP,采用"推"的通信方式。邮件读取协议,如POP3、IMAP,采用"拉"的通信方式。
示例:
注:这三段连接都是TCP连接。
简单邮件传输协议(SMTP)
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)控制两个相互通信的SMTP进程交换信息。
简单邮件传输协议(SMTP)使用C/S模式,采用TCP连接,端口号为25。
简单邮件传输协议(SMTP)通信的三个阶段:
STMP客户和服务器不是固定的,可以也可以成为服务器,服务器也可以成为用户,由发送方和接收方决定,发送方就是客户,接收方就是服务器。
邮局协议(POP)和因特网报文存取协议(IMAP)
邮局协议(Post Office Protocol,POP)是一个简单、功能有限的邮件读取协议,现在使用第三个版本POP3。
邮局协议(POP)使用C/S模式,采用TCP连接,端口号为110。
接收方的用户代理上运行POP客户程序,接收方的邮件服务器上运行POP服务器程序。
POP的两种工作方式:
- 下载并保留
- 下载并删除
因特网报文存取协议(IMAP)为用户提供了创建文件夹、在不同文件夹之间移动邮件、在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。
因特网报文存取协议(IMAP)的特性:允许用户代理只获取报文的某些部分。
多用途网际邮件扩充(MIME)
简单邮件传输协议(SMTP)的缺点:
多用途网际邮件扩充(Multipurpose Internet Mail Extensions,MIME)主要包括:
- 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送编码、内容类型。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
MIME和SMTP的关系:
MIME改善SMTP发送数据的缺点,是SMTP的功能性扩展(并未改变/取代SMTP)。
MIME协议使电子邮件系统支持声音、图像、视频、多种国家语言等等,使得传输内容变得丰富多彩。
MIME协议已经逐渐开始应用到浏览器当中,通过对不同文件类型用不同的标识符标识,来让浏览器读取通过MIME的相关文件。
基于万维网的电子邮件
用户浏览器与邮件服务器之间采用HTTP协议,不同的邮件服务器之间采用SMTP协议。
小结
万维网(WWW)和超文本传输协议(HTTP)
万维网的概念与组成结构
万维网中任意一个事物称为一个"资源",并由一个唯一的全域"统一资源定位符"(URL)标识。
资源通过超文本传输协议(HTTP)传送给使用者,用户通过单击链接获取资源。
万维网的内核部分由3个标准构成:
- 统一资源定位符(URL):用来标识整个互联网当中的某一个资源(文字、视频、音频等)的位置。
- 超文本传输协议(HTTP):一个应用层协议,采用TCP连接,用来将这些资源传送给用户。
- 超文本标记语言(HTML):一种文档结构的标记语言,帮助设计者来设计页面,让不同设计者设计的页面都可以在界面上显示。
万维网以C/S方式工作,工作流程:
- Web用户使用浏览器指定URL与Web服务器建立连接,发送浏览请求。
- Web服务器把URL转换为文件路径,并返回信息给Web浏览器。
- 通信完毕,关闭连接。
超文本传输协议(HTTP)
超文本传输协议(HTTP)是面向事务的应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能可靠地交换文件的基础。
万维网的工作流程:
服务器通过TCP 80端口来监听HTTP请求。
注意,超文本传输协议(HTTP)可以不一次性下载完页面的所有资源。比如,可以只下载文本部分,其他音频视频等待用户下一步请求之后再传输。
超文本传输协议(HTTP)的特点:
- HTTP本身是无连接的:虽然HTTP使用TCP连接,但通信双方在交换HTTP报文之前不需要先建立HTTP连接。
- HTTP是无状态的:服务器不记得曾经访问过的客户,也不知道曾经为该客户服务过几次。
- HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。
注:Cookie由服务器产生,存储在主机,作为识别用户的手段。
超文本传输协议(HTTP)的连接方式:
- 非持久连接(Connection: Close):每个网页元素对象的传输都需要单独建立一个TCP连接。耗时就是RTT*2+文档传输时间。每次建立新的TCP连接都要分配缓存和变量,对万维网服务器的负担很大。
- 持久连接(Connection: keep-alive):万维网服务器在发送响应后仍然保持这条连接,使得客户/服务器可以继续在该连接上传送后续的HTTP请求和响应报文。分为非流水线方式和流水线方式。
非持久连接和持久连接都是在TCP三次握手的第三次握手时发生,将HTTP请求作为第三次握手的数据部分发给服务器,服务器收到请求之后将HTTP响应报文传输给客户。
持久连接的两种方式:
- 非流水线方式:客户在收到前一个响应后才能发送新的请求。
- 流水线方式:客户可以逐个发送对各个引用对象的请求。连续的请求和响应共计经历一个RTT延迟。
注:HTTP/1.1的默认方式就是使用流水线的持久连接。
超文本传输协议(HTTP)的报文结构:
- 开始行:区分请求报文和响应报文。
- 首部行:说明浏览器、服务器、报文主体的信息。可用可不用。
- 实体主体
方法:
- GET:请求读取由URL标识的信息。
- HEAD:请求读取由URL标识的信息的首部。服务器会对该HTTP请求报文进行响应,但不会返回请求对象,其作用主要是调试。
- POST:给服务器添加信息(如注释)。
- CONNECT:用于代理服务器。
版本:HTTP协议版本,比如HTTP/1.1。
状态码: