UDP服务器端口全部开放

UDP服务器端口全部开放

我是一名在 CentOS7 服务器上工作的开发人员。今天我想检查服务器所有端口的状态。

首先我执行命令:firewall-cmd --zone=public --list-ports然后我得到了这个:

110/tcp 443/tcp 80/tcp 995/tcp 143/tcp 3306/tcp 993/tcp

以上所有端口均由我打开,因此一切正常。

然后我用另外一台Linux PC来nc扫描服务器的端口(假设服务器的ip是aaaa):

nc -v -z -w2 a.a.a.a 1-4000

我得到了相同的结果。

之后,我使用ncUDP 扫描端口:

nc -v -z -w2 -u a.a.a.a 1-4000

令我惊讶的是,似乎所有端口都已打开,因为我得到的结果如下:

Connection to a.a.a.a port 1 [udp/tcpmux] succeeded!
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src b.b.b.b port 62086
    dst a.a.a.a port 2
    rank info not available

Connection to a.a.a.a port 2 [udp/compressnet] succeeded!
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src b.b.b.b port 60795
    dst a.a.a.a port 3
    rank info not available

Connection to a.a.a.a port 3 [udp/compressnet] succeeded!
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src b.b.b.b port 50133
    dst a.a.a.a port 4
    rank info not available

Connection to a.a.a.a port 4 [udp/*] succeeded!
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src b.b.b.b port 64246
    dst a.a.a.a port 5
    rank info not available

Connection to a.a.a.a port 5 [udp/rje] succeeded!
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src b.b.b.b port 50334
    dst a.a.a.a port 6
    rank info not available
...
...

现在我很困惑。
为什么所有端口都为 UDP 开放?这样安全吗?如果不安全,为什么防火墙不关闭它们?
对我来说,“端口开放”意味着某个程序或系统正在监听它。例如,80/tcp意味着我的 Web 程序正在监听端口 80。如果我是对的,这是否意味着服务器正在使用 UDP 监听所有端口?
或者“端口开放”只是意味着防火墙没有阻止端口,以便您可以使用某个程序来监听它?

答案1

UDP 响应是误报,您可以忽略这一点。UDP 是一种无连接/无状态协议,因此它不期望任何回复...没有响应、响应错误...都一样。TCP 是一种有状态协议,因为两个端点都保留有关彼此状态的信息,需要确认,并且可以重新传输。

阅读有关无状态协议的内容:https://en.wikipedia.org/wiki/Stateless_protocol

TCP 状态:https://upload.wikimedia.org/wikipedia/commons/a/a2/Tcp_state_diagram_fixed.svg

相关内容