应用层-Application Layer-DNS与万维网
第七章 应用层-Application Layer
7.1 应用层简介
之前的几篇中,我们描述了计算机网络是如何在链路上传递可靠的消息,并把分布于世界各地的不同链路组合起来,形成了一个巨大的网络结构,上一篇请看这里。现在终于到了计算机网络体系结构的最后一层,虽然对于应付考试来讲这一章会轻松一点,但应用层仍然是非常重要的。因为在众多的互联网层次架构中,应用层是最接近实际代码编写的一个层次。本章内容主要涵盖了几个应用层的经典应用,如万维网、电子邮件、DNS及内容分发网络。
在学习这一章内容时,要注意几个主要的应用是通过何种传输层协议实现的(TCP/UDP)
7.2 DNS域名解析系统-Domain Name System
7.2.1 简介
点分十进制的ip地址对于人类来说仍旧难以记忆,人们又创建了一套新的网络地址命名规则,称为域名系统。与点分十进制不同,域名系统由数字和字母组成,且不区分大小写。这样的灵活度使得域名系统可以产生实际的含义,更便于记忆(例如,.cn=china;.edu=education)。DNS就是帮助实现了这种映射关系。
尽管应用层本身不是重点,但是DNS确实是一个频繁考。读者应该重点掌握两种查询方式和DNS实现的原理(到底使用了TCP还是UDP)。
-
本质:发明了一种层次的、基于域的命名方案
-
使用分布式数据库系统实现
-
用途:把主机名字映射成ip地址
-
过程:1,解析器向本地DNS服务器发送包含待查找名字的UDP数据包,收到包含IP地址的UDP数据包作为回应;2主机选择建立TCP连接,或者发送UDP消息。
7.2.2域名资源记录
每个域都有一组与之相关的资源记录,这些记录组成了DNS数据库。对于一台主机来说,最常见的记录就是其IP地址。
7.2.3 域名服务器-递归查询&迭代查询
下面这张图描述了DNS的一次查询过程,可以分为递归查询和迭代查询两部分。
首先是递归查询:主机将查询发送给本地域名服务器,等待返回一个完整的ip地址。
之后是迭代查询:根据域名服务器及后续的各个服务器,继续查询操作。每个服务器并不再返回全部答案,而是只返回自己知道的一部分,由本地域名服务器解析后发出进一步查询报文。如,首先向跟域名服务器查询edu部分,再向edu服务器查询washington部分....
DNS在我们的生活中有着很广泛的应用。读者可以自己脑补一下打开萌萌的EDGE,第一次访问 cn.bing.com时候发生的事情。
7.3 万维网:web/world wide web
万维网是一个体系结构框架,把分布在整个Internet的机器连接起来供人访问。web由分布在全球范围内的内容组成,这些内容大部分以页面-page的形式表示。通常观看页面的程序称为浏览器。
URL-Uniform Resource locator
URL(统一资源定位器符)是为了定位某个web页面而设计的,它包含三个部分:协议、页面所在的机器的DNS名字,以及唯一指向特定页面的路径。当用户点击一个URL(如,http://www.cs.washington.edu/index.html)之后,发生了以下几件事情:
- 浏览器程序识解析URL,请求DNS服务器查询其中www.cs.washington.edu的ip地址
- DNS返回查询结果
- 浏览器与对应ip地址下的80端口建立TCP连接(80端口是专门为HTTP协议预留的,我们会在下一个部分详细讲解)
- 浏览器发送HTTP报文,请求index.html页面
- www.cs.washington.edu服务器将html页面文件发回作为http相应。
- 浏览器还会以同样的过程获取页面包含的其它URL,如内嵌图像、视频、和脚本等。
- 浏览器负责显示页面
- 如果短期内没有发送其它请求,则释放该TCP连接
HTTP超文本传输协议- HyperText Transfer Protocol
http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。
HTTP运行在TCP协议之上,它规定了客户端发送给服务器什么样的消息,并得到什么样的响应。HTTP是一个应用层协议,并与Web密切相关。然而从某种意义上讲,HTTP也越来越像一个传输层协议,因为它为进程间跨越不同网络提供了一种方式。这些进程已经不仅限于Web浏览器或者是服务器,各样的应用都在应用HTTP协议收发数据,发送请求。
HTTP使用了持续链接(又称连接重用)技术:建立一个TCP连接,在其上发送多个请求并得到响应,而不是将连接的建立、启动、释放集中于单个请求。这样一来,每个请求的TCP开销就被大大降低了。
HTTPS协议-HyperText Transfer Protocol over Secure Socket Layer
HTTP毕竟是一种不安全的协议(只需要发送和等待hello数据包的相应就会建立连接)。所以有了HTTPS。
HTTPS是一种通过计算机网络进行安全通信的传输协议。仍旧经由HTTP进行通信,但会利用SSL/TLS建立全信道,加密数据包。其中TLS是传输层加密协议,SSL是它的前身。http和https的关系大概相当于下图:
具体来讲,HTTP包含了证书验证和数据传输两个阶段,并且使用了非对称加密(可以简单理解为发送和解码时使用了不同的密钥)方法保证数据安全。
7.4 内容分发
内容分发网络中,内容提供商在全球的某些位置建立一组分布式机器,通过分布式的机器来提供服务内容(考虑像youtube一类的大型网站,任何单一的服务器可能都很难满足其对带宽的需求)。而与之相对应的体系结构是对等网络,就是为人很熟悉的P2P(peer to peer)。在p2p下,计算机之间彼此提供服务内容,不再设置中央控制节点。一个典型例子是迅雷下载,或者是之前的百度网盘用户激励计划。用户之间互相使用自己的上行带宽,为其他用户提供流量。
至此,计算机网络的主要内容就全部结束了~~~主贴请看这里