域名、主机名?
 
从范围上看:
域名的范围比主机名大
一个域名下通常有多个主机名
从组成上看:
主机名 = 服务器名(或计算机名) + 域名
举例说明:
baidu.com 是百度的域名
www.baidu.com 是百度的 www 主机名
map.baidu.com 是百度的地图主机名
 
 
DNS 是什么?
 
DNS 的全称 Domain Name System,即域名系统
它的作用是提供主机名到 IP 地址的映射
在上一个问题中讨论了域名和主机名的区别,知道它们不是一回事,至于为什么 DNS 叫域名系统,不叫主机名系统,我弄不明白
 
 
为什么需要 DNS?
 
主机名对人类友好,便于人类记忆
IP 地址便于网络寻址,它由 4 个字节组成,我们平常看到的 IP 地址一般会有英文的点(.)将每个字节隔开,从左往右读 IP 地址,可以逐步确定其对应机器的位置,比如对于同一个市的人,乙想去甲家找他玩,甲告诉乙他家的地址是 县.镇.村.门牌号,这样乙就能准确无误的找到甲的家了
现在的关系链是这样的,人类 → 主机名,IP 地址 → 主机,中间缺少从主机名到 IP 地址的映射,DNS 提供的就是这样一个映射服务,从而将整个链路打通(人类 → 主机名 → IP 地址 → 主机)
 
 
DNS 提供的服务有哪些?
 
DNS 除了提供从主机名到 IP 地址的映射
还提供以下服务:
1、主机别名
由于有些主机名比较复杂,所以 DNS 允许他们使用一些易于记忆的别名,而且我们可以通过将别名传送给 DNS 来获取它的(规范)主机名和 IP 地址
2、邮件服务器别名
同上
3、负载分配
由于服务器站点可能非常繁忙,单台主机无法应付频繁的、大量的请求,所以有些他们准备了多台服务器来提供相同的服务,即一个主机名可以映射到一个 IP 地址集合
当客户对映射到某地址集合的名字发出一个 DNS 请求时,该服务器用 IP 地址的整个集合进行响应,但在每个回答中循环这些地址次序
 
 
DNS 的工作机制是怎样的?
 
一般而言,将所有的主机与 IP 地址的映射关系放在一台服务器上,是能想到最简单的方案
但是由于因特网上的主机数量实在是太多了,所以如果都放在同一个服务器上的话,会有以下问题存在:
1、单点故障
即,如果这个服务器出了故障,则会导致整个因特网整体瘫痪
2、通信容量
一个服务器要处理来自整个因特网所有主机的请求,容量必须很大
3、远距离的集中式数据库
即,如果只有一个服务器,则地球上总有距离它很远的主机,当这些主机请求 DNS 服务时,时延会相当大
4、维护
由于要维护所有的主机与 IP 地址的映射关系,则这个中央数据库非常庞大,而且当有新添加的主机时,这个数据库还要对应更新
综上,集中式服务器扩展性极差
所以,对于这种巨大规模的数据处理,不可能采用集中式的方案
DNS 使用了分布式方案,使用了大量的服务器,以层次组织它们
大致来说,有三种类型的服务器,即根 DNS 服务器、顶级域 DNS 服务器和权威 DNS 服务器
一般而言,在 DNS 中查询 IP 地址时,使用的是下图所示的模式:

 
DNS 缓存?
 
为了改善时延性能并减少在因特网上到处传输的 DNS 报文数量,DNS 广泛使用了缓存技术。
在一个请求链中,当某 DNS 服务器接收一个 DNS 回答时,它能将该回答中的信息缓存到本地存储器中
 
 
P2P 应用强大在哪?
 
对于客户-服务器体系结构,能够提供资源的只有服务器,如果大量的客户需要同一个服务器上的同一个文件,他们都需要从服务器上获取,那么总时间会随着客户数量线性增长
而对于 P2P 应用,每个主机都可以成为服务器,可想而知,整个的时间会被平摊下来
书中“2.6 P2P 应用”一节,有详细的定量讨论

