思维导图:
前言:
-
通信服务与应用进程的结合:
- 强调之前章节已经介绍了计算机网络的通信服务,本章将探讨这些服务如何被各种应用进程所使用。
-
应用层协议的作用:
- 指出应用层协议建立在运输层之上,为不同的网络应用提供了一套规则,以便应用进程之间进行通信。
-
应用层协议的定义和规则:
- 解释应用层协议应当定义的报文类型、报文的语法和语义,以及进程发送和响应报文的规则。
-
标准化与专有协议:
- 区分互联网公共领域的标准应用层协议(如HTTP)和私有协议(如某些P2P文件共享系统所使用的)。
-
应用层协议与网络应用的区别:
- 强调应用层协议是网络应用的一部分,但不等同于网络应用本身,以万维网应用为例,说明HTTP协议的作用。
-
客户服务器模型与P2P通信:
- 讨论客户端和服务器进程之间的服务关系,并指出P2P也是一种客户服务器模型的特例。
-
重点内容的预告:
- 预告本章将讨论的重点内容,包括域名系统DNS、万维网和HTTP协议、电子邮件传输、动态主机配置协议DHCP、网络管理以及网络编程的基本概念。
-
章节结构和学习资源:
- 指出各个主题的讨论顺序,并推荐额外的学习资源,如相关的RFC文档和专业书籍。
6.1 域名系统DNS
6.1.1 域名系统概述
-
功能:DNS将用户易记的主机名转换为机器可识别的IP地址,是互联网的核心服务之一。
-
域名的由来:在互联网的命名系统中,使用了层次化的“域”结构,因此采用了“域名”这一术语。
-
用户体验:用户通常不直接与DNS交互,但DNS服务对于连接互联网的任何网络应用是不可或缺的。
-
历史背景:在早期的ARPANET上,主机名和IP地址的映射是通过手动更新的hosts文件来维护的。
-
IP地址与域名:由于IP地址具有固定长度(IPv4为32位,IPv6为128位),而域名长度可变,因此在网络层使用IP地址以优化机器处理。
-
分布式系统:为了避免单点故障和过载问题,DNS被设计为一个分布式数据库系统,采用客户服务器架构。
-
标准文档:DNS的工作标准由RFC 1034和RFC 1035文档定义。
-
解析过程:
- 应用进程需要将主机名转换为IP地址时,调用解析程序(resolver)。
- 解析程序作为DNS客户端,发送解析请求到本地域名服务器。
- 本地域名服务器尝试解析域名,若成功则返回IP地址,若失败则向其他域名服务器查询。
- 这个查询过程可能涉及多个域名服务器,直至找到准确的IP地址。
-
DNS查询类型:使用UDP协议进行查询,以减少通信开销。
-
域名服务器:专门运行域名服务器程序的结点被称为域名服务器。
-
健壮性:DNS的分布式特性确保了即使某些部分出现故障,整个系统依然能够正常运行。
我的理解:
-
域名系统(DNS)的核心作用:
- DNS是互联网的一个服务,它使得我们能够输入易于记忆的网站名称(如
www.example.com
),而计算机或网络设备则通过DNS将这些名称转换成数字IP地址(如192.0.2.1
),以便进行网络通信。这一过程称为“名称解析”。
- DNS是互联网的一个服务,它使得我们能够输入易于记忆的网站名称(如
-
为什么需要域名:
- 由于直接记忆和使用IP地址对于人们来说非常困难(尤其是IPv6的更长地址),域名作为一种人类友好的命名方式被引入。域名使用文字而非数字,且通常与网站或服务的名称相关,便于记忆。
-
域名的层次结构:
- “域名”这个词反映了互联网命名系统的层次结构,即从最一般(如
.com
)到最具体(如www.example.com
)的结构。这种结构帮助组织和管理互联网上数以亿计的设备和服务名称。
- “域名”这个词反映了互联网命名系统的层次结构,即从最一般(如
-
分布式数据库:
- 如果所有的域名和相应的IP地址都存储在一个中心位置,那么这个系统会非常容易出错,并且效率低下。因此,DNS被设计成一个分布式系统,它通过全球数千个相互连接的服务器来存储和访问这些域名和IP地址映射信息。
-
客户服务器模型:
- DNS遵循客户服务器模型。当你的设备(客户端)试图访问一个域名时,它会向一个DNS服务器(服务端)发送一个请求。如果这个DNS服务器不知道这个域名的IP地址,它会向其他DNS服务器查询,直到找到答案。
-
域名解析:
- 域名解析是一个递归查询过程,可能涉及多个DNS服务器,直到找到对应域名的IP地址。这个过程对用户来说是透明的,用户只需等待几秒钟,浏览器或应用就能加载目标网站或服务。
-
DNS查询使用的协议:
- DNS查询通常使用用户数据报协议(UDP),这是一个相对简单的协议,可以快速传输小量数据,如DNS查询请求。
6.1.2 互联网的域名结构
-
域名结构的演变:
- 互联网初期使用非层次化的名字空间,名字简短但不易管理。
- 用户增多导致转向层次树状结构的域名系统,类似邮政和电话系统。
-
域名的层次结构:
- 每个互联网上的主机或路由器都有唯一的层次结构域名。
- “域”代表名字空间中可被管理的划分,可进一步细分为子域。
-
域名的语法:
- 由标号序列组成,用点(.)隔开,如
mail.cctv.com
。 - 标号由英文字母、数字组成,最长63字符,不区分大小写,不含标点符号除了连字符(-)。
- 由标号序列组成,用点(.)隔开,如
-
域名的管理:
- 各级域名由其上级管理,顶级域名由ICANN管理。
- 完整域名最长255字符,没有固定数量的下级域名。
-
域名与IP地址:
- 域名是逻辑概念,与物理位置无关。
- 域名中的点与点分十进制IP地址中的点没有对应关系。
-
顶级域名(TLD):
- 国家顶级域名(nTLD/ccTLD):根据ISO 3166,如
.cn
,.us
,.uk
。 - 通用顶级域名(gTLD):如
.com
,.net
,.org
等。 - 基础结构域名:唯一的
.arpa
,用于反向域名解析。
- 国家顶级域名(nTLD/ccTLD):根据ISO 3166,如
-
新顶级域名:
- ICANN批准申请新的顶级域,用于企业网络商标,如中文顶级域名
商城
,公司
,新闻
。
- ICANN批准申请新的顶级域,用于企业网络商标,如中文顶级域名
-
中国的域名结构:
- 类别域名:如
.ac
,.com
,.edu
,.gov
,.mil
,.net
,.org
。 - 行政区域名:如
.bj
表示北京市,.js
表示江苏省。
- 类别域名:如
-
域名树:
- 展现了域名的层次结构,根顶级下有二级域名,二级域名下有三级域名,依此类推。
- 如
mail.tsinghua.edu.cn
,mail
是三级域名,tsinghua
是二级域名,edu
是顶级域名。
-
域名的唯一性:
- 尽管多个组织可能使用相同的标号(如
mail
),但完整的域名在互联网上是唯一的。
- 尽管多个组织可能使用相同的标号(如
-
名字空间的划分:
- 基于机构组织结构,与物理网络或IP地址中的子网无关。
我的理解:
-
名的必要性:随着互联网的快速增长,需要一种系统来管理大量且不断变化的名字集合。域名系统提供了一个全球统一的命名方式,便于人们记忆和机器处理。
-
层次化结构:域名系统采用了树状的层次结构,类似于邮政或电话号码系统,以确保名称的全球唯一性和可管理性。在这个结构中,“域”指的是名字空间的一个部分,可以进一步细分为子域。
-
域名的格式:每个域名由多个“标号”组成,用点(.)隔开。这些标号从左到右代表了从最具体到最一般的命名层次。例如,在
mail.cctv.com
中,mail
是三级域名,cctv
是二级域名,而com
是顶级域名。 -
顶级域名(TLD)的分类:
- 国家顶级域名(ccTLD):根据国际标准ISO 3166分配给各国的两个字母代码,如
.cn
代表中国。 - 通用顶级域名(gTLD):不基于国家代码,对所有组织或个人开放,如
.com
、.org
、.net
等。 - 基础结构域名:只有一个,即
.arpa
,主要用于互联网技术基础设施。
- 国家顶级域名(ccTLD):根据国际标准ISO 3166分配给各国的两个字母代码,如
-
新顶级域名:ICANN允许创建新的gTLD,这为品牌和组织提供了更多自定义域名选项,如
.google
或中文域名。 -
域名的管理:域名由上至下分别由不同级别的管理机构负责,顶级域名由ICANN管理,下级域名由相应的授权机构管理。
-
域名与IP地址的关系:虽然域名与IP地址在功能上相关(都用于标识网络中的设备),但它们在形式和用途上有所不同。域名是为了人类使用方便,而IP地址是为了机器处理效率。
通过理解这些关键点,可以认识到域名系统不仅为互联网中的每个设备提供了一个唯一的标识符,而且这个系统的层次化结构使得互联网能够以可扩展、有序和高效的方式运作。
6.1.3 域名服务器
-
实际实现:
- 域名系统(DNS)在实际中由分布在世界各地的域名服务器实现。
- 理论上每个域名层级对应一个域名服务器,但为了效率,实践中不完全对应。
-
区(Zone)的概念:
- 服务器管理的区域称为“区”,每个区有一个权威域名服务器。
- 区可能等于或小于域,包含所有主机的域名到IP地址的映射。
-
区与域的关系:
- 区是域的子集,它定义了DNS服务器实际管理的范围。
- 一个大的组织可能将自己的域划分为多个区,每个区有自己的权威域名服务器。
-
DNS服务器的类型:
- 根域名服务器:互联网上最高层次的域名服务器,知道所有顶级域名服务器的地址。
- 顶级域名服务器(TLD服务器):管理特定顶级域名下的所有二级域名。
- 权威域名服务器:负责特定区的域名服务器,有权提供域内映射信息。
- 本地域名服务器:接收用户查询请求,负责向其他服务器查询解析域名。
-
域名解析过程:
- 主机通过递归查询请求其本地域名服务器解析目标域名。
- 本地域名服务器通常采用迭代查询向上级服务器请求解析,直至找到答案。
-
域名服务器树状结构:
- 类似域名的层次结构,每一级域名服务器只管辖特定层次的域名。
-
域名服务器的分布:
- 全球有多个根域名服务器的镜像,采用任播技术提高效率和降低延迟。
-
高速缓存的使用:
- 域名服务器使用高速缓存来存储最近查询过的域名映射,提高解析效率。
- 缓存数据有有效期限,过期后需要重新查询确保数据的新鲜性。
-
数据的复制与一致性:
- 为了可靠性,域名数据在一个主域名服务器和多个辅助域名服务器之间复制。
- 主域名服务器负责数据更新,辅助服务器定期同步更新。
我的理解:
-
域名服务器的作用:域名服务器是DNS体系的具体实现,它们分布在全球,负责将用户可读的域名转换成机器可读的IP地址。
-
区(Zone):在DNS中,一个区代表一个域名服务器的管理范围,这可以是一个域的全部或一部分。每个区都有一个权威域名服务器负责该区域内的域名到IP地址的映射信息。
-
域名服务器树状结构:虽然理论上每个域名层级可以有一个对应的域名服务器,但为了效率,实际上使用了区的概念来减少服务器数量并提高DNS的运行效率。
-
DNS服务器类型:
- 根域名服务器:知道所有顶级域名服务器的IP地址,是查询过程中的第一个查询点。
- 顶级域名服务器:管理顶级域名下所有二级域名的服务器。
- 权威域名服务器:直接负责管理特定区域内的域名到IP地址的映射。
- 本地域名服务器:通常是用户的首个接触点,负责接收用户的DNS查询并与其他DNS服务器通信以解析域名。
-
域名解析:解析过程通常开始于本地域名服务器的递归查询请求,逐级向上到权威服务器进行迭代查询,直至找到域名对应的IP地址。
-
DNS查询方法:
- 递归查询:客户端发起的查询要求DNS服务器提供最终答案或错误。
- 迭代查询:DNS服务器提供最佳信息,客户端可能需要向这些信息指向的下一个服务器发起新的查询。
-
高速缓存:域名服务器和客户端都使用高速缓存来存储最近查询过的域名信息,这减少了解析时间并降低了对根和顶级域名服务器的查询压力。
-
权威与辅助服务器:主服务器负责更新数据,辅助服务器定期从主服务器同步数据,确保域名解析的连续性和一致性。
更加形象的理解:
将域名服务器的工作和组织比作一个图书馆系统可以帮助形象化这些概念:
-
域名服务器如图书管理员:每个域名服务器就像一个图书馆的管理员,负责管理一定区域内的图书(这里的图书对应着域名和IP地址的映射关系)。当你需要找到一本特定的书时,你会询问管理员,而管理员会告诉你书的准确位置。
-
区(Zone)如特定图书区域:图书馆被划分为不同的区域,每个区域有特定主题的图书。在DNS中,一个区是域名服务器管理的特定域名集合,就像管理员负责图书馆的某个特定区域一样。
-
域名服务器树状结构如图书馆分类系统:就像图书馆里的书籍按照主题分类,层层递进,域名服务器也有类似的层次结构。根域名服务器就像图书馆的总索引,顶级域名服务器像各个专业区的索引,权威域名服务器则是特定区域内详细的书架排列。
-
DNS服务器类型如不同类型的图书管理员:
- 根域名服务器:如图书馆的总管理员,了解所有区域的大致内容和位置。
- 顶级域名服务器:如各个专业区的管理员,管理这一区域内所有书籍的详细分类。
- 权威域名服务器:如负责特定书架的管理员,他们知道每本书的精确位置。
- 本地域名服务器:如你个人的图书助手,他们知道如何快速找到你需要的书籍信息。
-
域名解析如找书过程:当你要找一本书时,你的助手(本地域名服务器)首先会检查你是否之前查过这本书(高速缓存)。如果没有,他会先查总索引(根域名服务器),然后根据指示到专业区(顶级域名服务器),最后找到确切的书架(权威域名服务器),直到找到你需要的那本书。
-
高速缓存如个人笔记:就像你在个人笔记中记录下了某些书的位置,以便下次快速找到。域名服务器的高速缓存同样存储了之前查询的结果,以便快速响应相同的查询请求。
-
权威与辅助服务器如主管理员与助手:图书馆的主管理员负责更新图书资料和索引,而助手们会定期从主管理员那里获取更新信息,确保图书馆的信息一致性。
通过这种类比,我们可以更直观地理解域名服务器如何组织和解析互联网上的域名查询,使整个过程既高效又可靠。
总结
重点:
- 域名的层次结构:理解从顶级域名(如
.com
、.org
)到二级域名(如example.com
),再到子域名(如sub.example.com
)的层次划分。 - 域名解析过程:理解主机如何通过本地域名服务器,递归和迭代查询,最终获得目标域名的IP地址。
- 域名服务器类型:区分不同类型的域名服务器——根域名服务器、顶级域名服务器(TLD服务器)、权威域名服务器和本地域名服务器,并了解它们的功能。
- 区(Zone)的概念:区是一个或多个域的集合,由特定的权威域名服务器管理。
- 高速缓存的应用:理解高速缓存如何提高域名查询的效率,并知道其更新和维护的重要性。
难点:
- 迭代与递归查询的区别:理解在DNS查询中,本地域名服务器为主机进行递归查询,而在查询外部DNS服务器时通常采用迭代查询的原理。
- DNS记录类型:虽未在本节详细讨论,但DNS记录类型(如A记录、MX记录、CNAME记录等)是理解DNS解析机制的关键部分。
- 高速缓存的有效性管理:理解如何维持高速缓存中记录的时效性和准确性。
易错点:
- 混淆域名的层次:可能会将二级域名误认为顶级域名,或将子域名误解为独立的域名。
- 查询类型混淆:容易混淆递归查询和迭代查询的概念及它们在DNS解析过程中的作用。
- 区与域的混用:可能会错误地将“区”和“域”视为同一概念,而不理解区是域名管理的一个分区,可能包含多个域。
- 缓存数据过期:在实践中,可能会忽视缓存数据的过期问题,导致使用了过时的DNS记录信息。
为了掌握这一节的内容,重点是要通过练习和实例来理解和区分不同类型的域名服务器的职责,以及递归和迭代查询在实际DNS查询中的运用。同时,要注意管理和维护DNS缓存的方法,以确保数据的准确性。