1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > 域名 > 正文

域名

从url中解析出域名、子域名和有效顶级域名

1987web2022-10-09域名353
最近有个需求是这样的,做了个cdn分析小工具给运营的同学。他们输入一个url之后,我会去url上抓取所有的静态文件地址,并分析出这些地址用了哪家的cdn。

最近有个需求是这样的,做了个cdn分析小工具给运营的同学。他们输入一个 url 之后,我会去 url 上抓取所有的静态文件地址,并分析出这些地址用了哪家的 cdn。

比如http://zhihu.com这个地址,解析出来的结果是这样:

如下的域名:

http://onepiece.zhihu.com

http://e589fa51.zhihu.com.safe.cdntip.com

http://dayu.ddos.tc.cdntip.com

http://e589fa51.zhihu.com.safe.cdntip.com来举例,很容易看出他的子域名是 e589fa51.zhihu.com.safe,域名是 cdntip,顶级域名是 com。

但不是每个域名的顶级域名都像 .net .com 一样只有一段,还会存在 com.cn,http://co.uk这样的情况。

这时候,我们没法通过简单的正则表达式来切分用户的域名。当然,复杂的正则也做不到。这时候需要一份顶级域名的列表,把域名里面的顶级域名给匹配出来。

这里有一份列表:

https://publicsuffix.org/list/effective_tld_names.dat

----

.http://com.cn是我们常见的顶级域名,但严格来说,只有 .cn 是顶级域名。

.http://com.cn其实是 .cn 自主创造出来的顶级域名,由于这样情况非常广泛,所以严格意义的顶级域名很多场景下没法直接使用,我们就创造了一个【有效顶级域名】的概念。

就中国来说,下列中除了最顶部的 .cn ,其余都是不是严格的顶级域名:

// cn : https://en.wikipedia.org/wiki/.cn
// Submitted by registry 
cn
ac.cn
com.cn
edu.cn
gov.cn
net.cn
org.cn
mil.cn
公司.cn
网络.cn
網絡.cn
// cn geographic names
ah.cn
bj.cn
cq.cn
fj.cn
gd.cn
gs.cn
gz.cn
gx.cn
ha.cn
hb.cn
he.cn
hi.cn
hl.cn
hn.cn
jl.cn
js.cn
jx.cn
ln.cn
nm.cn
nx.cn
qh.cn
sc.cn
sd.cn
sh.cn
sn.cn
sx.cn
tj.cn
xj.cn
xz.cn
yn.cn
zj.cn
hk.cn
mo.cn
tw.cn

----

既然一个国家可以创造自己的顶级域名,有些组织也向这份列表提交了自己定义的有效顶级域名。

比如亚马逊提交了下面这些:

// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
// Submitted by Philip Allchin 
compute.amazonaws.com
ap-northeast-1.compute.amazonaws.com
ap-northeast-2.compute.amazonaws.com
ap-southeast-1.compute.amazonaws.com
ap-southeast-2.compute.amazonaws.com
eu-central-1.compute.amazonaws.com
eu-west-1.compute.amazonaws.com
sa-east-1.compute.amazonaws.com
us-gov-west-1.compute.amazonaws.com
us-west-1.compute.amazonaws.com
us-west-2.compute.amazonaws.com
compute-1.amazonaws.com
z-1.compute-1.amazonaws.com
z-2.compute-1.amazonaws.com
us-east-1.amazonaws.com
compute.amazonaws.com.cn
cn-north-1.compute.amazonaws.com.cn

----

Node.js 有个包专门做这事:https://www.npmjs.com/package/parse-domain

域名解析 -> 发起TCP的3次握手 -> 建立TCP连接后发起http请求 -> 服务器响应http请求->浏览器得到html代码 -> 浏览器解析html代码同时请求html代码中的资源(如js、css、图片等) -> 浏览器对页面进行渲染呈现给用户。

以上过程大致进行分析细节,以方便大家更加详细地认识整体的过程,但是有些过程没有能理解透彻并且过程比较复杂未能提炼通俗易懂语言给大家分析,不过后续会不断分析给大家的。

一次HTTP请求完整过程之域名解析

在面试过程总会被问到HTTP协议如何工作?,一次完整的http请求是经历什么过程......确实此题能衡量程序员的功底,如果你回答非常完整,说明你对网络请求过