我们面临着公共网络和专用网络之间的通信问题。我们在防火墙和互联网路由器后面有一个基于 Linux 的 Web 服务器。作为某些集成的一部分,我们的 Web 门户团队正在尝试从端口 80 上的这些 Linux Web 服务器 Telnet 另一个 Web 门户的公共 IP,但远程主机恰好在显示已连接时关闭了连接。
但是当我们从网络中基于 Windows 的 Web 服务器尝试它时,同样是成功的。一切看起来都很好,防火墙正在传递流量。
如果一端服务器运行 Linux,另一端运行 Windows 服务器,这有什么关系吗?因为公网IP应用服务器运行的是Windows服务器。要满足沟通成功的要求,关键点是什么?
请参阅以下错误日志。
]$ telnet 220.226.190.180 80
Trying 220.226.190.180...
Connected to 220.226.190.180 (220.226.190.180).
Escape character is '^]'.
Connection closed by foreign host.
答案1
我尝试连接到您的服务器,但超时很短,请尝试以下操作:
user@host:~$ telnet 220.226.190.180 80
然后立即复制以下内容:
GET / HTTP/1.1
Host: 220.226.190.180
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
...有一个空行在最后。如果我这样做,我会从您的服务器得到以下答案:
HTTP/1.1 302 MOVED_TEMPORARILY
Server: Pramati Server/6.5SP1 [Servlet/2.5 JSP/2.1]
Date: Tue, 27 May 2014 11:59:17 GMT
Connection: Keep-Alive
Location: http://220.226.190.180/TinxsysInternetWeb/index.jsp
Content-Length: 0
没关系,但 telnet 本身不会重定向。如果您对该内容执行另一个请求(再次强调,不要忘记末尾有空行):
GET /TinxsysInternetWeb/index.jsp HTTP/1.1
Host: 220.226.190.180
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
...您将正确收到 HTML 页面。
答案2
连接linux telnet客户端和windows xp telnet客户端给出完全相同的结果:在这两种情况下,服务器在大约3秒的超时后关闭连接。不过,Windows XP 客户端并不表示 tcp 连接已关闭(至少暂时不会),并且如果您键入某些内容,则会自动启动新的 tcp 连接。了解更多的人可能会告诉您如何使用 Linux telnet 客户端重现此行为。