计算机网络第六章:应用层

千锋计算机网络期末速成笔记目录

文章目录

  • 1.应用层概述
    • 1.1 为什么需要应用层
    • 1.2 工作模式
      • Client/Server
      • P2P
  • 2.域名服务器
    • 2.1 为什么需要域名服务器
    • 2.2 域名系统概述
    • 2.3 域名结构
    • 2.4 域名服务器的概念
    • 2.5 域名服务器分类
      • 根域名服务器
      • 顶级域名服务器
      • 权限域名管理器
      • 本地域名服务器
      • DNS 服务解析实例
    • 2.6 域名可靠性
    • 2.7 域名的解析过程
      • 迭代查询
      • 递归查询
    • 2.8 DNS 服务器的高速缓存
  • 3.WWW 万维网
    • 3.1 万维网的问世
    • 3.2 万维网的概述
    • 3.3 超文本的概念
    • 3.4 万维网的工作方式
    • 3.5 万维网必须解决的问题
    • 3.6 统一资源定位符 URL
      • URL 的一般形式
      • 本机文件访问与互联网文件访问的对比
      • URl 的部分内容省略情况
  • 4.超文本传输协议 HTTP
    • 4.1 基本介绍
    • 4.2 WWW 的工作流程
    • 4.3 HTTP 的特点
    • 4.4 HTTP 协议本身是无连接的
    • 4.5 HTTP 是无状态的
      • 在服务器上存放用户的信息
      • Cookie 概念图
      • Cookie 实例
    • 4.6 HTTP 事务
      • 什么是 HTTP 事务
      • HTTP 面向事务的过程
      • 请求一个 WWW 文档所需的时间
    • 4.7 持续连接
      • 基本介绍
      • 持续连接的两种工作方式
      • 持续连接带来的新问题
      • 解决办法
    • 4.8 代理服务器
  • 5.HTTP 报文格式
    • 5.1 请求报文格式
      • 请求报报文
      • 请求方法
      • URL
      • 版本
    • 5.2 请求报文实例
    • 5.3 响应报文格式
      • 响应报报文
      • 状态码
    • 5.4 响应报文实例

1.应用层概述

1.1 为什么需要应用层

应用层为应用程序的通信提供服务:

  • 应用层协议定义:应用进程交换的报文类型,请求还是响应?
  • 各种报文类型的语法、语义;
  • 进程何时、如何发送报文,以及对报文进行响应的规则(同步)。

应用层功能及协议:

  • 域名服务: DNS;
  • 文件传输:FTP;
  • 电子邮件:SMTP 、POP3;
  • 远程登陆:TELNET;
  • WWW 服务: HTTP。

1.2 工作模式

Client/Server

服务器:提供网络服务的设备(由硬件和服务软件组成)。

  • 永久提供服务;
  • 有永久性访问地址/域名。

客户机:请求服务的主机。

  • 与服务器通信,使用服务器提供的服务;
  • 间歇性接入网络;
  • 可能使用动态 IP 地址;
  • 不与其他客户直接通信。

资源集中管理。

P2P

计算机网络第六章:应用层_第1张图片

  • 不存在永远在线的服务器;
  • 每个主机既可提供服务,也可以请求服务;
  • 任意端系统/节点之间可以直接通信
  • 节点间歇性接入网络;
  • 节点可能改变 IP 地址;
  • 可扩展性好;
  • 网络健壮性好;
  • 资源分散管理。

2.域名服务器

2.1 为什么需要域名服务器

互联网上的两台主机间的通信基本前提:

  • 双方需要知道对方的 IP 地址;
  • 双方需要知道对方通信的应用进程(端口号)。

现实中找某个人也是如此:

  • 这个人在哪里?
  • 这个人叫什么名字?

点分十进制的 IP 地址不容易记住而使用域名,类似人们的身份证号码不易记住而使用姓名。数字适合于机器,名字适合于人类。保密单位使用信箱作为通信地址。

解决办法:给互联网的主机取一个唯一的名字。

2.2 域名系统概述

互联网早期是通过共享一个文本文件的方式,让主机知道 IP 地址与名字(域名)的对应关系。

有新主机加入互联网,在该文件中新增加一条域名与 IP 地址相对应的记录。

随着互联网规模迅速扩大,这种方式的时效性太差。

该文件现在还在使用:

  • Windows:C:/Windows/System32/Drives/etc/hosts
  • Linux(Ubuntu):/etc/hosts

文件内容格式:

127.0.0.1 localhost
202.193.XXX.XXX ubuntu1604