《计算机网络 自顶向下方法》 第2章 应用层 Part2的更多相关文章

  1. 计算机网络自顶向下方法第2章-应用层(application-layer).1

    2.1 应用层协议原理 2.1.1网络应用程序体系结构 1)在客户-服务器体系结构 (client-server architecture)中,有一个总是打开的主机称为服务器,它服务于来自许多其他称为 ...

  2. 计算机网络自顶向下方法第2章-应用层(application-layer).2

    2.4 DNS:因特网的目录服务 2.4.1 DNS提供的服务 DNS的定义 实体层面看,DNS是一个由分层的DNS服务器实现的分布式数据库 协议层面看,DNS是一个使得主机能够查询分布式数据库的应用 ...

  3. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).1

    3.1 概述和运输层服务 运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能. 3.1.1 运输层和网络层的关系 网络层提供了主机之间的逻辑通信,而 ...

  4. 计算机网络自顶向下方法第4章 网络层:数据平面 (Network layer)

    4.1 网络层概述  网络层主要功能为转发(将数据从路由器输入接口转移到合适的输出接口)和路由选择(端到端的路径选择),每台路由器都有一张转发表,用最长前缀匹配规则来转发. 4.1.1 转发和路由选择 ...

  5. 计算机网络自顶向下方法第3章-传输层 (Transport Layer).2

    3.5 面向连接的运输: TCP 3.5.1 TCP连接 TCP是因特网运输层的面向连接的可靠的运输协议. TCP连接提供全双工服务(full-duplex service). TCP连接是点对点的连 ...

  6. 《计算机网络 自顶向下方法》 第2章 应用层 Part1

    常见的应用层协议有哪些?  HTTP(HyperText Transfer  Protocol):超文本传输协议 FTP(File Transfer Protocol):文件传输协议 SMTP(Sim ...

  7. 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2

    SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...

  8. 《计算机网络 自顶向下方法》 第3章 运输层 Part2

    待补充完善 TCP 相关基本点 1.面向连接 两个不同主机上的进程在通过 TCP 进行通信之前,必须先通过三次握手来建立 TCP 连接 2.全双工服务 即,如果一台主机上的进程 A 与另一台主机上的进 ...

  9. 《计算机网络 自顶向下方法》 第6章 链路层和局域网 Part2

    待补充完善 Web 页面的请求历程 应用层     报文.主机 运输层     报文段. 网络层     数据报.路由器.IP 地址 链路层     以太网帧.交换机.MAC 地址 步骤 1)到 4) ...

随机推荐

  1. session与cookie,django中间件

    0819自我总结 一.session与cookie 1.django设置session request.session['name'] = username request.session['age' ...

  2. unittest介绍

    unittest框架是python中一个标准的库中的一个模块,该模块包括许多的类如 test case类.test suit类.texttest runner类.texttest resuite类.t ...

  3. PHP 组件注册的例子

    <?php namespace Test; abstract class Plugin { protected $pluginName = null; abstract public funct ...

  4. [NOIp2010] luogu P1541 乌龟棋

    英语老师讲 mind map,真想说一句"声微饭否".为什么wyy的歌词总是快一点点.在报csp. 题目描述 你在一个序列上向正方向行走,起点是 a[0]a[0]a[0].每一步可 ...

  5. LeetCode初级算法--树02:验证二叉搜索树

    LeetCode初级算法--树02:验证二叉搜索树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  6. 使用git如何规范地向主线提交代码

    使用git向主干分支合并代码通常采用两种方式:第一种是merge,第二种是利用BeyondCompare等工具进行比对,将差异合并到主干: 通过merge合并代码出现冲突时,并不清楚谁的修改和谁的修改 ...

  7. sql注入100种姿势过waf(一):waf 了解

    仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页 首先WAF(Web Application Firewall),俗称Web应用防火墙,主要的目的实际上是用来过滤不正常或者恶意请求包, ...

  8. 使用oracle脚本生成VO和Dao

    话不多说直接上代码. 生成VO的脚本: SELECT '/**' || T2.COMMENTS || '*/ @Column(name="' || T1.COLUMN_NAME || '&q ...

  9. HashMap - 类注释

    了解到Java8以后HashMap的实现换了,也看了很多博客一直在向我这个小菜鸡说HashMap的重要.因此我决定洗心革面,好好正视HashMap 基于jdk 8 先从类注释开始入手学习,顺便提高提高 ...

  10. Redis备忘(二)

    内存回收: 有时候发现10g的Redis删掉1g的key,内存占用没啥变化,因为内存页分配,有的页面可能还存在key,整个页面不能回收. 主从同步: CAP原理:一致性 可用性 分区容忍性 redis ...