如何顶级域名判断

我们这里只考虑英文字母的域名情况,并且不考虑后来开放申请之后类似与.google、.youtube之类的奇葩域名。

通过观察我们容易得到如下结论:
1、我们用.将域名分成好多段,那么主域名只可能有两段或者三段;
2、主域名的名称后面,有三种情况,跟着通用顶级域名(zhihu.com)、跟着国家顶级域名(12306.cn)和跟着两段顶级域名的(sina.com.cn)。

还有以下事实:
1、通用顶级域有Generic top-level domain中所列的22个;
2、国家顶级域名按照国际标准ISO 3166-1 alpha-2只分配两个字母(英国佬比较奇葩,标准中规定他们用.gb,但是他们更喜欢用.uk,实际上两个都是他们的)。

所以,如果最后一节是两个字符,那么可以判定为是国家顶级域名,然后往前看一节,如果这一节不是通用顶级域名,那么我们把最后两节当作主域名;如果是,那么我们把最后三节当作主域名。

如果最后一节不是两个字符,那么我们把最后两节当作主域名。

两种情况的流程合并之后,就是我们直接看域名的倒数第二节,如果这一节是通用顶级域名,那么我们把最后三节当成主域名,否则我们只把最后两节当成主域名。

另外说明一下特例:
1、部分国家会使用不在通用顶级域名之中的二级域,例如bbc.co.uk,我们只要把.co当作加到通用顶级域名的列表里面就可以正常处理得到bbc.co.uk
2、 不少教科书上都写了.ac是科研机构的顶级域名,但同时也是英属阿森松岛的国家顶级域名。可以加入到通用顶级域名列表里面,如果在倒数第二节发现该域名, 那么可以判定为某国研究机构的域名;如果在最后一节中发现,并且倒数第二节中还出现.com之类的域名,那么显然不是研究机构。判断逻辑与上述逻辑无差。

--------
谢邀,我能想到的是,即使你把顶级域名全部列举了,还是没有办法判定像中华人民共和国中央人民政府门户网站这样的域名,到底哪个部分是顶级域名。所以,大致的思路只能是顶级域名列表加上特例列表。

猜你喜欢

转载自xiaobo-liu.iteye.com/blog/1960001