域名、主机名?
 
从范围上看:
域名的范围比主机名大
一个域名下通常有多个主机名
从组成上看:
主机名 = 服务器名(或计算机名) + 域名
举例说明:
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. mysql的十二条基本语句

    在 mysql里,所有语句都以分号作为结束标志! 1.连接服务器 Mysql -u username -p passwd 2.当连上服务器后,首先面对的是库,库有1个或多个,因此我们想对表进行操作的话 ...

  2. yum安装出现No package vim available解决办法

    [root@iZwz96wgquf8g6okusxr0uZ yum.repos.d]# yum install yum-downloadLoaded plugins: fastestmirrorLoa ...

  3. Travis CI持续集成使用

    用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业化,从而提高软件的价值.而且,它对于开源项目是免费的,不花一分钱,就能帮你做掉很多事情. 一.什么是持续集成? Travis CI 提供的是持续 ...

  4. opencv实践::透视变换

    问题描述 拍摄或者扫描图像不是规则的矩形,会对后期处理产生不 好影响,需要通过透视变换校正得到正确形状. 解决思路 通过二值分割 + 形态学方法 + Hough直线 +透视变换 #include &l ...

  5. opencv::图像矩(Image Moments)

    矩的概念介绍 1.几何矩 2.中心距 3.中心归一化距 4.图像中心Center(x0, y0) 计算矩 moments( InputArray array, // 输入数据 bool binaryI ...

  6. 我要学并发-Java内存模型到底是什么

    内存模型 在计算机CPU,内存,IO三者之间速度差异,为了提高系统性能,对这三者速度进行平衡. CPU 增加了缓存,以均衡与内存的速度差异: 操作系统增加了进程.线程,以分时复用 CPU,进而均衡 C ...

  7. Redis中是如何实现分布式锁的?

    分布式锁常见的三种实现方式: 数据库乐观锁: 基于Redis的分布式锁: 基于ZooKeeper的分布式锁. 本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的. 要点 Red ...

  8. 元素定位之css选择器(2)

    理论学习地址:https://www.runoob.com/cssref/css-selectors.html 定位思路: 先在单元素范围内选择查找id或name,定位不到的话往上查扩大范围 使用实例 ...

  9. Java中String类的特殊性

    java中特殊的String类型 Java中String是一个特殊的包装类数据有两种创建形式: String s = "abc"; String s = new String(&q ...

  10. Qt乱码的问题

    1.在启动应用程序前加入以下代码: //配置字符编码环境,让应用程序支持中文. QTextCodec *codec = QTextCodec::codecForName("System&qu ...