URL、域名、DNS解析

NOTE: 作为IT开发人员,经常会遇到用到或者看到url、域名、DNS等名词,天天见面,却一直对其原理和工作过程理解得不够透彻,这几天特地对相关的知识点进行了一个比较全面的了解。这里整理为一个笔记,以便日后查阅。

我们说:重要的不是解决问题,而是提出合适的问题,本着这种态度,这里提出我想解释的问题:

1. url的作用及组成是怎样的?
2. 域名的作用及其构成?
3. DNS作用及DNS解析的过程是怎样的? 

1. URL 和 URI

URL(Uniform Resource Locator 统一资源定位符) 是URI(Uniform Resource Identifier 统一资源标识符) 的子集,标识着资源在互联网中的具体地址。

  • URI 在某一规则下能把一个资源独一无二地标识出来
  • URL 是以描述资源的位置来唯一确定或者获取资源

他们的 RFC -- Request for Comments 标准如下

URI的标准格式:


                    hierarchical part
        ┌───────────────────┴─────────────────────┐
                    authority               path
        ┌───────────────┴───────────────┐┌───┴────┐
  abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
  └┬┘   └───────┬───────┘ └────┬────┘ └┬┘           └─────────┬─────────┘ └──┬──┘
scheme  user information     host     port                  query         fragment

  urn:example:mammal:monotreme:echidna
  └┬┘ └──────────────┬───────────────┘
scheme              path

// 这里不对URI的格式进行详细的说明,因为更为普遍知晓的是其子集URL

URL的标准格式:

协议类型:[//服务器地址[:端口号]][/路径]文件名[?查询][#片段]
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

注: 在http协议中 user 和 password 在url中通常不是必须的,所以我们平时所看到的url是没有user 和 password 的,另外由于http协议的默认端口号是80,所以80端口也被省略了。在使用http协议的时候,一般除了域名,其他的都是可省略的,http://会由浏览器自动补上

http://zh.wikipedia.org:80/w/index.php?title=Special:%E9%9A%8F%E6%9C%BA%E9%A1%A2&printable=yes
1. http                              // 协议,其他常用协议有ftp、file、telnet、mailto等
2. zh.wikipedia.org                  // 域名即服务器
3. 80                                // 服务器上的端口号(http协议默认的端口,可以省略)
4. /w/index.php                      // 路径
5. ?title=Special:XXXX&printable=yes  // query  

比较常用的协议类型及其描述如下:

协议 描述
file 主机系统上的一个文件
ftp 文件传输协议
gopher gopher 协议
http 超文本传输协议
https 安全超文本传输协议
im 即时通信
pop 邮局协议v3
mailto 电子邮件地址

2. 域名

域名的来源: IP地址是Internet主机的作为路由寻址用的数字型标识,但却不容易记忆,为了更容易记忆一个主机或服务器,因而产生了域名(domain name)这一种字符型标识。再由DNS服务将其转换成计算机可以识别的IP,跟IP一样域名也是独一无二的,一旦注册,便与对应的IP唯一的绑定

一级域名是顶级域名
.com/.cn/.org/.info/.edu/.name 等是顶级域名
taobao.com 是二级域名
XXX.taobao.com 是三级域名(子域名)

3. DNS(Domain Name System) 域名系统

URL解析出域名后,要如何才能知道域名对应的IP呢?这就是DNS要做得事。 DNS是因特网的一项核心服务,是一个可以将 域名IP地址 相互映射的分层结构的分布式数据库

解析过程:

第一步:浏览器将会检查缓存中有没有这个域名对应的解析过的IP地址,如果有该解析过程将会
结束。浏览器缓存域名也是有限制的,包括缓存的时间、大小,可以通过TTL属性来设置。

第二步:如果用户的浏览器中缓存中没有,浏览器将会查找操作系统缓存中是否有这个域名对应 
的DNS解析结果。其实操作系统也会有一个域名解析的过程,在Windows中可以通过
C:WindowsSystem32driversetchosts文件来设置,你可以将任何域名解析到任何能够访问的IP
地址。那么浏览器会首先使用这个IP地址。也正是因为有这种本地DNS解析的规程,所以黑客就
有可能通过修改你的域名解析来把特定的域名解析到它指定的IP地址上,导致这些域名被劫持。

第三步:读取网络设置中的“DNS服务器地址”,操作系统就会将这个域名发送给这里设置的
LDNS,也就是本地的域名服务器。这个DNS通常都提供给你本地互联网接入的一个DNS服务。
如果你实在小区接入的互联网,那这个DNS就是提供给你接入互联网的应用提供商,即电信或者
是联通,也就是通常所说的SPA,可以通过ipconfig查询这个地址。

第四步:如果LDNS仍然没有命中,就直接到Root Server域名服务器中请求解析。

第五步:根域名服务器返回给本地服务器一个所查询域的主域名服务器地址(gTLD Server)。
gTLD是国际顶级域名服务器,如.com、.cn、.org等,全球只有13台左右。

第六步:本地域名服务器(Local DNS Server)再向上一步返回的gTLD服务器发送请求。

第七步:接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器的地址,这
个Name Server通常就是你注册的域名服务器的域名服务商,例如你的域名服务商A那里申请一
个域名,那个gTLD将会把这个域名解析任务交由这个域名服务商的服务器来解析。

第八步:Name Server域名服务器会查询存储的域名和IP的映射关系表,正常情况下都根据域名
得到目标IP表,连同一个TTL值返回给DNS Server域名服务器。

第九步:返回该域名对应的IP以及TTL值,Local DNS Server会缓存这个域名和IP的对应关系,
缓存时间由TTL值限制。

第十步:把解析的结果返回给用户,用户根TTL值缓存在本地系统缓存中,域名解析过程结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,598评论 18 139
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,586评论 2 57
  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,836评论 6 120
  • 一、 生成HTTP请求消息 1.1 各种各样的URL浏览器是一个具备多种客户端功能的综合性客户端软件,会根据UR...
    gioxx2阅读 6,267评论 1 8
  • 最近,终于要把《WEB请求处理系列》提上日程了,一直答应小伙伴们给分享一套完整的WEB请求处理流程:从浏览器、Ng...
    七寸知架构阅读 31,084评论 27 253