DNS 域名系统解决了共享文件方式中的问题。

  • 互联网采用层次结构的命名树作为主机的名字;
  • 使用分布式的域名系统 DNS;
  • 名字到 IP 地址的解析是由若干个域名服务器程序完成的;
  • 域名服务器程序在专设的结点上运行;
  • 运行该程序的机器称为域名服务器

2.3 域名结构

互联网采用了层次树状结构的命名方法。

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

域名的结构由标号序列组成,各标号之间用点隔开:三级域名.二级域名.顶级域名

各标号分别代表不同级别的域名。

域名只是个逻辑概念,并不代表计算机所在的物理地点。

域名分类:

  • 国家顶级域名 nTLD:.cn、.us、.uk 等;
  • 通用顶级域名 gTLD:.com 、.net 、.org、.edu、.gov、.mil、.int 等;
  • 基础结构域名(infrastructure domain):这种顶级域名只有一个,即 arpa。用于反向域名解析,因此又称为反向域名。

1990 年 11 月 28 日,钱天白教授代表中国正式在国际互联网络信息中心(InterNIC)的前身 DDN - NIC 注册登记了我国的顶级域名 CN。

计算机网络第六章:应用层_第2张图片

2.4 域名服务器的概念

一个服务器所负责管辖的(或有权限的)范围叫做区(zone)

各单位根据具体情况来划分自已管辖范围的区。但在一个区中的所有节点必须是能够连通的。

每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射

DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位的。

计算机网络第六章:应用层_第3张图片

2.5 域名服务器分类

根域名服务器

最高层次、最重要的域名服务器。根域名服务器知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,首先求助于根域名服务器。

在互联网上共有 13 个不同 IP 地址的根域名服务器(13套),它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。

13 台根服务器,主根部署在美国,12 个辅根有 9 台在美国,1 台在英国,1 台在瑞典,1 台在日本。

名字 位置 IP 地址
A INTERNIC.NET(美国弗吉尼亚州) 198.41.0.4
B 美国信息科学研究所(美国加利弗尼亚州) 128.9.0.107
C PSINet 公司(美国弗吉尼亚州) 192.33.4.12
D 马里兰大学(美国马里兰州) 128.8.10.90
E 美国航空航天管理局(美国加利弗尼亚州) 192.203.230.10
F 因特网软件联盟(美国加利弗尼亚州) 192.5.5.241
G 美国国防部网络信息中心(美国弗吉尼亚州) 192.112.36.4
H 美国陆军研究所(美国马里兰州) 128.63.2.53
I Autonomica 公司(瑞典斯德哥尔摩) 192.36.148.17
J VeriSign 公司(美国弗吉尼亚州) 192.58.128.30
K RIPE NCC(英国伦敦) 193.0.14.129
L IANA(美国弗吉尼亚州) 198.32.64.12
M WIDE Project(日本东京) 202.12.27.33

顶级域名服务器

顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名

当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。

权限域名管理器

负责一个区的域名服务器。

当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。

本地域名服务器

当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。

每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。

这种域名服务器有时也称为默认域名服务器

DNS 服务解析实例

计算机网络第六章:应用层_第4张图片

2.6 域名可靠性

DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器

当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。

主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。

2.7 域名的解析过程

主机向本地域名服务器的查询采用递归查询。如果本地域名服务器不能解析域名的 IP 地址,本地域名服务器就以 DNS 客户 的身份,向根域名服务器发出查询请求报文。

本地域名服务器向根域名服务器的查询采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。本地域名服务器进行后续的查询。

迭代查询

计算机网络第六章:应用层_第5张图片

递归查询

本地域名服务器采用递归查询。

计算机网络第六章:应用层_第6张图片

2.8 DNS 服务器的高速缓存

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。

可大大减轻根域名服务器的负荷,使互联网上的 dns 查询请求和回答报文的数量大为减少。

为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。

当权限域名服务器回答一个查询请求时,在响应中指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。解决了客户频繁向服务器请求解析不存在的域名问题。

3.WWW 万维网

3.1 万维网的问世

1989 年,蒂姆成功开发出世界上第一个 Web 服务器和第一个 Web 客户机。

1989 年 12 月,蒂姆为他的发明正式定名为 World Wide Web

1991 年 5 月,WWW 在 Internet 上首次露面,立即引起轰动,获得了极大的成功被广泛推广应用。

1991年 8 月 6 日,世界上第一个网页 http://info.cern.ch 诞生。

计算机网络第六章:应用层_第7张图片

3.2 万维网的概述

万维网 WWW(World Wide Web)并非某种特殊的计算机网络,它是无数个网络站点和网页的集合,是一个大规模的、联机式的信息储藏所。它们在一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet 以及新闻组)。它实际上是多媒体的集合,是由超级链接连接而成的。

万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。

一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。

