域名、主机名?
 
从范围上看:
域名的范围比主机名大
一个域名下通常有多个主机名
从组成上看:
主机名 = 服务器名(或计算机名) + 域名
举例说明:
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. Android 列表(ListView、RecyclerView)不断刷新最佳实践

    本文微信公众号「AndroidTraveler」首发. 背景 在 Android 列表开发过程中,有时候我们的 Item 会有一些组件,比如倒计时.这类组件要求不断刷新,这个时候由于列表复用的机制,因 ...

  2. 单引号、双引号与定界符——PHP

    单引号与双引号 单引号和双引号在echo输出时的区别 echo输出时,如果使用单引号,那么echo会把单引号之间的全部内容当成普通字符串输出,不能识别变量和转义字符(单引号串中的内容总被认为是普通字符 ...

  3. 利用phar实行php反序列化命令执行漏洞复现

    利用phar实行php反序列化命令执行(测试环境复现) 前言 一般说到反序列化漏洞,第一反应都是unserialize()函数.然而安全研究员Sam Thomas分享了议题”It’s a PHP un ...

  4. 《Java并发编程实战》读书笔记-第2章 线程安全性

    要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问. 修复多线程问题的方式: 不在线程之间共享该状态变量 将状态变量修改为不可变的变量 在访问状态变量时使用同步 ...

  5. Uipath 获取当前浏览器页面URL

    文章来源东京IT青年前线 http://www.rpatokyo.com   Uipath 获取当前浏览器页面URL的方法 Inject Js Script   因为目前没有直接获取页面URL的Act ...

  6. Arduino学习笔记③ 经典LED

    1.前言     今天我们开始同时讲解理论以及实践.对于绝大部分有过单片机编程经历的人来说,第一个接触的大多数就是LED灯(忽然想起博主大一那个懵懂的时代,当时大三的师兄给我们展现了一把流水灯功力,当 ...

  7. 百万年薪python之路 -- 面向对象之所有属性及方法

    1.私有成员公有成员 1.1 类的私有属性 # class A: # # name = '周道镕' # __name = 'zdr' # 私有类的属性 # # def func(self): # pr ...

  8. day05整理

    目录 一.上节课回顾 (一)数据类型 (1)数字类型 (2)字符串类型str (3)列表类型list (4)字典类型dict (二)jieba模块 (三)wordcloud模块 二.文本处理 (一)什 ...

  9. Java基础(二十三)集合(6)Map集合

    Map接口作为Java集合框架中的第二类接口,其子接口为SortedMap接口,SortedMap接口的子接口为NavigableMap接口. 实现了Map接口具体类有:HashMap(子类Linke ...

  10. (记录)Jedis存放对象和读取对象--Java序列化与反序列化

    一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...