应用层协议的背景

每个应用层协议都是为了解决某一类应用问题,通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用层的很多协议都是基于客户服务器方式,客户和服务器都是指通信中涉及的两个应用进程。

应用层涉及的常见协议及使用场景

  • 域名系统DNS——从域名解析出IP地址。
  • 万维网和HTTP协议,万维网的两种信息搜索引擎。
  • 电子邮件的传送过程,SMTP协议和POP3协议、IMAP协议使用的场景。
  • 动态主机配置协议DHCP的特点。
  • 网络管理的三个组成部分(SNMP、管理信息结构SMI和管理信息库MIB)的作用。
  • 系统调用和应用编程接口。
  • P2P文件系统。

域名系统DNS

  1. DNS的作用:能够把互联网上的主机名转换为IP地址。
  2. 域名解析过程的两种方式:递归查询和迭代查询。
    1. 递归查询:
      1. 主机向本地域名服务器的查询采用递归查询。
      2. 如果主机所询问的本地服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(替代该主机继续查询),而不是让该主机自己进行下一步的查询。
    2. 迭代查询:
      1. 本地域名服务器向根域名服务器的查询采用迭代查询。

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出查询的IP地址,要么告诉本地域名服务器下一步查询的顶级域名服务器的IP地址;

  1. 2. 顶级域名服务器在收到本地域名服务器的查询请求后,要么给出IP地址,要么告诉本地域名服务器下一步查询的权限域名服务器的IP地址;
  2. 2. 因为权限域名服务器中保存了该区所有主机的域名到IP地址的映射,所以本地域名服务器获得了解析域名的IP地址,就把结果返回给发起查询的主机。
  1. mail.cctv.com.
    1. com是顶级域名
    2. cctv是二级域名
    3. mail是三级域名

文件传输协议

FTP协议

  • FTP协议基于TCP协议,实现文件共享必须复制整个文件,特点是若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原结点。
  • 工作方式:FTP使用客户/服务器方式,FTP的服务器进程由两大部分组成,一个主进程负责接受新的请求;另外有若干个从属进程,负责处理单个请求。在进程文件传输的时候,FTP的客户和服务器之间要建立两个并行的TCP连接,控制连接和数据连接。控制连接在整个会话期间一直保持打开,用来接收客户发来的请求;传输文件使用数据连接。
  • FTP的缺点:(场景)当A想修改B上的一个很大的文件,例如在文件最后新加一行的话,使用FTP就需要先将大文件传送到本地,修改完成之后再重现传送到B。这种来回的操作非常耗费时间和资源。
    • (解决方案)网络文件系统NFS采用了一种思路,允许应用进程打开一个远地文件,并能在该文件的某一个特定位置开始读写数据。这样的话,需要在网络中传送的只是少量的修改数据。

TFTP协议

  • TFTP使用的虽然也是客户端/服务器方式,但是使用的是UDP数据报。
  • TFTP有两个优点:①TFTP可以用于UDP环境,当需要将程序或文件同时向许多机器下载时就往往需要使用TFTP。②TFTP代码所占的内存较小。

SFTP协议

sftp是安全文件传送协议,可以为传输文件提供一种安全的加密方法。sftp是ssh的一部分,是一种传输文件到服务器的安全方式。(场景)需要加密传输认证信息和传输的数据,可以使用sftp进行文件传输。但是sftp的传输效率要比普通的ftp传输效率低的多(缺点)。tcp

远程终端协议TELNET

TELNET使用客户服务器方式,在用户所在地通过TCP连接注册(登录)到远地的另一台主机。