超媒体与超文本的区别:超文本文档仅包含文本信息,超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。

3.3 超文本的概念

计算机网络第六章:应用层_第8张图片

3.4 万维网的工作方式

万维网以 客户/服务器 方式工作。

浏览器是用户计算机上的万维网客户程序。

万维网文档所驻留的计算机则运行服务器程序,称万维网服务器。

客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。

在一个客户程序主窗口上显示出的万维网文档称为页面(page)

常用的服务器软件:

  • Apache
  • Nginx
  • IIS
  • Tomcat

3.5 万维网必须解决的问题

如何标志分布在整个互联网上的万维网文档?

  • 使用统一资源定位符 URL 来标志万维网上的各种文档;
  • 使每一个文档在整个互联网的范围内具有唯一的标识符 URL。

用什么协议实现万维网上各种超链的链接?

  • 超文本传送协议 HTTP(HyperText Transfer Protocol);
  • HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

万维网文档如何在互联网上的各种计算机上显示出来,并能清楚地标明超链?

  • 超文本标记语言HTML能使得万维网页面的设计者用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

用户如何查找所需的信息 ?

  • 各种的搜索工具(即搜索引擎)。

3.6 统一资源定位符 URL

URL 的一般形式

由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。

URL的一般形式例如:http://www.baidu.com:80/index.html

计算机网络第六章:应用层_第9张图片

  • 主机:从哪台目标主机上获取资源;
  • 协议:指明采用什么协议获取目标主机的资源;
  • 端口:从目标主机中的那个应用进程获取资源;
  • 路径:资源在主机上存放的路径。

本机文件访问与互联网文件访问的对比

  • Windows 系统“完整文件”名称:C:\Program Files\VMware\VMware Tools\vmacthlp

  • Linux系统“完整文件”名称:/etc/passwd

  • 互联网中 http 协议访问文件的“完整文件”名称:

    计算机网络第六章:应用层_第10张图片

URl 的部分内容省略情况

有些浏览器为了方便用户,在输入 URL 时,可以把最前面的 http:// 甚至把主机名最前面的 www 省略,然后浏览器替用户把省略的字符添上。

例如,用户只要键入 zhulang.love,浏览器就自动把未键入的字符补齐,变成 http://www.zhulang.love

如果 WWW 服务器监听熟知端口,则 :80 也可以省略。

默认访问的 WWW 根下的 index .html 等文件名也可以省略。

4.超文本传输协议 HTTP

4.1 基本介绍

为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。

从层次的角度看,HTTP 是**面向事务的(transaction-oriented)**应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

HTTP 协议永远都是客户端发起请求,服务器回送响应。

这样就限制了使用 HTTP 协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP 协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。

4.2 WWW 的工作流程

计算机网络第六章:应用层_第11张图片

每个 WWW 服务器运行服务器进程,该进程采用 TCP 协议,监听 TCP 80 端口,不断检测是否有浏览器向它发出连接建立请求。

一旦监听到连接建立请求并建立了 TCP 连接之后,客户端浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP 连接就被释放了。

用户浏览页面的两种方法:

  • URL:在浏览器的地址栏中输入页面的 URL;
  • 超链接:在页面上鼠标点击某个链接,浏览器自动在互联网上找到链接的页面。

在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议 HTTP。

HTTP 规定在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个ASCII 码串构成的请求和响应组成。

HTTP 报文通常都使用 TCP 连接传送。

4.3 HTTP 的特点

HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。

HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

HTTP 是面向事务的客户服务器协议。

HTTP 1.0 协议是无状态的(stateless)

4.4 HTTP 协议本身是无连接的

无连接的含义:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

原因:早期每个客户端与服务器之间交换数据的间歇性较大 (即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,大部分通道实际上会很空闲、无端占用资源。

现在:网页很复杂,嵌入了很多图片,这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。

解决办法:Keep-Alive 被提出用来解决这效率低的问题。

4.5 HTTP 是无状态的

无状态:指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即给服务器发送 HTTP 请求之后,服务器根据请求发回数据。发送完,不记录任何信息。

  • HTTP 请求都是独立的,Keep-Alive 没能改变这个结果;
  • 如果后续处理需要前面的信息,则必须重传。

减轻了服务器负荷,但每次请求可能会传输重复的内容。无状态的特点严重阻碍了客户端与服务器进行动态交互的 Web 应用程序 ,例如购物车程序。

解决办法:CookieSession

在服务器上存放用户的信息

万维网站点可以使用 Cookie 来跟踪用户:

  • Cookie 表示在 HTTP 服务器和客户之间传递的状态信息;
  • 使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动;
  • Cookie会被附加在每个 HTTP 请求中,所以无形中增加了流量;
  • 由于在 HTTP 请求中的 Cookie 是明文传递的,所以安全性成问题。(除非用 HTTPS)
  • Cookie 的大小限制在 4 KB左右。对于复杂的存储需求来说是不够用的。

Cookie 概念图

计算机网络第六章:应用层_第12张图片

Cookie 实例

计算机网络第六章:应用层_第13张图片

4.6 HTTP 事务

什么是 HTTP 事务

一次 HTTP 操作称为一个事务,其工作过程可分为四步:

  1. 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP 的工作开始;
  2. 建立连接后,客户机发送一个请求给服务器;
  3. 服务器接到请求后,给予相应的响应信息;
  4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。

对于用户来说,这些过程是由 HTTP 自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

HTTP 面向事务的过程

浏览器访问 www.baidu.com 完整的HTTP事务过程:

  1. 客户发出 http 请求;
  2. 服务器响应 http 请求;
  3. 浏览器得到 html 代码;
  4. 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等);
  5. 浏览器对页面进行渲染呈现给用户。

