码迷,mamicode.com
首页 > 其他好文 > 详细

计算机网络读书笔记-----应用层

时间:2015-08-01 10:09:10      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:计算机   网络   应用层   http   dns   

每个应用层的协议都是为了解决某一类应用问题,而问题的解决又往往是通过不同主机之间多个应用进程之间的通信和协作工作来完成的。应用层的具体内容就是规定应用进程在通信时遵循的协议。


DNS(Domain Name System )

  • DNS的出现:

用户与因特网进行通信时,显然不愿意使用很难记忆的32位二进制主机,即使点分十进制的IP地址也不容易记忆,相反愿意使用某种易于记忆的主机名。

在早期的时候,整个网络上只有数百台计算机,那时使用一个hosts的文件,列出所有的主机名字和相应的IP地址,用户只要输入一个主机名字,计算机就可以将其转换为能识别的IP。
为什么不直接使用域名,因为域名长度不固定,机器处理起来比较困难。

理论上使用一台计算机,让其装入所有的主机名与IP的映射,但是这样的方法不可取,随着因特网规模的扩大,这台计算机肯定会因为超负荷无法工作,而且还存在单点故障。
后来,因特网使用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS。

  • DNS概述:

DNS是一个联机分布式数据库系统,采用客户服务器方式,因为DNS使用大多数名字都在本地解析,只有少量需要在因特网上解析,因此效率很高;而且由于DNS是分布式系统,就不会存在单点故障。

域名到IP的解析是由若干个运行在因特网上的域名服务器程序来进行解析的,而域名服务器程序又运行在专设的结点,因此也把运行域名服务器程序的机器称为域名服务器。

  • DNS域名结构:

任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域是指名字空间中一个可被管理的划分。域可以划分为子域,子域还可进行划分,这样就构成了顶级域、二级域、三级域等。

域名是由标号序列组成,标号由英文字母、数字和连字符(-)组成,,而各标号之间用小数点隔开,每一个标号不超过63个字符,不区分大小写字母

比如
mail.cctv.com 中央电视台用于收发电子邮件的计算机
(三级域名.二级域名.顶级域名)

顶级域名分为三类:
国家顶级域名(.us,.cn…)、国际顶级域名(.int)、通用顶级域名(.com,.org,.net…..)。
在国家顶级域名注册下的二级域名由该国家自行确定。

域名的命名空间如下:
技术分享

域名的树叶就是单台计算机的名字。

图中说明了中央电视台和清华大学都各有一台计算机取名为mail,但是他们不冲突,因为其域名不一样,一个是mail.cctv.com,一个是mail.tsinghua.edu.cn。所以域名在因特网中必须是唯一的。

域名服务器分类
每一台域名服务器不仅能够解析域名到IP,而且还要连向其他域名服务器的信息,当自己不能进行域名到IP的转换时,就知道去什么地方找到别的域名服务器。

域名服务器也按照层次结构来划分,现在又四种不同类型的域名服务器:

本地域名服务器:
本地域名服务器也称默认域名服务器。当一个主机发送出DNS查询请求时,首先会发送给本地域名服务器。每一个因特网服务提供者ISP,或者一个大学,甚至大学中的一个系都可以有一个本地域名服务器。

根域名服务器:
是最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址;
不论是哪一个本地域名服务器,若对因特网上任何一个域名无法解析时,首先求助根域名服务器
顶级域名服务器:
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名,当收到DNS请求时,会给出相应回答。

权限域名服务器:
每一个主机都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的主机名应当转换成什么IP地址。

域名服务器的可靠性:
DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。这样当主域名服务器出现故障时,辅助域名服务器以保证DNS的查询工作不会中断。

  • DNS解析过程:

主机向本地域名服务器的查询一般采用递归查询。

当某一个应用进程需要把主机名解析为IP地址时,该应用进程就会调用解析程序,并成为DNS的一个客户,将待解析的域名放入到DNS请求报文中,以UDP用户数据报方式发送给本地域名服务器(使用UDP是为了减少开销) ,如果本地域名服务器不知道所查询的域名的IP地址,那么域名服务器就以DNS客户的身份,向其他根域名服务器继续发送查询请求报文。

