Whois查询适用于telnet但不适用于netcat

时间:2013-05-12 06:19:05

标签: whois netcat

我正在尝试编写一个高级 whois 客户端,因此我一直在尝试使用Arch Linux中的netcat(nc)向whois服务器发送命令。例如,这很有效:

$ echo domain google.com | nc whois.crsnic.net 43
# => nc outputs whois data for google.com

但是,处理.br.com等后缀的whois服务器是 whois.centralnic.net ,并且该服务器似乎无法使用netcat。当我给它任何查询时,似乎只是在没有响应的情况下关闭连接:

$ echo foobar | nc whois.centralnic.net 43
# => No output from nc.

我使用telnet成功地进行了相同的查询:

$ telnet whois.centralnic.net 43
Trying 193.105.170.136...
Connected to whois.centralnic.net.
Escape character is '^]'.
foobar
DOMAIN NOT FOUND
Connection closed by foreign host.

那么,什么可能使服务器对telnet的行为与netcat不同?

我想也许这是一个时间问题,所以我没有成功尝试:

$ { sleep 4; echo foobar; sleep 4; } | nc whois.centralnic.net 43
# => No output from nc.

我看到netcat有一个-T选项让它的行为更像telnet,所以我没有成功尝试过:

$ { sleep 4; echo foobar; sleep 4; } | nc -T whois.centralnic.net 43
# => No output from nc.

在我的生产系统中,我不会使用netcat或telnet,但似乎有一些奇怪的网络问题在这里发生,我想知道它。任何人都可以了解为什么netcat适用于所有whois服务器,但只有telnet适用于whois.centralnic.net?

1 个答案:

答案 0 :(得分:6)

该服务在其请求中需要CRLF,而不仅仅是LF;

这是有效的(在Ubuntu上,有多个netcat版本,所以不能为你说话)

$ echo -e "foobar\r\n" | nc whois.centralnic.net 43
DOMAIN NOT FOUND