计算机网络--应用层

应用层简介

      在上一篇博客中,我们已经介绍了运输层为应用进程提供了点到点的通信服务,但不同的网络应用的应用进程间,还需要有不同的通信规则。而应用层的作用便是精确定义这些通信规则

      应用层协议应当定义:

  • 应用进程交换的报文类型,如请求报文和响应报文
  • 各种报文类型的语法,如报文中的各个字段及其详细描述
  • 字段的语义,即包含在字段中的信息的含义
  • 进程何时、如何发送报文,以及对报文进行响应的规则

域名系统 DNS

      域名系统 DNS 是因特网使用的命名系统,用来把便于人们使用的及其名字转换为 IP 地址。例如 www.baidu.com 对应的IP为 61.135.169.121

      DNS 查询过程如下图所示():

计算机网络--应用层1、在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。

2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。

3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该*域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。

6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

      以上内容由知乎作者 wuxinliulei 著作,链接 https://www.zhihu.com/question/23042131/answer/66571369

文件传送协议

FTP

      FTP 概述

      FTP 提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用 ASCII 码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。FTP 屏蔽了各计算机系统的细节,因而适合于异构网络中任意计算机之间传送文件。

      FTP 的基本工作原理

      在文件传输的过程中,进程遇到以下问题:

  • 计算机存储数据的格式不同
  • 文件的目录结构和文件命名的规定不同
  • 对于相同的文件存取功能,操作系统使用的命令不同
  • 访问控制方法不同

      而 FTP 的主要功能则是尽可能减少或消除在不同操作系统下处理文件的不兼容性

       FTP 使用客户服务器方式。一个 FTP 服务器可以同时为多个客户端提供服务。FTP 的服务器由两大部分组成:一个主进程(负责接受新的请求);另外有若干个从属进程(负责处理单个请求)

      主进程的工作步骤如下:

  1. 打开熟知端口(21),使客户进程能够连接
  2. 等待客户进程发出连接请求
  3. 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
  4. 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。

计算机网络--应用层       FTP 的客户端和服务器之间要建立两个并行的 TCP 连接控制连接数据连接

       FTP 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。
       实际用于传输文件的是“数据连接”

TFTP

       TFTP 同样是一个文件传送协议,其端口号为69,是基于UDP 实现的。

       TFTP 的优点:
       1、我们知道 UDP 的特点是可以进行一对一、一对多、多对多通信。如果我们需要将程序或文件同时向许多机器下载时就往往需要使用 TFTP。

      2、TFTP 代码所占的内存较小。

       TFTP 的特点:

      (1)每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节。
      (2)数据报文按序编号,从1开始。
      (3)支持 ASCII 码或二进制传送。
      (4)可对文件进行读或写。
      (5)使用很简单的首部。

      我们知道 UDP 是不能保证可靠性的,但是如果 TFTP 也不能保证可靠性的话,那么必然会造成,在传送文件时数据因丢失而频频失败,所以 TFTP 能够保证数据不能丢失,那么其如何做到呢?

      TFTP 的工作类似停止等待协议。发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。发送数据后在规定时间内收不到确认就要重发数据 PDU。发送确认 PDU 的乙方,若在规定时间内收不到下一个文件块,也要重发确认 PDU

远程终端协议 TELNET

       TELNET 的端口号为 23,是基于 TCP 实现的。
       用户用 TELNET 就可在其所在地通过 TCP 连接注册(登录)到远程的另一个主机。TELNET 能将用户的击键传到远程主机,同时远程主机的输出通过 TCP 连接返回到用户屏幕

超文本传送协议 HTTP

      HTTP 协议被广泛应用,我们经常在浏览器输入网站浏览的网页便是基于 HTTP 协议。其端口号为 80,是基于 TCP 方式实现的。

当用户在浏览器中输入一个 URL 后,会经过以下步骤

      1.解析 URL

      浏览器通过 URL 能够知道下面的信息:

Protocol “http”        使用HTTP协议
Resource “/”           请求的资源是主页(index)

      2. 输入的是 URL 还是搜索的关键字?

      当协议或主机名不合法时,浏览器会将地址栏中输入的文字传给默认的搜索引擎。大部分情况下,在把文字传递给搜索引擎的时候,URL会带有特定的一串字符,用来告诉搜索引擎这次搜索来自这个特定浏览器。

      3.转换非 ASCII 的 Unicode 字符

      例如我们输入https://github.com/%你好 将变为 https://github.com/%E4%BD%A0%E5%A5%BD

      4.检查 HSTS 列表

      浏览器检查自带的“预加载 HSTS(HTTP严格传输安全)”列表,这个列表里包含了那些请求浏览器只使用HTTPS进行连接的网站
      如果网站在这个列表里,浏览器会使用 HTTPS 而不是 HTTP 协议,否则,最初的请求会使用HTTP协议发送

      5.DNS 查询

      查询域名对应的IP地址

      6.建立 TCP 连接

      7.传送数据

      8.关闭 TCP 连接(HTTP1.1 中,如果使用 keep-Alive,那么连接并不是立即关闭)

      9.浏览器显示数据

HTTP 的报文结构

计算机网络--应用层计算机网络--应用层

状态码

      1XX 表示通知信息的,如请求收到了或正在进行处理。

      2XX 表示成功,如接受或知道了。

  • 204 代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。
  • 206 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。

      3XX 表示重定向,如要完成请求还必须采取进一步的行动。

  • 301 永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。
  • 302 临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的 URI 访问。
  • 303 与 302 有着相同的功能,但 303 状态码明确表示客户端应采用 GET 方法获取资源。
  • 304 服务器端资源未改变,可直接使用客户端未过期的缓存
  • 307 临时重定向,与 302 有着相同的含义。但不会从 POST 变成 GET。

      4XX 表示客户的差错,如请求中有错误的语法或不能完成。

  • 400 该状态码表示请求报文中存在语法错误
  • 401 该状态码表示发送的请求需要有通过 HTTP 认证的认证信息
  • 403 对请求资源的访问被服务器拒绝了
  • 404 资源找不到

      5XX 表示服务器的差错,如服务器失效语法完成请求。

  • 500 服务器出错
  • 503 服务器暂时处于超负载或正在进行停机维护

电子邮件

      一个电子邮件系统主要由三个构件组成,用户代理邮件服务器以及邮件发送协议(SMTP)和邮件读取协议(如POP3)

计算机网络--应用层

简单邮件传送协议 SMTP:端口号为 25,基于 TCP 实现。

邮件读取协议 POP3 和 IMAP:POP3 端口号为 110,基于 TCP 实现。IMAP 端口为 143,基于 TCP 实现。