如何检查开放端口是TCP还是HTTP?

时间:2014-07-25 21:06:03

标签: windows node.js http tcp port

具体来说,我有一台Windows服务器(Windows 7),但netstat -an命令只显示端口是TCP还是UDP。我认为这些是唯一的端口类型,但node.js似乎区分HTTP端口和TCP端口(example at bottom of linked page)。我目前在将在我的服务器上运行的程序中使用node.js,默认情况下会打开HTTP端口。它们显示为netstat -an下的TCP端口。

是否有命令行技巧来区分此服务器上的开放端口是HTTP还是TCP?我向我的信息技术办公室请求我在这台服务器上需要的端口,他们需要知道这些端口是TCP,UDP等。

如果需要使用远程客户端,我有一台Mac可以完成这项工作。

2 个答案:

答案 0 :(得分:2)

HTTP是一种应用程序协议。它的定义假设了一个潜在的,可靠的传输层协议。通常使用传输控制协议。但是HTTP也可以使用不可靠的协议(例如SSDP)。

现在回答你的问题:

  • netstat -lt:列出TCP侦听端口
  • netstat -lu:列出UDP侦听端口

如果您想知道TCP端口是否正在运行HTTP,您可以检查HTTP上的标准端口(grep:80)。标准HTTP端口为80.标准HTTPS端口为443。

答案 1 :(得分:1)

所有HTTP流量都通过TCP端口传输。我认为可能导致一些混淆的是第一个node.js示例使用http模块,第二个示例使用net模块。

http模块构建在net模块之上(处理基础HTTP的TCP层)。

请参阅:nodejs - net or http module

编辑:

只有一个进程可以绑定到端口。如果您在连接时遇到困难,请关闭可能使用相同端口的任何其他应用程序,例如Java Hello World服务器。运行netstat -an以确保您没有在示例中的node.js TCP服务器(端口1337)中看到您尝试监听的端口列表。如果没有正在侦听端口,请启动node.js TCP服务器并再次运行netstat -an以确保它实际上正在侦听预期的端口。

另一个建议 - 暂时关闭软件防火墙,然后使用本地服务器上的telnet客户端尝试使用命令telnet 127.0.0.1 1337(用您的端口替换1337)从命令提示符连接到端口。这将消除客户端(在本例中为telnet)与服务器之间的任何网络设备,如防火墙。如果屏幕变为空白,则表示已连接。如果您收到消息Could not open connection to the host, on port,那么它仍然没有收听TCP端口。如果您可以从Telnet本地连接,但无法远程连接,则会阻止您的连接。