具体来说,我有一台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可以完成这项工作。
答案 0 :(得分:2)
HTTP是一种应用程序协议。它的定义假设了一个潜在的,可靠的传输层协议。通常使用传输控制协议。但是HTTP也可以使用不可靠的协议(例如SSDP)。
现在回答你的问题:
如果您想知道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本地连接,但无法远程连接,则会阻止您的连接。