URL:(Uniform Resource Locator)统一资源定位符。一条符合规范的URL对应的是服务器的一个特定的资源(如HTML页面,一张图片等)。
结构如下:
scheme://hostname[:port]/path/[;parameters][?query]#fragment
scheme:通信协议,常用的有http、https、ftp、mailto等。
hostname:主机域名或IP地址。
port:端口号,可选。省略时使用协议的默认端口,如http默认端口为80。
path:路径由零或多个"/"符号隔开的字符串组成,一般用来表示主机上的一个目录或文件地址。
query:查询,可选。用于传递参数,可有多个参数,用"&"符号隔开,每个参数的名和值用"="符号隔开。
fragment:信息片断字符串,也称为锚点。用于指定网络资源中的片断。
比如:
https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_9230366566950910677%22%7D&n_type=0&p_from=1
其中mbd.baidu.com为主机域名。
域名(Domain Name)通常是用户所在的主机名。域名格式是由若干部分组成,每个部分又称子域名,它们之间用“.”分开,每个部分最少由两个字母或数字组成。城名通常按分层结构来构造,每个子域名都有其特定的含义。从右到左,子域名分别表示不同的国家或地区的名称(只有美国可以省略表示国家的顶级域名)、组织类型、组织名称、分组织名称和计算机名称等。
域名服务器实际上就是装有域名系统的主机。由高向低进行层次划分,可分为以下几大类:
“jocent.me”
的请求,则根服务器是不能在它的记录文件中找到与 “jocent.me”
匹配的记录。但是它会找到 “me”
的顶级域名记录,并把负责 “me”
地址的顶级域名服务器的地址发回给请求者。
通过UDP协议传输的DNS消息最大长度需要限制在512字节(不包括IP头部、UDP头部),超出部分要被截断。有了最大长度限制后,一个UDP协议传输的DNS响应能够返回的资源记录数量就是有限的。512字节的限制是在RFC 1035中规定的,为了更好的性能我们需要将响应限制在一个响应报文中完成,也就是只有512字节可以用了。当我们查询根域的NS记录时,512字节只够返回包含13个由A-M命名的根域名服务器的NS记录和A记录的响应。NS记录在回答区段中,A记录在额外信息区段中,A记录用于帮助你接下来向根域名服务器进一步查询。
"jocent.me"
,根域名服务器已经告诉了查询者“me”
顶级域名服务器的地址,“me”
顶级域名服务器会找到 “jocent.me”
的域名服务器的记录,域名服务器检查其区域文件,并发现它有与 “jocent.me”
相关联的区域文件。在此文件的内部,有该主机的记录。此记录说明此主机所在的 IP 地址,并向请求者返回最终答案。域名解析总体可分为两大步骤,第一个步骤是本机向本地域名服务器发出一个DNS请求报文,报文里携带需要查询的域名;第二个步骤是本地域名服务器向本机回应一个DNS响应报文,里面包含域名对应的IP地址。从下面对jocent.me
进行域名解析的报文中可明显看出这两大步骤。注意:第二大步骤中采用的是迭代查询,其实是包含了很多小步骤的,详情见下面的流程分析。
其具体的流程可描述如下:
dns.me
的IP地址dns.me
进行查询me
告诉本地域名服务器,下一步查询权限服务器dns.jocent.me
的IP地址
dns.jocent.me
进行查询dns.jocent.me
告诉本地域名服务器所查询的主机的IP地址其中有两个概念递归查询和迭代查询,其实在整个描述的过程中已经体现的很明显,这里再说明一下:
原文:https://www.cnblogs.com/joycamp/p/13498104.html