计算机网络 —— 应用层

Posted jl916

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络 —— 应用层相关的知识,希望对你有一定的参考价值。

计算机网络 —— 应用层

应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。

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

一、 域名系统 DNS

域名

用字符表示的网络主机名,是一种主机标识符。

IP 地址 域名
数字型,难于记忆与理解 字符型,直观,便于记忆与理解
用于网络层 用于应用层

IP地址与域名都应该是全网唯一的,并且它们之间具有对应关系。

Internet 域名结构:层次树状结构
域名的结构由标号序列组成,各标号之间用点隔开。
各标号分别代表不同级别的域名。

… . 三级域名 . 二级域名 . 顶级域名

技术图片

DNS

主机别名:有着复杂主机名的主机可以拥有一个或者多个别名。
例如,一台名为relay1.west-coast.enterprise.com的主机,可能还有两个别名 enterprise.com 和 www.enterprise.com。这种情况下, relay1.west-coast.enterprise.com 也叫规范主机名(canonical hostname)。
应用程序可以调用 DNS 来获得主机别名对应的规范主机名以及主机的IP地址。

__域名系统DNS(Domain Name System)__是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析(resolve),仅少量解析需要在互联网上通信。

域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(域名服务器)共同完成的。
大多数具有 Internet 连接的组织都有一个域名服务器,每个服务器包含连向其他域名服务器的信息,这些服务器形成了一个大的协同工作的域名数据库。

DNS 服务器的层次是与域名的层次相适应的。
每一个域名服务器都只对域名体系中的一部分进行管辖。
一个根服务器在这个层次体系的顶部,它是顶层域的管辖者。
DNS服务器的层次对应着域名的层次,但是这两者并不是对等的。
技术图片

  • 根域名服务器
    最高层次的服务器,根域名服务器知道所有的顶级域名服务器的域名和 IP 地址。
    不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
    共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m。a.rootservers.net...
    许多情况下,根域名服务器告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
  • 顶级域名服务器(TLD服务器)
    负责管理在该顶级域名服务器注册的所有二级域名。
    当收到 DNS 查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址。
  • 权威域名服务器
    负责一个区(zone)的域名服务器。
    当一个权威域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权威域名服务器。
  • 本地域名服务器
    当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
    每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。
    这种域名服务器有时也称为默认域名服务器。

域名解析

  1. 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
  2. 地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,本地域名服务器进行后续的查询。
    技术图片

DNS 缓存:一个DNS服务器接收一个DNS回答时,将回答中的信息缓存在本地。
主机名与 IP 地址间的映射不是永久的,所以 DNS 服务器在一段时间后(通常设置为两天)丢弃缓存的信息。
本地 DNS server 也可以缓存 TLD server 的IP地址,因而允许本地 DNS 绕过查询链中的根 DNS 服务器。

DNS 记录
实现 DNS 分布式数据库的所有 DNS 服务器共同存储着资源记录(Resource Record, RR)
RR 提供了主机名到 IP 地址的映射。每个 DNS 回答报文包含了一条或多条资源记录。资源记录是一个包含了下列字段的4元组 (Name, Value, Type, TTL)

  1. TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。
  2. Type=A,则 Name 是主机名,Value 是该主机名的IP地址。如 (abc.foo.com, 128.238.66.100, A)
  3. Type=NS,则 Name 是域,Value 是权威 DNS 服务器的主机名。如 (foo.com, dns.foo.com, NS)
  4. Type=CNAME,则 Value 是别名为 Name 的主机对应的规范主机名。如 (foo.com, relay1.bar.foo.com, CNAME)
  5. Type=MX,则 Value 是别名为 Name 的邮件服务器的规范主机名。如 (foo.com, mail.bar.foo.com, MX)。通过使用 MX 记录,一个公司的邮件服务器和其他服务器(如Web服务器)可以使用相同的别名。
  • DNS 服务器是某特定主机名的权威 DNS 服务器,那么该 DNS 服务器会有一条包含该主机名的类型 A 记录。
  • DNS 服务器不是某个主机名的权威 DNS 服务器,那么该服务器将包含一条类型 NS 记录,该记录对应于包含主机名的域。它还将包括一条类型 A 记录,该记录提供了在 NS 记录的 Value 字段中 DNS 服务器的 IP 地址。

二、 电子邮件服务

电子邮件系统

  • 用户代理:UA(User Agent),用户与电子邮件系统的接口,即电子邮件客户端软件。
  • 邮件服务器:发送和接收邮件,并向发件人报告邮件传送的结果(已交付、被拒绝、丢失等),按照客户服务器方式工作。
  • 邮件发送协议(如SMTP)和邮件读取协议(如POP3)
    技术图片

