Java获取域名注册信息Whois

[b]域名的种类[/b]
(1)country-code:
  国家/地区顶级域名(ccTLD:Country Code Top Level Domain)
(2)generic:
  通用顶级域名 (gTLD:generic Top Level Domain)
(3)generic-restricted:
  有限制的通用顶级域名(需要审核)
(4)infrastructure:
  基础组织顶级域名(iTLD:Infrastructure TLD)
(5)sponsored:
  组织顶级渔民sTLD
(6)test:
  国际化域名(IDN TLD)

[b]IANA[/b]
IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)是负责协调一些使Internet正常运作的机构。

[b]WHOIS服务器[/b]
WHOIS服务器是一个基于"查询/响应"的TCP事务服务器,它运行在SRI-NIC机器上(26.0.0.73或10.0.0.51),向用户提供internet范围内的目录服务。本地主机上的用户程序可以通过Internet访问该服务器,其过程主要有下面三步:
  (1)在TCP服务端口43(十进制)连接SRI-NIC服务主机;
  (2)发送一个命令,以回车和换行(<CRLF>)结尾;
  (3)接受相应命令的返回信息,一旦输出结束,服务器将关闭连接。
  命令的格式非常简单。可以直接输入域名,例如,可以使用"sohu.com"查询"搜狐"网站的域名信息;也可以使用"help"得到具体的帮助信息。

[b]通过Java的Socket类实现[/b]

public class Whois {

private static final int DEFAULT_PORT = 43;

public String query(String domain) throws Exception {
String server = "";
String tld = getTLD(domain);
if ("com".equals(tld)) {
server = "whois.verisign-grs.com";
} else if ("net".equals(tld)) {
server = "whois.verisign-grs.com";
} else if ("org".equals(tld)) {
server = "whois.pir.org";
} else if ("cn".equals(tld)) {
server = "whois.cnnic.cn";
} else if ("jp".equals(tld)) {
server = "whois.jprs.jp";
} else if ("kr".equals(tld)) {
server = "whois.kr";
}
return query(domain, server);
}

public String query(String domain, String server) throws Exception {
Socket socket = new Socket(server, DEFAULT_PORT);
String lineSeparator = "\r\n";

PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(domain);
out.flush();

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuilder ret = new StringBuilder();
String line;
while ((line = in.readLine()) != null) {
ret.append(line + lineSeparator);
}
socket.close();
return ret.toString();
}

private String getTLD(String domain) {
final int index;
return (domain == null || (index = domain.lastIndexOf('.') + 1) < 1) ? domain
: (index < (domain.length())) ? domain.substring(index) : "";
}

public static void main(String[] args) throws Exception {
Whois w = new Whois();
System.out.println(w.query("baidu.com"));
System.out.println(w.query("csdn.net"));
System.out.println(w.query("apache.org"));
System.out.println(w.query("360.cn")); //china
System.out.println(w.query("mixi.jp")); //japan
System.out.println(w.query("laneige.co.kr")); //korea
}

}


[b]【附录A】目前的顶级域名及WHOIS服务器一览:[/b]
[img]http://dl.iteye.com/upload/attachment/0074/0927/cd5bcf17-f71b-32a9-bf9f-cbc885140a48.gif[/img]
来源:[url=http://www.iana.org/domains/root/db]http://www.iana.org/domains/root/db[/url]

[b]【附录B】目前的IPv4分配及WHOIS服务器一览:[/b]
[img]http://dl.iteye.com/upload/attachment/0074/1278/122f138c-1c1a-3771-b9fe-005f0a873e0c.gif[/img]
来源:[url=http://www.iana.org/assignments/ipv4-address-space]http://www.iana.org/assignments/ipv4-address-space[/url]

[b]【附录C】全球IP地址分配组成图[/b]
[img]http://dl.iteye.com/upload/attachment/0074/1297/5bc77d42-998c-388f-920c-d59dd5e1aee2.gif[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值