zoukankan      html  css  js  c++  java
  • 应用层-Application Layer-DNS与万维网

    第七章 应用层-Application Layer

    7.1 应用层简介

    之前的几篇中,我们描述了计算机网络是如何在链路上传递可靠的消息,并把分布于世界各地的不同链路组合起来,形成了一个巨大的网络结构,上一篇请看这里。现在终于到了计算机网络体系结构的最后一层,虽然对于应付考试来讲这一章会轻松一点,但应用层仍然是非常重要的。因为在众多的互联网层次架构中,应用层是最接近实际代码编写的一个层次。本章内容主要涵盖了几个应用层的经典应用,如万维网、电子邮件、DNS及内容分发网络。

    image-20201204204847727

    在学习这一章内容时,要注意几个主要的应用是通过何种传输层协议实现的(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的一次查询过程,可以分为递归查询和迭代查询两部分。

    image-20201204213504707

    首先是递归查询:主机将查询发送给本地域名服务器,等待返回一个完整的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)之后,发生了以下几件事情:

    1. 浏览器程序识解析URL,请求DNS服务器查询其中www.cs.washington.edu的ip地址
    2. DNS返回查询结果
    3. 浏览器与对应ip地址下的80端口建立TCP连接(80端口是专门为HTTP协议预留的,我们会在下一个部分详细讲解)
    4. 浏览器发送HTTP报文,请求index.html页面
    5. www.cs.washington.edu服务器将html页面文件发回作为http相应。
    6. 浏览器还会以同样的过程获取页面包含的其它URL,如内嵌图像、视频、和脚本等。
    7. 浏览器负责显示页面
    8. 如果短期内没有发送其它请求,则释放该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的关系大概相当于下图:

    img

    具体来讲,HTTP包含了证书验证和数据传输两个阶段,并且使用了非对称加密(可以简单理解为发送和解码时使用了不同的密钥)方法保证数据安全。

    7.4 内容分发

    内容分发网络中,内容提供商在全球的某些位置建立一组分布式机器,通过分布式的机器来提供服务内容(考虑像youtube一类的大型网站,任何单一的服务器可能都很难满足其对带宽的需求)。而与之相对应的体系结构是对等网络,就是为人很熟悉的P2P(peer to peer)。在p2p下,计算机之间彼此提供服务内容,不再设置中央控制节点。一个典型例子是迅雷下载,或者是之前的百度网盘用户激励计划。用户之间互相使用自己的上行带宽,为其他用户提供流量。


    至此,计算机网络的主要内容就全部结束了~~~主贴请看这里

  • 相关阅读:
    Loadrunner日志设置与查看
    webclient乱码问题
    (转)ASP.NET QueryString乱码解决问题
    Request.url请求路径的一些属性
    (转)Asp.net的HttpCookie写入汉字读取时为乱...
    (转)[jQuery]使用jQuery.Validate进行客户端验证(初级篇)——不使用微软验证控件的理由
    jquery validate 配合ligerui使用
    (转)ligerUI 使用教程之Tip介绍与使用
    (转)XML CDATA是什么?
    (转)C#中Trim()、TrimStart()、TrimEnd()的用法 .
  • 原文地址:https://www.cnblogs.com/maomaozi/p/14111381.html
Copyright © 2011-2022 走看看