欢迎光临散文网 会员登陆 & 注册

【图拉丁】上AC发现HOSTNAME总报错?域名系统原理讲解

2018-10-21 10:31 作者:司马睿r  | 我要投稿

最近上传总失败,而且有时候上AC会经常显示HOSTNAME错误,无论PC还是客户端都是这样,所以简单的谈谈计算机网络的机制

先说HOST

网络主机(network host)是已连接到一个计算机网络的一台电子计算器或其他设备。网络主机可以向网络上的用户或其他节点提供信息资源、服务和应用。一台网络主机是已被分配一个网络层主机地址的网络节点。

使用TCP/IP协议族参与网络的计算机也可称为IP主机。更具体来说,参与互联网计算机可称为互联网主机,有时还称作互联网节点。互联网主机和其他IP主机在其网络接口上被分配一个或多个IP地址。该地址可以由管理员手动配置,也可以在启动时自动由动态主机设置协议(DHCP)或通过无状态地址自动配置方法自动配置。

每台网络主机都是一个物理网络节点(即一个网络设备),但不是所有物理网络节点都是一台主机。调制解调器、集线器或网上交换器等网络设备有可能不被分配主机地址(有管理目的除外),因此不被认为是网络主机。网络打印机、硬件路由器等设备有IP地址,但由于它们不是通用目的计算机,它们有时候不被认为是主机。

所有服务器都是主机,但并非所有主机都是服务器。任何与网络创建连接的设备都可以作为主机,而以接受其他设备(客户端)连接为目的的主机被视为服务器。


在操作系统领域,术语终端主机传统上是为计算机终端提供服务的多用户计算机或软件,或一台提供较小或较少能力的计算机设备。例如一台大型计算机为电传终端或视频终端提供服务。其他例子是telnet主机(一个telnet服务器)和xhost(X窗口客户端)。

术语“互联网主机”或“主机”在定义互联网及其前身ARPANET的许多RFC文档中被使用.在开发ARPANET时,连接到网络的计算机一般是可以通过串行端口从已连接终端访问的大型计算机。由于这些虚拟终端本身没有主机软件或自己执行计算,它们不被视为主机。终端通过串行接口和可能通过电路交换网络连接到终端主机,但并未连接到任何基于IP的网络,并且未被分配IP地址。而现今的IP主机,可能无法作为终端主机

RFC 871将一台主机定义为:“连接到一个通信网络的通用计算机系统,用于在参与的操作系统之间实现资源共享目的”。


hosts文件(域名解析文件)是一个用于储存计算机网络中各节点信息的计算机文件。这个文件负责将主機名稱映射到相应的IP地址。hosts文件通常用于补充或取代网络中DNS的功能。和DNS不同的是,计算机的使用者可以直接对hosts文件进行控制。

最初在Internet的前身ARPANET中,其成员SRI International手动维护并分享了一个名为HOSTS.TXT的文件,其中就包括主机名称和对应地址。1983年DNS系统开始开发,1984年得到了发展。在网络快速的发展过程中,DNS可以自动提供动态的主机名解析。不过在现代操作系统,hosts文件仍然是一个可以作为备用手段的名称解析机制。

在Internet的前身ARPANET中并没有对网络中各节点的地址使用DNS进行解析。由于当时对于这个用途并没有中心化的系统,每个网络节点都使用自有的网络节点地图,并指派相应的名称方便用户记忆,当时并没有任何系统来保证网络中的所有系统都用同样的名称表示,也没有方法来读取其他用户的hosts文件并自动复制。

ARPANET的规模较小,这样就也就允许了在很多情况使用hosts文件来命名一些事先约定的名称。其中典型的网络节点都有一个地址,并可能有多个名称。但是当个人网络不断庞大之后,对hosts文件进行管理的难度也越来越大。

hosts文件在不同操作系统中的位置如下表所示:

操作系统版本路径Unix、类Unix系统(例如Linux等)/etc/hostsMicrosoft Windows3.1%WinDir%\HOSTS95、98、ME%WinDir%\hostsNT、2000、XP、2003、Vista、
2008、7、2012、8、8.1、10%SystemRoot%\System32\drivers\etc\hostsWindows Mobile、Windows Phone注册表项HKEY_LOCAL_MACHINE\Comm\Tcpip\HostsApple Macintosh9或更早版本PreferencesSystem目录中Mac OS X 10.0–10.1.5通过NetInfoniload设置Mac OS X 10.2和更新版本/etc/hosts(指向/private/etc/hosts的符号链接)Novell NetWareSYS:etc\hostsOS/2和eComStation"bootdrive":\mptn\etc\SymbianSymbian OS 6.1–9.0C:\system\data\hostsSymbian OS 9.1+C:\private\10000882\hostsMorphOSNetStackENVARC:sys/net/hostsAmigaOS4DEVS:Internet/hostsAROSENVARC:AROSTCP/db/hostsAndroid/etc/hosts(指向/system/etc/hosts的符号链接)iOSiOS 2.0和更新版本/etc/hosts(指向/private/etc/hosts的符号链接)TOPS-20<SYSTEM>HOSTS.TXTPlan 9/lib/ndb/hostsBeOS/boot/beos/etc/hostsHaiku/boot/common/settings/network/hostsOpenVMSUCXUCX$HOSTTCPwareTCPIP$HOSTRISC OS3.7, 5!Boot.Resources.!Internet.files.Hostslater boot sequence!Boot.Choices.Hardware.Disabled.Internet.Files.Hosts(RISC OS 6.14)