请求一个 WWW 文档所需的时间

计算机网络第六章:应用层_第14张图片

4.7 持续连接

基本介绍

HTTP/1.1 协议使用持续连接(persistent connection)

  • 万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文;
  • 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行;
  • 目前一些流行的浏览器的默认设置就是使用 HTTP/1.1

持续连接的两种工作方式

  • 非流水线方式客户在收到前一个响应后才能发出下一个请求。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
  • 流水线方式客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT 时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。

持续连接带来的新问题

在持续连接情况下,客户端发出请求后,服务器发送回响应,由于连接没有释放,客户端无法知道服务器数据是否传输完毕,一直等待。

当服务器进程退出之后,客户浏览器才会显示页面内容。

计算机网络第六章:应用层_第15张图片

解决办法

响应时采用 Transfer-Encoding: chunked,解决传输数据的边界问题。

在 HTTP 响应头部中,用“Content-Length: 12395”告诉了客户端实体长度为 12359 字节。

计算机网络第六章:应用层_第16张图片

4.8 代理服务器

代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。

万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。

当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。

  • 没有使用高速缓存(代理服务器)的情况

    计算机网络第六章:应用层_第17张图片

  • 使用高速缓存(代理服务器)的情况

    计算机网络第六章:应用层_第18张图片

5.HTTP 报文格式

5.1 请求报文格式

请求报报文

报文由三个部分组成:开始行、首部行和实体主体。

请求报文中,开始行就是请求行。

计算机网络第六章:应用层_第19张图片

请求方法

计算机网络第六章:应用层_第20张图片

“请求方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是些命令。因此,请求报文的类型是由它所采用的方法决定的。

  • GET:用来请求已被 URI 识别的资源,并返回实体主体;
  • POST:向指定资源提交数据进行处理(例如提交表单或者上传文件)。数据被包含在请求体中。 POST 请求可能会导致新的资源的建立和/或已有资源的修改;
  • HEAD:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获得报文首部;
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容;
  • DELETE:请求服务器删除指定的页面;
  • OPTIONS:允许客户端查看服务器的性能;
  • TRACE:回显服务器收到的请求,主要用于测试或诊断;
  • CONNECT:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。

URL

“URL”是所请求的资源的 URL。

计算机网络第六章:应用层_第21张图片

版本

“版本”是 HTTP 的版本。

计算机网络第六章:应用层_第22张图片

5.2 请求报文实例

计算机网络第六章:应用层_第23张图片

5.3 响应报文格式

响应报报文

响应报文的开始行是状态行。

状态行包括三项内容:HTTP 的版本,状态码,以及解释状态码的简单短语。

计算机网络第六章:应用层_第24张图片

状态码

状态代码由三位数字组成,第一个数字定义了响应的类别,共分 5 种类别:

  • 1xx:指示信息 —— 表示请求已接收,继续处理;
  • 2xx:成功 —— 表示请求已被成功接收、理解和接受;
  • 3xx:重定向 —— 要完成请求必须进行更进一步的操作;
  • 4xx:客户端错误 —— 请求有语法错误或请求无法实现;
  • 5xx:服务器端错误 —— 服务器未能实现合法的请求。

一些例子:

  • 200 OK:客户端请求成功;
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解;
  • 401 Unauthorized:认证失败,请求未被接受;
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务;
  • 404 Not Found:请求资源不存在,或者输入了错误的 URL;
  • 500 Internal Server Error:服务器发生不可预期的错误;
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

5.4 响应报文实例

计算机网络第六章:应用层_第25张图片

计算机网络第六章:应用层_第26张图片

你可能感兴趣的:(计算机底层,计算机网络)