Telnet 本地端口不工作但尝试 ip 工作

Telnet 本地端口不工作但尝试 ip 工作

我的应用程序侦听端口 8180。

当我尝试本地连接到端口 8180 时。连接被拒绝。但是当我尝试使用 ip 连接到端口时。我能够连接。

[root@MUMLGOMAPP002 ~]# telnet 10.209.129.54 8180
Trying 10.209.129.54...
Connected to MUMLGOMAPP002 (10.209.129.54).
Escape character is '^]'.
^]
telnet> q
Connection closed.


[root@MUMLGOMAPP002 ~]# telnet localhost 8180
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused

我的界面是:

[root@MUMLGOMAPP002 ~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 44:1E:A1:73:F7:50
          inet addr:10.209.129.54  Bcast:10.209.129.63  Mask:255.255.255.224
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:322997568 errors:23 dropped:0 overruns:0 frame:0
          TX packets:304470664 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:213628580915 (198.9 GiB)  TX bytes:217449664400 (202.5 GiB)

我想知道 telnetting localhost 和 ip 有什么区别。

答案1

网络进程可以bind是特定地址,也可以是任意地址。

要查看您正在做什么,请尝试lsof -n -i TCP:8180 -s TCP:LISTEN.

您应该看到:

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
[lots of other stuff...............................] 10.209.129.54:8180 (LISTEN)

或者

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
[lots of other stuff...............................] *:8180 (LISTEN)

第一个告诉您您的进程绑定到该特定 IP 地址,我想您会看到这一点。

执行此操作时telnet localhost 8180telnet会将主机名解析为 IP 地址。它应该解决127.0.0.1。因此您的系统尝试连接到127.0.0.1:8180.如果您的服务器只是侦听10.209.129.54:8180,网络层将拒绝连接到127.0.0.1:8180.

如果您需要使两者都工作,则取决于您使用的服务器程序。

如果您谈论的是 JBoss,它似乎通常使用端口 8180,请参阅https://developer.jboss.org/thread/168789了解如何使两者都发挥作用。请注意,如果您在同一主机上运行多个 JBoss 服务器,这样做可能会导致混乱。

相关内容