在Windows中,默认的hosts文件通常是空白的或包含了注释语句并使用了一条默认规则:

127.0.0.1       localhost ::1             localhost

hosts文件在不同的操作系统中格式有所不同,不可直接复制使用。

例如,在Windows和macOS下,hosts文件采用的换行方式为“\rCR\nLF”,而Linux以及Android的换行方式则为“\nLF”,将hosts文件转换为对应平台的换行方式后才能发挥作用。


hosts文件也可以用于其它情况,例如可以将已知的广告服务器重定向到无广告的机器(通常是該電腦自身的IP地址:127.0.0.1)上来过滤广告。同时也可以通过不下载网络广告,从而减少带宽。使用hosts文件还可以减少对DNS服务器的访问来加快访问速度并减少带宽消耗。

hosts文件的另一个重要用途就是用于拦截一些恶意网站的请求,从而防止访问欺诈网站或感染一些病毒或恶意软件。但同时,这个文件也可能被病毒或恶意软件所利用来阻止用户更新杀毒软件或访问特定网站。

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“XXX.中国”、“XXX.香港”的域名可以在地址栏直接输入并访问,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。


DNS最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明;原始的技术规范在882号因特网标准草案(RFC 882)中发布。1987年发布的第1034和1035号草案修正了DNS技术规范,并废除了之前的第882和883号草案。在此之后对因特网标准草案的修改基本上没有涉及到DNS技术规范部分的改动。

早期的域名必须以英文句号“.”结尾,例如,当用户访问 www.wikipedia.org 的HTTP服务时必须在地址栏中输入:http://www.wikipedia.org.,这样DNS才能够进行域名解析。如今DNS服务器已经可以自动补上结尾的句号。

DNS系统中,常见的资源记录类型有:

  • 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。

  • 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。

  • IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。

  • 服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。

  • NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

DNS通过允许一个名称服务器把他的一部分名称服务(众所周知的zone)“委托”给子服务器而实现了一种层次结构的名称空间。此外,DNS还提供了一些额外的信息,例如系统别名、联系信息以及哪一个主机正在充当系统组或域的邮件枢纽。

任何一个使用IP的计算机网络可以使用DNS来实现他自己的私有名称系统。尽管如此,当提到在公共的Internet DNS系统上实现的域名时,术语“域名”是最常使用的。

这是基于504个全球范围的“根域名服务器”(分成13组,分别编号为A至M)

。从这504个根服务器开始,余下的Internet DNS名字空间被委托给其他的DNS服务器,这些服务器提供DNS名称空间中的特定部分。


