[计算机网络]第六章 应用层
[计算机网络]第六章 应用层
学习使用工具
HillZhang的计算机网络复习笔记 https://hillzhang1999.gitee.io/2020/05/22/ji-suan-ji-wang-luo-quan-bu-fu-xi-bi-ji/
《计算机网络》谢希仁
1. 应用层的功能
在前五章我们已经详细地讨论了计算机网络提供通信服务的过程。但是我们还没有讨论这些通信服务是如何提供给应用进程来使用的。本章讨论各种应用进程通过什么样的应用层协议来使用网络所提供的这些通信服务。
在运输层协议之上,还需要有应用层协议(application layer protocol)。这是因为,每个应用层协议都是为了解决某一类应用问题,而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间的这种通信必须遵循严格的规则。应用层的具体内容就是精确定义这些通信规则。
2.DNS域名系统
域名系统DNS (Domain Name System)是互联网使用的命名系统,用来把便于人们使用
的机器名字转换为IP地址。DNS协议基于UDP,53端口。
“域名系统”很明确地指明这种系统是用在互联网中的。许多应用层软件经常直接使用域名系统DNS。虽然计算机的用户只是间接而不是直接使用域名系统,但DNS却为互联网的各种网络应用提供了核心服务。
名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。域名只是个逻辑概念,并不代表计算机所在的物理地点。DNS可以将域名解析为IP地址,也可以将IP地址解析为域名(反向解析)。
- 域名服务器:一个服务器所负责管辖的(或有权限的)范围叫做区。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
- 根域名服务器:根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。根域名服务器共有 13 套装置。
- 顶级域名服务器 :顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)(迭代查询而非递归查询)。
- 权限域名服务器:负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
- 本地域名服务器:本地域名服务器对域名系统非常重要。当一个主机发出 DNS 查询请求时,这个查询请求报文就首先发送给本地域名服务器。每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。
-
域名解析过程
- 主机向本地域名服务器的查询一般都是采用递归查询。(被请求的域名服务器若无法给出所需的IP地址,就以DNS客户的身份帮忙继续发送查询请求报文)
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。(被请求的域名服务器若无法给出所需的IP地址,不帮忙继续发送查询请求报文,而是返回给请求者“它下一步应当向哪一个域名服务器查询”)
- 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。每次域名解析时,先看高速缓存里有没有对应的记录(就像ARP协议一样)
3.文件传输协议FTP
文件传送协议是互联网上使用得最广泛的文件传送协议。FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。RFC 959 很早就成为了互联网的正式标准。
主要功能:减少或消除在不同操作系统下处理文件的不兼容性。
工作方式:FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
一个 FTP 服务器进程可以同时为多个客户进程提供服务,在进行文件传输时,FTP 的客户和服务器之间要建立两个并行的 TCP 连接:控制连接和数据连接,实际用于传输文件的是数据连接。 FTP使用了两个不同的端口号,分别为:20和21。分别用于传输数据和控制连接,使协议更容易实现,可以在传输数据的同时控制连接。
- 网络文件系统协议NFS:网络文件系统,NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。NFS 在网络上传送的只是少量的修改数据。
- 简单文件传送协议TFTP:一个很小且易于实现的文件传送协议。TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。TFTP 只支持文件传输而不支持交互。TFTP的首部很简单,传输效率较高,但是不可靠,使用类似于停止等待协议的方式进行差错控制。
4.万维网
万维网并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所。万维网上的不同站点之间按照链接相互连接。万维网是分布式超媒体系统,它是超文本系统的扩充。一个超文本由多个信息源链接成,包含文本+链接。超媒体与超文本的区别是文档内容不同,如图形、图像、声音、动画,甚至活动视频图像。
万维网的工作方式:客户服务器方式(浏览器服务器方式)。
-
怎样标志分布在整个互联网上的万维网文档?
- 使用统一资源定位符 URL来标志万维网上的各种文档。使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
-
用何协议实现万维网上各种超链的链接?
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
-
怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
- 超文本标记语言 HTML 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
-
统一资源定位符URL:
- 作用:用于在全网范围内确定一个网页
- 格式:<协议>://<主机>:<端口>/<路径>,端口和路径可省略
- 用户点击URL后发生的事情:
- 浏览器分析超链指向页面的 URL,看其是否合法,如果合法,先在浏览器缓存中查询,如果有对应页面直接返回。
- 浏览器通过DNS域名解析服务解析IP地址,先从浏览器缓存查询、然后是操作系统和hosts文件的缓存,如果没有查询本地域名服务器的缓存。
- 域名系统 DNS 解析出对应网站服务器的 IP 地址。
- 浏览器与服务器进行三次握手,建立 TCP 连接。
- 浏览器发出取页面文件命令。
- 服务器给出响应,把页面文件发给客户端浏览器。
- TCP 连接进行四次挥手释放。
- 浏览器渲染并显示页面文件中的所有文本。
-
超文本传输协议HTTP(TCP,80端口)
HTTP是超文本传输协议,规范了浏览器如何向万维网服务器请求万维网文档,服务器如何向浏览器发送万维网文档。从层次的角度看,HTTP是面向事务的应用层协议,是浏览器和服务器之间的传送数据文件的重要基础。
HTTP是无状态的,之所以说无状态是因为HTTP对事务没有记忆性。同一个客户第二次访问同一个服务器,服务器的响应结果和第一次是一样的。HTTP的无状态简化了服务器的设计,允许服务器支持高并发的HTTP请求。如果要解决无状态的问题,可以使用cookie和session。
- Cookie存放在客户端的文件中,而Session存放在服务器端的内存中。
- Cookie只能存储ASCII 码字符串,而 Session 则可以存储任何类型的数据,因此在考虑数据复杂性时首选Session。
- Cookie 存储在客户端的浏览器文件中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密。
- 对于大型网站,如果用户所有的信息都存储在 Session 中,那么开销是非常大的,因此不建议将所有的用户信息都存储到 Session 中。
HTTP1.0/1.1/2的主要区别:
-
HTTP1.0
- HTTP1.0默认不支持长连接,每一次请求都需要重新建立TCP连接。
- HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname) 。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。
-
HTTP1.1
- HTTP 1.1支持持久连接(HTTP/1.1的默认模式使用带流水线的持久连接),在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
- HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
- HTTP 1.1中增加Host请求头字段 , 实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点 。
- HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头 ,支持断点续传。
-
HTTP2.0
- header压缩:我们在传输文本等静态资源的时候,一般会开启压缩,gzip等,这样会减少宽带的占用,对于一些较大的文本文件,压缩后会减少的特别明显,相应也会感觉提升了很多。而header头信息的传输却一直使用字符串来传输,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。
- 服务器推送: 当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。
- 多路复用: 多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行; 而HTTP1.1的长连接是若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞。
-
HTTP协议主要的请求方法
序号 方法 描述 1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。 5 DELETE 请求服务器删除指定的页面。 6 CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 7 OPTIONS 允许客户端查看服务器的性能。 8 TRACE 回显服务器收到的请求,主要用于测试或诊断。 9 PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 -
GET方法和POST方法的区别:
-
GET方法是在浏览器的地址栏中输入网址的方式访问网页时,浏览器采用GET方法向服务器获取资源,POST方法要求被请求服务器接受附在请求后面的数据,常用于提交表单。GET是用于获取数据的,POST一般用于将数据发给服务器之用。
-
GET和POST的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而POST的参数存储在实体主体(body)中。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具查看。 但实际上,私密内容的传输尽量还是使用POST+Body的形式传输,毕竟这样做参数不会明文显示在URL中,如果要加强传输安全性,需要使用HTTPS协议。此外,由于浏览器的限制,URL的长度通常是限长的,这将导致GET方法的参数有限,而POST方法无限。
-
针对服务器来说,安全的HTTP方法不会改变服务器状态,也就是说它只是可读的。GET方法是安全的,而POST却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
-
GET方法是幂等的,而POST方法不幂等。所谓幂等指的是同一个请求方法执行多次和仅执行一次的效果完全相同。
-
Ajax技术:不用刷新网页即可改变网页内容。XMLHttpRequest是一个 API,在Ajax中大量使用。它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。
-
安全的HTTP协议——HTTPS(TCP,443端口):
- HTTP有很大的安全隐患:使用明文进行通信,内容可能会被窃听。不验证通信方的身份,通信方的身份有可能遭遇伪装。无法证明报文的完整性,报文有可能遭篡改。
- HTTPS是以安全为目标的HTTP通道,S代表security,让HTTP先和SSL通信,再由SSL和TCP 通信,也就是说 HTTPS使用了隧道进行通信。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
- 流程:
- 加密算法主要有对称加密和非对称加密,对称加密的运算速度快,但安全性不高。非对称密钥加密,加密和解密使用不同的密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。
- 非对称密钥除了用来加密还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。非对称加密的运算速度慢,但是更安全。HTTPS采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。
- 浏览器和服务器建立TCP连接后,会发送一个证书请求,其中包含了自己可以实现的算法列表和一些必要信息,用于商议双方使用的加密算法。 (请求证书)
- 服务器收到请求后会选择加密算法,然后返回证书,包含了服务器的信息,域名、申请证书的公司、加密的公钥以及加密的算法等。 (发还证书)
- 浏览器收到之后,检查签发该证书的机构是否正确,该机构的公钥签名是否有效,如果有效就生成对称密钥,并利用公钥对其加密,然后发送给服务器。(公钥加密)
- 服务器收到密钥后,利用自己的私钥解密。之后浏览器和服务器就可以基于对称加密对数据进行加密和通信。 (建立连接是非对称加密,传输数据是对称加密,兼顾效率和安全性)(私钥解密,创建安全连接)
5.其他协议
-
远程终端协议TELNET:TELNET 是一个简单的远程终端协议,也是互联网的正式标准。主要用来远程登录和操控目的主机。用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。TELNET 也使用客户-服务器方式。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。TELNET很简单,不够安全,所以现在很少使用了,通常使用安全的SSH协议进行远程登录。
-
简单邮件传输协议SMTP:用于发送电子邮件。
-
读取邮件的协议:POP3邮局协议3.0 和 IMAP
-
通用互联网邮件扩展MIME 在其邮件首部中说明了邮件的数据类型如文本、声音、图像、视像等如文本、声音、图像、视像等,使用 MIME 可在邮件中同时传送多种类型的数据
-
电子邮件系统的组成:
- 两个用户代理(发送方用户代理、接收方用户代理)
- 两个邮件服务器(发送方邮件服务器、接收方邮件服务器)
- 两个协议(SMTP:发送方用户代理到发送方邮件服务器,发送方邮件服务器到接收方邮件服务器、POP3:接收方邮件服务器到接收方用户代理)
-
用户代理 UA :
- 就是用户与电子邮件系统的接口,是电子邮件客户端软件。
- 用户代理的功能:撰写、显示、处理和通信。
-
发送邮件的步骤:
- 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。
- 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
- SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
- 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
- 运行在接收方邮件服务器中的SMTP服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
- 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件。
-
基于万维网的电子邮件系统
-
-
简单网络管理协议 SNMP(由于需要管理网络内的多个主机,需要广播,使用UDP,端口号:161):SNMP 由三部分组成,SNMP 本身,负责读取和改变各代理中的对象名及其状态数值;管理信息结构 SMI,定义命名对象和对象类型的通用规则,以及把对象之间值进行编码的基本编码规范 BER;管理信息库 MIB,在被管理的实体中创建命名对象并规定其类型。
-
动态主机配置协议 DHCP:可以自动设置IP地址、域名和本地DNS服务器等。使用UDP,需要配置多台主机。