域名与DNS
IP地址是Internet主机的作为路由寻址用的数字型标识,人不容易记忆。因而产生了域名(domain name)这一种字符型标识。请求通过域名地址系统(domain name system, DNS)把域名映射到对应的IP地址,从而访问目的机器。
以'www.google.com'为例,google为域名主体,最右边的com称为为顶级域名,www称为网络域名。
分类
域名分为国际域名(如.com、.org、.net)和国内域名(.gov、.cn)。在实际使用和功能上,国际域名与国内域名没有任何区别,都是互联网上的具有唯一性的标识。只是在最终管理机构上,国际域名由美国商业部授权的互联网名称与数字地址分配机构(The Internet Corporation for Assigned Names and Numbers)即ICANN负责注册和管理;而国内域名则由中国互联网络管理中心(China Internet Network Information Center) 即CNNIC负责注册和管理。
级别
- 顶级域名。一是国家顶级域名,200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;二是国际顶级域名,如.com、.org、.net。顶级域名是WIPO国际组织定义的,个数是明确固定的。
- 二级域名。二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等。一般为企业和机构的名称。
- 三级域名。三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。任何人都可申请注册三级域名。
WHOIS数据库
一个域名的所有者可以通过查询WHOIS数据库而被找到;对于大多数根域名服务器, 基本的WHOIS由ICANN维护,而WHOIS的细节则由控制那个域的域注册机构维护。对于240多个国家代码顶级域名(ccTLDs),通常由该域名权威注册机构负责维护WHOIS。
简单来说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期等),即通过whois来实现对域名信息的查询。
常用域名
- 「.com」company简称,表示公司企业。.com是目前国际最广泛流行的通用域名格式,现全球用户超过1.1亿个。所有国际化公司都会注册.com域名。
- 「.net」Internet简称,是国际最广泛流行的通用域名格式。一般用于从事Internet相关的网络服务的机构或公司。
- 「.org」organization简称,适用于各类组织机构,包括非盈利团体。
- 「.cn」China简称,一般代表中国,由我国管理的国际顶级域名,是中国自己的互联网标识。
- 「.biz」business简称,代表着商业领域。
- 「.name」、「.me」和「.bio」bio为biography(简介)的缩写,非常适合用于个人网站。
- 「.io」Input/Output--Geek的代表。
国外很多的极客、技术等网站很多以io域名结尾,比如:Google开发者大会-Google I/O,编程马拉松-hackathon.io,GitHub Pages-github.io,Java著名框架-spring.io,轻博客框架-hexo.io,图标字体库和CSS框架-Font Awesome等等,无疑是开发者首选的新贵域名。
IO 被发掘之后赋予了更多含义:
- 1 和 0 (二进制世界, 当然是与计算机, IT科技界相关)
- true / false
- input / output
比较(针对个人):
-
.com、.net、.org是国际最广泛流行的通用域名格式,但是比较好的名字都被别人占用了,价格基本都1W+。(贵,不推荐)
-
.cn需实名认证加备案审核。(麻烦,不推荐)
-
.io。一般个人买域名建站,大多数的开发人员搭建博客,作为Geek的代表,io域名为首选。价格一般在200-500¥左右,对于钱包有点紧的同学有点小贵。(推荐)
![Uploading purchase-zone_273919.png . . .] -
.name、.me、.bio非常适用于个人网站,主要是价格便宜,每年在¥50左右。(推荐)
域名注册
一般域名注册服务商都会提供VPS(Virtual Private Server,虚拟专用服务器)和ECS(Elastic Compute Service,云服务器),如果需要你可以顺便购买,现在大多数厂商个人入门服务器价格是300¥/年。
PS: 这里有个误区,我之前在阿里云上购买完域名,然后系统提示我实名认证完去管局备案,但我的网站实际上放在GitHub上的,结果我一直等了快一个月备案成功才去解析域名。域名购买注册完进行实名认证就可以进行解析使用了,如果你购买的是国内的主机服务器,如阿里云、腾讯云等,你的域名需要解析到该服务器实例公网IP的时候,根据国家法律规定你的域名就需要备案,整个备案流程从提交各种资料到拍照挺麻烦的,一般25天左右才能下来;但是你购买的是国外或香港的,或直接部署在GitHub Pages等,则不需要审核备案,但在大陆访问的速度会慢,就需要你了解图片访问加速、页面静态化、CDN等相关知识去优化。
当然即使你的域名放在国外也可以备案-域名证书生成器
推荐几个域名注册服务商:
- 国内。
- 国外。
大陆域名=实名认证(1天左右);大陆服务器=备案审核(20天左右)
域名解析(DNS)
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
映射方式
域名到IP地址的映射有两种方式:
- 静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用,如Windows系统的hosts文件。
- 动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
DNS冗余
为保证服务的高可用性,DNS要求使用多台名称服务器冗余支持每个区域。
某个区域的资源记录通过手动或自动方式更新到单个主名称服务器(称为主 DNS服务器)上,其它冗余名称服务器(称为辅 DNS 服务器)用作同一区域中主服务器的备份服务器,以防主服务器无法访问或宕机。辅 DNS服务器定期与主 DNS 服务器通讯,确保它的区域信息保持最新。如果不是最新信息,辅DNS服务器就会从主服务器获取最新区域数据文件的副本。这种将区域文件复制到多台名称服务器的过程称为区域复制。
GitHub Pages绑定域名
我在阿里云上注册了一个新域名:guodongdong.com.cn,把博客托管在GitHub Pages上:gordon0518.github.io。现在我希望将guodongdong.com.cn映射到gordon0518.github.io。
- 创建CNAME文件夹。在个人博客仓库根目录中新建文件CNAME(大写,没有后缀),在该文件添加域名,如guodongdong.com.cn,该域名不能包含前缀信息,即不能添加http:\前缀。告诉Github Pages服务器你想指定的域名。Github读取你的CNAME之后,Github服务器会设置guodongdong.com.cn为你的主域名,然后将gordon0518.github.io重定向到guodongdong.com.cn。
如果你和我一样使用的是Node.js系Hexo或Ruby系Jekyll来生成静态博客文件,只需把CNAME
放在blog根目录下的source文件夹下即可,每次generate静态文件时会自动放在public文件夹下。
PS: 如果Github Pages服务器无法识别和解析你的域名,ping下域名和GitHub地址,如果都指向同一个IP地址,浏览器还是不能访问,说明配置有问题,认真检查下。 - 解析域名
在所购买的域名服务商页面解析自己的域名即可。搭建网站一般在记录类型里选择:
- A记录。将域名指向主机服务商提供的IPv4地址,如:59.110.137.229
- CNAME记录。将域名指向另一个域名,实现与被指向域名相同的访问效果,如:gordon0518.github.io
- 测试等待
要全球解析生效,得等上一会了,也可以先ping一下自己的设置对不对。阿里云域名服务的工作原理是,在你更新了域名解析之后,首先是阿里的万网云解析,然后传播到各大运营商的DNS服务器,刷新DNS缓存,至此你的域名可以被访问。