如何知道服务的临时端口?

thr*_*cks 4 linux services

在 Cent OS 7 中,我使用netstat -an来检查网络服务:

[root@localhost etc]# netstat -an | grep ESTABLISHED
udp        0      0 192.168.1.25:41136      61.216.153.106:123      ESTABLISHED
udp        0      0 192.168.1.25:59141      202.112.29.82:123       ESTABLISHED
udp        0      0 192.168.1.25:53680      115.28.122.198:123      ESTABLISHED
udp        0      0 192.168.1.25:34255      42.51.22.35:123         ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

您可以在那里看到临时 41136端口。如果服务使用端口,3306我们可以知道它是 MySQL,如果端口是,8080我们可以知道它是 Tomcat,但是临时端口呢?我们如何知道哪些服务与这些端口相关联?

Rui*_*iro 11

至于临时端口:

互联网号码分配机构 (IANA) 建议动态或专用端口的范围为 49152 到 65535(2 15 +2 14到 2 16 ?1)。许多 Linux 内核使用端口范围 32768 到 61000

查看 TCP/IP 元组上的目标,如您所问的示例所示:

udp        0      0 192.168.1.25:41136      61.216.153.106:123
Run Code Online (Sandbox Code Playgroud)

您可以看到它是在远程服务器上使用 NTP 服务 UDP/123 的当前机器。

或者,是您的机器向中国的 NTP 服务器发出 NTP 请求。

实际上,所有这 4 条线路都连接到中国的 NTP 服务器。

通常,对于大多数协议,当已知端口服务在您这边(第一个)时,您通常是接收连接的服务器,而临时端口在右侧;相反,通常是您的服务器正在使用远程服务。

(你的服务器在中国吗?如果不是我会担心可能的恶意软件)

您也可以取出-n, 用于解析 IP 地址/DNS 和服务名称,但请注意,它会在具有许多连接(和/或 DNS 服务较慢)的机器/服务器中引入明显的延迟。为了感受一下不同之处,我将您的原始netstat输出调整为可能的输出,而没有-n

$netstat -a | grep ESTABLISHED
udp        0      0 mylinux:41136      vns1.hinet.net:ntp        ESTABLISHED
udp        0      0 mylinux:59141      DNS1.SYNET.EDU.CN:ntp     ESTABLISHED
udp        0      0 mylinux:53680      rdns1.alidns.com:ntp      ESTABLISHED
udp        0      0 mylinux:34255      ns1.htudns.com:ntp        ESTABLISHED
Run Code Online (Sandbox Code Playgroud)


Sim*_*ter 10

可以使用netstat -p获取本地打开端口的程序的pid和名称;这可以结合-a-n像往常一样。

在大多数系统上,您需要 root 权限才能执行此操作。

  • 仅需要 root 权限才能获得“全貌”:运行 `netstat -p` 的用户仍然能够看到他们拥有的任何进程(使用用户的 UID 运行的进程)的 PI​​D 和进程名称。 (2认同)

Cha*_*ell 5

正如你可以在看netstat工作统计羟基苯乙)输出,

Proto Recv-Q Send-Q Local Address           Foreign Address         State   
udp        0      0 192.168.1.25:41136      61.216.153.106:123      ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

192.168.1.25 是您在 LAN 中的本地/源 IP 地址。

41136 是源端口号。

61.216.153.106 是目标 IP 地址。

123 是代表网络时间协议 (NTP) 的目标端口号

源端口号 ( 41136) 类似于目标端口 (123NTP),但发送主机 ( 192.168.1.25) 使用它来帮助跟踪新的传入连接和现有数据流。

通常,客户端/源地址 ( 192.168.1.25) 将源端口号设置为他们自己选择的唯一编号 - 通常基于启动连接的程序。

在这种情况下,您的计算机选择的源端口号是41136

这个数字是随机的,通常大于 1024。

再看一个例子。在这种情况下,所有目标端口都是 UDP 123,即 NTP,而源端口号不同且随机。

Proto Recv-Q Send-Q Local Address           Foreign Address         State   
udp        0      0 192.168.1.25:59141      202.112.29.82:123       ESTABLISHED
udp        0      0 192.168.1.25:53680      115.28.122.198:123      ESTABLISHED
udp        0      0 192.168.1.25:34255      42.51.22.35:123         ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

  • 虽然网络理论确实定义了大于 1024 的临时端口,但 BSD 内核*通常*默认配置为在 49152 到 65535 范围内使用它们,Linux 内核在 32768 到 61000 范围内使用它们。请注意,您在端口 > 1024 中还有其他服务,例如 X 或 NFS。(我实际上在我的一次编辑中写了相同的内容,但几乎在我保存它后就将其删除了)。 (3认同)