发送和接受电子邮件步骤:

  1. 发件人调用 PC 机中的用户代理撰写和编辑要发送的邮件。
  2. 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
  3. SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
  4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,把缓存队列中的邮件依次发送出去。
  5. 运行在接收方邮件服务器中的 SMTP 服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
  6. 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3 或 IMAP 协议读取发送给自己的邮件。

SMTP

Simple Mail Transfer Protocol,简单邮件传送协议。

  • SMTP 协议运行在 TCP 协议之上,使用公开端口号 25
  • SMTP 使用简单的命令传输邮件
  • SMTP 规定了 14 条命令和 21 种响应信息
  • 每条命令都是由 4 个字母组成的
  • 每一种响应信息一般只有一行信息
  • SMTP 使用客户/服务器工作模式,发送邮件的 SMTP 进程是 SMTP 客户,接收邮件的 SMTP 进程是 SMTP 服务器

通信的 3 个阶段:

  1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器
  2. 邮件传送
  3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

POP

Post Office Protocol,邮局协议。

  • 邮局协议 POP 是一个简单的邮件读取协议
  • POP3 协议使用客户/服务器的工作方式
  • 接收邮件的用户主机运行 POP 客户程序,ISP 的邮件服务器则运行 POP 服务器程序
  • POP3 协议运行在 TCP 协议之上,它使用公开的端口号 110
  • POP3 协议规定了 15 条命令和 24 种响应信息

IMAP

Internet Message Access Protocol,网际报文存取协议。

  • IMAP 按客户/服务器方式工作,现在较新的是版本 4,即 IMAP4。
  • 用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
  • IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户可看到邮件首部。若用户打开某个邮件,则该邮件才传到用户的计算机上。
  • 用户可以为自己的邮箱创建便于分类管理的层次式的邮箱文件夹,并且能够将存放的邮件从某文件夹移动到另一文件夹。
  • IMAP 允许收件人只读取邮件中的某一个部分。
  • IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 机上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。

POP3 与 IMAP 对比:
技术图片

基于万维网的电子邮件

使用万维网电子邮件不需要在计算机中再安装用户代理软件。浏览器本身可以向用户提供非常友好的电子邮件界面,使用户在浏览器上就能够很方便地撰写和收发电子邮件。

在浏览器和互联网上的邮件服务器之间传送邮件时,使用 HTTP 协议。
在各邮件服务器之间传送邮件时,使用 SMTP 协议。

三、 文件传送协议

FTP,File Transfer Protocol,文件传送协议。

  • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
  • FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
  • FTP 只提供文件传送的一些基本的服务,它使用 TCP 的可靠的传输服务。
  • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

主进程工作步骤:

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

两个进程,两个连接,两个端口:

  • __控制连接__在整个会话期间一直保持打开,发送 FTP 客户的传送请求给服务器端的控制进程。
  • __控制进程__在接收到 FTP 客户发送来的文件传输请求后创建数据传送进程和数据连接。
  • __数据传送进程__实际完成文件传送。传送完毕后关闭数据传送连接并结束运行。
  • __数据传送连接__用来连接客户端和服务器端的数据传送进程。

由于 FTP 使用了一个分离的控制连接,因此 FTP 的控制信息是带外(out of band)传送的。

  • 客户进程发出建立连接请求时,要寻找连接服务器进程的__熟知端口 21__,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
  • 服务器进程用自己传送数据的__熟知端口 20__ 与客户进程所提供的端口号建立数据传送连接。

由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
使用两个独立的连接的主要好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。

四、 万维网

World Wide Web,WWW,万维网是一个大规模的,联机式的信息储藏所。简称 Web。
万维网用__链接__的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

  • WWW 系统的结构采用了客户/服务器模式
  • 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
  • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
  • 在一个客户程序主窗口上显示出的万维网文档称为页面(page)。

万维网使用__统一资源定位符 URL(Uniform Resource Locator)__来标志万维网上的各种文档。每一个文档在整个因特网的范围内具有唯一的标识符 URL。

万维网使用__超文本传送协议 HTTP(HyperText Transfer Protocol)__实现万维网上各种超链的链接。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

万维网使用__超文本标记语言 html(HyperText Markup Language)__使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

URL

URL 用来表示从互联网上得到的资源位置和访问这些资源的方法。URL 实际上就是在互联网上的资源的地址,是与互联网相连的机器上的任何可访问对象的一个指针。

资源:在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。

URL格式<协议>://<主机>:<端口>/<路径>

  • 协议:http,ftp 等
  • 主机:IP 地址或域名,指出万维网文档在哪一台主机上
  • 端口:可省略,HTTP 默认端口号 80
  • 路径

HTTP

HTTP 协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
技术图片

  • 无连接:使用面向连接的 TCP 作为运输层协议,但其本身无连接。
  • 无状态:同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

请求一个万维网文档时间:
技术图片

HTTP/1.1 协议使用__持续连接__。
万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

持续连接的方式:

  • 非流水线方式:客户在收到前一个响应后才能发出下一个请求。比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。
  • 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT 时间。