超文本传送协议HTTP

  • (场景)HTTP协议定义了浏览器(万维网客户进程)如何向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
  • 定义角度:HTTP协议是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
  • HTTP协议的特点:
    • 无连接:http虽然使用tcp连接,但通信的双方在交换http报文之前不需要先建立http连接。
    • 无状态:同一个客户第二次访问同一个服务器上页面时,服务器的响应与第一次被访问时相同。HTTP协议的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。
  • HTTP/1.0
    • 从浏览器请求一个万维网文档到收到整个文档所需(过程):HTTP协议首先需要客户与服务器建立TCP连接,这需要三报文握手。当建立TCP连接的三报文的前两部分完成后(经过了一个RTT时间后),万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器。服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。
    • (缺点)①每请求一个文档就有两倍RTT的开销。如果请求大量的文档,每一次连接下载都会导致2RTT的开销。②每一次万维网客户和服务器建立新的TCP连接都要分配缓存和变量。`万维网服务器往往要同时服务于大量客户的请求,所以这种*非持续连接会使万维网服务器的负担很重。`
  • HTTP/1.1
    • HTTP/1.1具备持续连接的特点,能够使万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
    • 使用长连接的http协议,会在响应头加入这行代码:Connection: keep-alive
    • 持续连接有两种工作方式
      • 非流水线方式:客户在收到前一个响应后才能发出下一个请求。(缺点)服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。
      • 流水线方式:客户在收到HTTP的响应报文之前就能接着发送新的报文请求。于是一个接一个的请求报文到达服务器后,服务器就可以连续发回响应报文。
    • http协议的长连接和短连接实质上是TCP协议的长连接和短连接。
  • HTTP有两类报文:请求报文响应报文
  • 状态码
    • 1XX 表示通知信息,如请求收到了或正在进行处理。
    • 2XX 表示成功
    • 3XX 表示重定向,如要完成请求还必须采取进一步的行动。
    • 4XX 表示客户的差错,如请求中有错误的语法或不能完成。
    • 5XX 表示服务器的差错,如服务器失效无法完成请求。
  • 在服务器上存放用户的信息
    • HTTP协议使用Cookie来跟踪用户,Cookie表示在HTTP服务器和客户之间传递的状态信息。(使用示例)当用户A浏览某个使用Cookie的网站时,该网站的服务器就为A产生了一个唯一的识别码,并以此作为索引在服务器的后端数据库产生一个项目。接着在给A的HTTP响应报文中添加一个Set-cookie的首部行。这里的“首部字段名”就是Set-cookie,而后面的值就是赋予该用户的识别码。
  • http是不保存状态的协议,如何保存用户状态
    • http自身不对请求和响应之间的通信状态进行保存。session机制可以解决这个问题,session通过服务端记录用户的状态,服务端给特定的用户创建特定的session之后就可以标识这个用户并且跟踪这个用户了(一般情况下服务器会在一定时间内保存这个session,过了时间限制就会销毁这个session)
    • 在服务端保存session的方法有很多,最常用的是内存和数据库(内存数据库redis保存)。
    • session存放在服务器端,如何实现session跟踪?
      • 通过在cookie中附加一个session ID的方式来跟踪。
  • http1.0和http1.1的主要区别
    • 长连接。在http1.0中默认使用的是短连接,即每次请求都要重新建立一次连接。http是基于TCP/IP协议,每一次建立或者断开连接都需要三次握手四次挥手的开销,如果每次请求都这样请求的开销会很大。因此最好维持一个长连接,使用长连接来发多个请求。http1.1默认使用长连接,默认开启Connection: Keep-alive。http1.1的持续连接有非流水线和流水线两种方式。
    • 错误状态响应码。在http1.1中新增24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性删除。
    • 缓存处理。在http1.0中主要使用header里的If-Modified-SinceExpires来作为缓存判断的标准,http1.1则引入更多的缓存控制策略,例如Entity tagIf-Unmodified-SinceIf-MatchIf-None-Match等更多可供选择的缓存头来控制缓存策略。
    • 带宽优化及网络连接的使用。http1.1中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来,并且不支持断点续传功能,http1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

电子邮件相关协议

电子邮件系统包括三个组成构件,包括用户代理、邮件服务器,以及邮件发送协议(SMTP)和邮件读取协议(POP3)。

用户代理UA

用户代理就是电子邮件客户端软件

邮件服务器

邮件服务器需要两种不同的协议,一种协议是用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP协议。另一种协议用于用户代理从邮件服务器读取邮件,如邮局协议POP3。

🌝应用层 - 图1

简单邮件传送协议SMTP

  1. 连接建立
    1. 发送人的邮件送到发送方邮件服务器的邮件缓存后,SMTP客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口25与接收方邮件服务器的SMTP服务器建立TCP连接。
  2. 邮件传送
  3. 连接释放

邮件读取协议POP3和IMAP

  • POP3
    • (场景)在接收邮件的用户计算机中的用户代理和收件人所连接的ISP的邮件服务器中则允许POP3服务器程序。
    • (特点)只要用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除。

MIME通用互联网邮件扩充

动态主机配置协议DHCP

DHCP协议允许一台计算机加入新的网络和获取IP地址而不用手工参与。

  • (原理)DHCP使用客户服务器方式。需要IP地址的主机在启动时就向DHCP服务器广播(将目的地址设为255.255.255.255)发送发现报文。这台主机目前还没有自己的IP地址,因此它将IP数据报的源IP地址设为全0。这样本地网络上所有主机都能够收到这个广播报文,但是只有DHCP服务器才会对此广播报文进行回答。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。

简单网络管理协议SNMP

  • (原理)SNMP中的管理程序和代理程序按客户服务器方式工作。管理程序运行SNMP客户程序,而代理程序运行SNMP服务器程序。在被管对象上运行的SNMP服务器程序不停地监听来自管理站的SNMP客户程序的请求。一旦发现了,就立即返回管理站所需的信息,或执行某个动作。
  • SNMP的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。

现性使用的网络模型是TCP/IP五层协议模型,在TCP/IP五层协议模型中,将原本OSI七层模型中的表示层和会话层放入了应用层中。

OSI七层模型之表示层

表示层的基本作用是对数据格式进行编译,对收到或发出的数据根据应用层的特征进行处理,如处理为文字、图片、音频、视频、文档等,还可以对压缩文件进行解压缩、对加密文件进行解密等。

表示层在现行的TCP/IP五层网络协议中同会话层一同放到了应用层中。只有在表示层将数据处理完成后,才能将格式编译后的数据呈现在应用程序中,让用户能够看懂。

OSI七层模型之会话层

会话层的主要功能是用来管理网络设备的会话连接,细分为三大功能:

  • 建立会话:AB两台网络设备之间要通信,要建立一条会话供他们使用,在建立会话的过程中也会有身份验证,权限鉴定等环节。
  • 保持会话:会话建立后,通信双方开始传递数据,当数据传递完成后,OSI会话层不一定会立刻将两者这条通信会话断开,会根据应用程序和应用层的设置对该会话进行维护,在会话维护期间两者随时均可使用这条会话进行传输。
  • 断开会话:在应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。或者AB重启、关机、手动执行断开连接。

状态码

类别 原因短语
1XX 信息性状态码 接收的请求正在处理
2XX 成功重定向 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 客户端错误状态码 服务器无法处理请求
5XX 服务器错误状态码 服务器处理请求错误