本地域名服务器向根域名服务器的查询通常是采用迭代查询。就是由本地域名服务器进行循环查询。
当根域名收到本地域名服务器的迭代查询请求报文时,
告诉本地域名服务器自己知道的顶级域名服务器的IP地址,本地域名服务器在进行后续的查询。

迭代查询和递归查询的区别:

本地域名服务器采用迭代查询
技术分享

步骤:

1、主机m.xyz.com先向本地域名服务器dns.xyz.com进行递归查询
2、本地域名服务器采用迭代查询。先向一个根域名服务器查询
3、根域名服务器告诉本地域名服务器,下一次应该查询的顶级域名服务器dns.com的IP地址
4、本地域名服务器对顶级域名服务器dns.com进行查询
5、顶级域名服务器dns.com告诉本地域名服务器,下一次应该查询的权限权限域名服务器dns.abc.com的IP地址
 6、本地域名服务器向权限域名服务器进行查询
7、权限域名服务器告诉本地域名服务器所查询的IP地址
8、本地域名服务器将最后的查询结果返回给主机

注意:在查询过程中,有可能顶级域名服务器直接查询到IP,返回给本地域名服务器。

本地域名服务器采用递归查询(比较少用)
技术分享

类似于上面的分析方法,本地域名服务器只需要向根域名服务器查询一次(后面的都是在几个域名服务器之间进行的查询),就可以得到IP

  • 高速缓存:

为了提高DNS的查询效率,并减轻根域名服务器的符合以及网上的DNS查询报文。
在域名服务器中广泛的使用了高速缓存,高速缓存用来存放最近查询过的域名以及从何处的得到域名的记录。
如果本地域名服务器之前查询过类似的域名,就可以从高速缓存中直接查询IP
如果高速缓存中只有顶级域名的IP,那么就可以直接去顶级域名中查询,从而减轻根域名服务器的负担。

在主机中也会存在需要高速缓存,只有在缓存中找不到名字才会使用域名服务器。


  • 万维网WWW:

万维网并非某种特殊的网络,是一个大规模、联机式的信息储藏所,万维网是一个分布式的超媒体系统,是超文本系统的扩充,也称web。可以显示www信息的称为web浏览器

万维网使用链接的方法能非常方便的从因特网上的一个站点链接到另一个站点。

超文本是万维网的基础,所谓的超文本是包含指向其他文档的链接的文本。也就是说,一个超文本由多个信息源链接成,而这些信息源的数目实际上是不受限制的。
利用这一个链接可使用户找到另一个文档,而这又可链接到其他的文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。

万维网以客户服务器方式工作,浏览器就是用户主机上的万维网客户程序,而万维网文档所驻留的主机则运行服务器程序,因此这个主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口显示的万维网文档称为页面。

万维网定义了三个概念:URL,Http,Html

URL统一资源定位符,是对可以从因特网上得到资源位置和访问方法的一种简洁表示
URL相当于一个文件名在网络范围的扩展,URL一般形式如下:

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

前面的协议是说使用什么协议来获取该万维网文档。
现在最常用的就是http,其次是ftp

http:// <主机>:<端口>/<路径>

://是规定的格式;http的默认端口号是80,通常可以省略,如果省略路径,那么URL就指向了因特网上的某个主页

比如查看清华大学的信息,可以先进入清华大学的主页,其URL是
http://www.tsinghua.edu.cn
这里省略了默认的端口号80
我们还可以根据路径指向更深一层次的页面
http://www.tsinghua.edu.cn/chn/yxsz/index.htm
这是清华大学院系设置页面的URL。这个URL指向了文件的路径,最后打开的文件名就是index.htm,后缀htm或html表示是用超文本标记语言HTML写出的文件

HTML:
超文本标记语言是一种制作万维网页面的标准语言,消除了不同计算机之间交流的障碍
HTML (HyperText Markup Language)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。这里不再详细介绍。


我们重点来看一下http

HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档以及服务器怎样把文档传送给浏览器。HTTP是一个应用层协议,使用了TCP连接保证其可靠的传输。

万维网的工作过程如下:
技术分享

用户点击鼠标后所发生的事件:

1、浏览器分析超链指向页面的URL
2、浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址
3、域名系统DNS解析出清华大学服务器的IP地址
4、浏览器与服务器建立了TCP连接
5、浏览器发出取文件命令:GET /chn/yxsz/index.htm
6、服务器给出想赢,把文件index.htm发给浏览器
7、TCP连接释放
8、浏览器里显示index.htm中的所有文本。

HTTP是无状态的,也就是说,同一个客户在第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同,因为服务器并不记得曾经访问的这个客户,这样简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

HTTP本身是无连接的,这说明,通信双方在交换HTTP报文之前不需要建立HTTP连接。HTTP虽然使用了TCP作为运输层协议,保证了数据的可靠。即HTTP不用考虑数据在传输过程中被丢弃后怎么被重传。

粗略估算一下,从浏览器请求到收到整个文档所需的时间,如图所示:
技术分享

从图中可以看出来请求一个万维网文档所需的时间是该文档的传输时间加上两倍往返时间RTT(一个是建立TCP连接,另一个是用于请求和接收万维网文档

可以看出,每请求一个文档就要有两倍RTT的开销,当一个页面上有很多链接的对象需要进行依次链接,那么每一次链接都导致2倍的RTT的开销
HTTP/1.1协议较好的解决了这个HTTP/1.0的缺点,使用了持续连接。所谓的持续连接就是万维网服务器发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和服务器可以继续在这条链接上传输后续的HTTP请求报文和响应报文。
HTTP的持续连接有两种工作方式:
非流水线方式和流水线方式。
非流水线特点

客户在收到前一个响应后才能发送下一个请求,因此比非持续链接的两倍RTT的开销节省了建立TCP连接所需的一个RTTI时间。但是服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。

流水线方式特点

客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续的发回响应报文。这样所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提高了下载效率。
  • 代理服务器:

代理服务器又称为万维网的高速缓存,代理服务器吧最近的一些请求和响应报文暂存在本地磁盘,当新请求到达时,代理服务器发现这个请求与暂存的相同,所以就返回暂存的响应,而不用在根据URL的地址再去因特网上访问该资源。

如图所示:
不使用代理服务器:
技术分享

这样就使得校园网中的所有PC机都通过这一条线路,因而校园网各PC机访问因特网的通信量往往会使这条2Mb/s的链路过载,造成比较大的时延。

使用代理服务器:
技术分享

图中红色的代表请求,深绿色虚线代表应答。

1、浏览器向因特网的服务器请求服务时,首先与校园网的代理服务器建立TCP连接,并向其发送HTTP请求报文
2、 此时代理服务器中如果有请求的对象,则将此对象放入HTTP的响应报文中返回给浏览器

3、若代理服务器中没有请求的对象,代理服务器就代表请求的用户浏览器,与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文
4、源点服务器将所请求的对象放入到HTTP响应报文中,并返回给校园网的代理服务器

5、代理服务器收到此对象后,先将其复制在自己的本地存储器中,然后再将对象放入HTTP的响应报文中,通过已建立的TCP连接,返回给请求该对象的浏览器。

当使用代理服务器时,由于有一大部分的通信量局限在校园网的内部,因此2Mb/s专线链路的通信量大大减少,因此减少了访问因特网的时延。

HTTP报文结构:
HTTP的报文分为两类,请求报文和响应报文

请求报文:

技术分享
URL表示所请求资源的URL,版本表示HTTP的版本号
方法是指对所请求对象的操作,也可以说是一些命令,下图是HTTP请求报文的一些方法

技术分享

响应报文:

技术分享

状态码都是三位数字:

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

摘自:
计算机网络.第五版.谢希仁

版权声明:本文为博主原创文章,未经博主允许不得转载。

计算机网络读书笔记-----应用层

标签:计算机   网络   应用层   http   dns   

原文地址:http://blog.csdn.net/u014307117/article/details/47183157

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!