DNS系统是由各式各样的DNS软件所驱动的,例如:

  • BIND(Berkeley Internet Name Domain),使用最广的DNS软件

  • DJBDNS(Dan J Bernstein's DNS implementation)

  • MaraDNS

  • Name Server Daemon(Name Server Daemon)

  • PowerDNS

  • Dnsmasq

Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用于DNS系统的编码。而该编码是根据域名相异字表(由IANA制定),Punycode可以防止所谓的IDN欺骗。

域名解析

举一个例子,zh.wikipedia.org 作为一个域名就和IP地址198.35.26.96 相对应。DNS就像是一个自动的电话号码簿,我们可以直接拨打198.35.26.96 的名字zh.wikipedia.org 来代替电话号码(IP地址)。DNS在我们直接调用网站的名字以后就会将像zh.wikipedia.org 一样便于人类使用的名字转化成像198.35.26.96 一样便于机器识别的IP地址。

DNS查询有两种方式:递归迭代。DNS客户端设置使用的DNS服务器一般都是递归服务器,它负责全权处理客户端的DNS查询请求,直到返回最终结果。而DNS服务器之间一般采用迭代查询方式。

以查询 zh.wikipedia.org 为例:

  • 客户端发送查询报文"query zh.wikipedia.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。

  • 如果记录老化或不存在,则:

    1. DNS服务器向根域名服务器发送查询报文"query zh.wikipedia.org",根域名服务器返回顶级域 .org 的权威域名服务器地址。

    2. DNS服务器向 .org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到二级域 .wikipedia.org 的权威域名服务器地址。

    3. DNS服务器向 .wikipedia.org 域的权威域名服务器发送查询报文"query zh.wikipedia.org",得到主机 zh 的A记录,存入自身缓存并返回给客户端。

    4. 一些黑客通过伪造DNS服务器将用户引向错误网站,以达到窃取用户隐私信息的目的。这种DNS服务器大约有68000台


一个域名的所有者可以通过查询WHOIS数据库而被找到;对于大多数根域名服务器,基本的WHOIS由ICANN维护,而WHOIS的细节则由控制那个域的域注册机构维护。

对于240多个国家代码顶级域名(ccTLDs),通常由该域名权威注册机构负责维护WHOIS。例如中国互联网络信息中心(China Internet Network Information Center)负责.CN域名的WHOIS维护,香港互联网注册管理有限公司(Hong Kong Internet Registration Corporation Limited)负责.HK域名的WHOIS维护。

主机名称(英语:hostname),又称节点名称(nodename),在连上电脑网络时,特定装置使用的名称。在进行电子通讯时,可以用来识别某个装置之用,诸如万维网、电子邮件、Usenet中都使用主机名称来当成识别之用。

在互联网中,主机名称被附在域名系统(DNS)的域名之后,形成完整域名。

最后附常见错误代码表

所有 HTTP 状态代码及其定义。 
 代码  指示  
2xx  成功  
200  正常;请求已完成。  
201  正常;紧接 POST 命令。  
202  正常;已接受用于处理,但处理尚未完成。  
203  正常;部分信息 — 返回的信息只是一部分。  
204  正常;无响应 — 已接收请求,但不存在要回送的信息。  
3xx  重定向  
301  已移动 — 请求的数据具有新的位置且更改是永久的。  
302  已找到 — 请求的数据临时具有不同 URI。  
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。  
304  未修改 — 未按预期修改文档。  
305  使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。  
306  未使用 — 不再使用;保留此代码以便将来使用。  
4xx  客户机中出现的错误  
400  错误请求 — 请求中有语法问题,或不能满足请求。  
401  未授权 — 未授权客户机访问数据。  
402  需要付款 — 表示计费系统已有效。  
403  禁止 — 即使有授权也不需要访问。  
404  找不到 — 服务器找不到给定的资源;文档不存在。  
407  代理认证请求 — 客户机首先必须使用代理认证自身。  
415  介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。  
5xx  服务器中出现的错误  
500  内部错误 — 因为意外情况,服务器不能完成请求。  
501  未执行 — 服务器不支持请求的工具。  
502  错误网关 — 服务器接收到来自上游服务器的无效响应。  
503  无法获得服务 — 由于临时过载或维护,服务器无法处理请求。
-----------------------------------------------------------------------------------------------------------------------
HTTP 400 - 请求无效 
HTTP 401.1 - 未授权:登录失败 
HTTP 401.2 - 未授权:服务器配置问题导致登录失败 
HTTP 401.3 - ACL 禁止访问资源 
HTTP 401.4 - 未授权:授权被筛选器拒绝 
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败  
HTTP 403 - 禁止访问 
HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost 
HTTP 403.1 禁止访问:禁止可执行访问 
HTTP 403.2 - 禁止访问:禁止读访问 
HTTP 403.3 - 禁止访问:禁止写访问 
HTTP 403.4 - 禁止访问:要求 SSL 
HTTP 403.5 - 禁止访问:要求 SSL 128 
HTTP 403.6 - 禁止访问:IP 地址被拒绝 
HTTP 403.7 - 禁止访问:要求客户证书 
HTTP 403.8 - 禁止访问:禁止站点访问 
HTTP 403.9 - 禁止访问:连接的用户过多 
HTTP 403.10 - 禁止访问:配置无效 
HTTP 403.11 - 禁止访问:密码更改 
HTTP 403.12 - 禁止访问:映射器拒绝访问 
HTTP 403.13 - 禁止访问:客户证书已被吊销 
HTTP 403.15 - 禁止访问:客户访问许可过多 
HTTP 403.16 - 禁止访问:客户证书不可信或者无效 
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效 
HTTP 404.1 - 无法找到 Web 站点 
HTTP 404 - 无法找到文件 
HTTP 405 - 资源被禁止 
HTTP 406 - 无法接受 
HTTP 407 - 要求代理身份验证 
HTTP 410 - 永远不可用 
HTTP 412 - 先决条件失败 
HTTP 414 - 请求 - URI 太长 
HTTP 500 - 内部服务器错误 
HTTP 500.100 - 内部服务器错误 - ASP 错误 
HTTP 500-11 服务器关闭 
HTTP 500-12 应用程序重新启动 
HTTP 500-13 - 服务器太忙 
HTTP 500-14 - 应用程序无效 
HTTP 500-15 - 不允许请求 global.asa 
Error 501 - 未实现 
HTTP 502 - 网关错误 


【图拉丁】上AC发现HOSTNAME总报错?域名系统原理讲解的评论 (共 条)

分享到微博请遵守国家法律