为什么我的 10010 端口被两个不同的进程使用了?

╰─➤  lsof -i :10010
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
firefox   11923  pon  245u  IPv4 273225      0t0  TCP localhost:56698->localhost:10010 (ESTABLISHED)
quickqser 25672  pon   10u  IPv4 266513      0t0  TCP localhost:10010 (LISTEN)
quickqser 25672  pon   14u  IPv4 266514      0t0  UDP localhost:10010 
quickqser 25672  pon   65u  IPv4 287547      0t0  TCP localhost:10010->localhost:56698 (ESTABLISHED)

一个端口不是只能被一个进程使用吗?

一个 firefox、一个 quickqser,都是 TCP

阅读 3k
3 个回答

看清楚,一个TCP一个是UDP,协议不一样的。TCP和UDP端口不冲突的

:56689 是 firefox 的,:10010 就 quickqser 的。他们两个之间有一个连接,但是每一个 port 只属于一个进程。

不过这个连接在两个进程里都存在,是这个连接被 :10010 找出来了。

这里监听10010这个端口的都是25672这个PID,是一个进程。

这里第一行是11923这个PID的程序,建立了一个 源地址为 localhost:56698 目的地址为 localhost:10010 的连接。
这里第四行是25672这个PID的程序,建立了一个 源地址为 localhost:10010 目的地址为 localhost:56698 的连接。
第一行和第四行是对应的。

===

一个端口在一个地址上只能被一个进程监听。你给的lsof,只有第二行的quickqser是处于LISTEN状态(TCP),说明只有quickqser正在监听(使用)10010端口。 第一个firefox是一个已经建立连接的状态,并不是firefox监听了10010端口。

一个进程可以和很多个主机端口建立TCP连接,只要 源地址 源端口 目的地址 目的端口 不是一样的,就不会冲突。

可以使用ss -tnlp查看当前所有监听TCP端口的程序,应该会比使用lsof好点。
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题