报文结构

  • 请求报文:从客户向服务器发送请求报文
  • 响应报文:从服务器到客户的回答

由于 HTTP 是__面向文本(text-oriented)__的,因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。

技术图片

  1. 开始行:请求行(Request-Line)或状态行(Status-Line),用于区分是请求报文还是响应报文。三个字段之间以空格分开。
  2. 首部行:说明浏览器、服务器或报文主体的一些信息。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
  3. 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

请求报文

GET /xbyx/zxq.htm HTTP/1.1
Host: www.dlut.edu.cn
Connection: close
User-Agent: Mozilla/5.0
Accept-Language: cn

方法:对所请求的对象进行的操作,实际上也就是一些命令。

方法 意义
OPTION 请求一些选项的信息
GET 请求读取由 URL 所标志的信息
HEAD 请求读取由 URL 所标志的信息的首部
POST 给服务器添加信息
PUT 在指明的 URL 下存储一个文档
DELETE 删除指明的 URL 所标志的资源
TRACE 用来进行环回测试的请求报文
CONNECT 用于代理服务器

使用 GET 方法时实体主体为空,而使用 POST 方法时才使用。
HTTP 客户机常常在用户提交表单时使用 POST 方法,实体主体中包含的就是用户在表单字段中输入的值。
表单提交也可以使用 GET 方法。HTML 表单经常使用 GET 方法,将输入数据传送到正确的URL。

响应报文

HTTP/1.1 200 OK
Connection: Close
Date: Thu, 08 May 2014 06:43:16 GMT
Server: Apache-Coyote/1.1
Content-Type: image/gif;charset=UTF-8
Content-Length: 0

状态码:3 位数字,5 大类

  • 1xx 通知信息,如请求收到了或正在进行处理。
  • 2xx 成功,如接受或知道了。
  • 3xx 重定向,表示要完成请求还必须采取进一步的行动。
  • 4xx 客户的差错,如请求中有错误的语法或不能完成。
  • 5xx 服务器的差错,如服务器失效无法完成请求。

Cookie
万维网站点使用 Cookie 来跟踪用户。Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。

  1. 在 HTTP 响应报文中有一个 cookie 首部行
  2. 在 HTTP 请求报文中有一个 cookie 首部行
  3. 在用户端系统中保留有一个 cookie 文件,由用户的浏览器管理
  4. 在 Web 站点有一个后端数据库

代理服务器
proxy server,代理服务器,是一种网络实体,它又称为万维网高速缓存(Web cache)。
代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按 URL 的地址再次去互联网访问该资源。
代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
技术图片

  1. 校园网的计算机中的浏览器先和校园网的代理服务器建立 TCP 连接,并向代理服务器发出 HTTP 请求报文。
  2. 若代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入 HTTP 响应报文中返回给计算机的浏览器。
  3. 否则,代理服务器就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
  4. 源点服务器把所请求的对象放在 HTTP 响应报文中返回给校园网的代理服务器。
  5. 代理服务器收到这个对象后,先复制在自己的本地存储器中,然后把这个对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。

五、 动态主机配置协议 DHCP

Dynamic Host Configuration Protocol,动态主机配置协议,提供即插即用连网(plug-and-play networking)的机制。
这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。

配置项目

  • IP 地址
  • 子网掩码
  • 默认路由器的 IP 地址
  • 域名服务器的 IP 地址

客户/服务器方式

  • 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。
  • 本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。回答报文叫做提供报文(DHCPOFFER)。
  • DHCP 服务器先在其数据库中查找该计算机的配置信息。
    • 若找到,则返回找到的信息。
    • 若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。
  • 并不是每个网络上都有 DHCP 服务器,但至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。
  • 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。
    技术图片

租用期(lease period)
DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为__租用期__。
租用期的数值应由 DHCP 服务器自己决定。DHCP 客户也可在自己发送的报文中提出对租用期的要求。

工作流程
技术图片

  1. DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
  2. DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文。
  3. 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文。
  4. DHCP 客户从 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文。
  5. DHCP 服务器发送确认报文 DHCPACK。从这时起,DHCP客户就可以使用这个IP地址了。
  6. DHCP 客户根据租用期 T 设置两个计时器 T1 = 0.5T 和 T2 = 0.875T。T1 到时 DHCP 发送请求报文要求更新租用期。
  7. DHCP 服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。
  8. DHCP 服务器若不同意,则发回否认报文 DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,回到 2。若 DHCP 服务器不响应 6 的请求报文 DHCPREQUEST,则在 T2 到时重新发送请求报文 DHCPREQUEST。
  9. DHCP 客户可以随时提前终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可。





参考资料:《计算机网络》 谢希仁 著

以上是关于计算机网络 —— 应用层的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

jQuery应用 代码片段

Android:向活动添加片段

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段