欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析

关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析

2025/6/15 8:32:31 来源:https://blog.csdn.net/qq_36940806/article/details/148613250  浏览:    关键词:关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析

关于 /proc/net/tcp 与 /proc/$pid/net/tcp 的关系分析

1. 基础概念

在 Linux 系统中,每个进程必定归属于一个且仅一个网络命名空间(Network Namespace)。这是 Linux 命名空间隔离机制的核心特性之一。

/proc/net/tcp
显示当前网络命名空间中所有TCP连接信息(全局视角)。

/proc/$pid/net/tcp
显示特定进程所属网络命名空间中的TCP连接信息(进程视角)。若进程在主机默认命名空间,则内容与全局文件相同。

2. 核心区别

特性/proc/net/tcp/proc/$pid/net/tcp
数据范围当前命名空间所有 TCP 连接仅限该进程所属命名空间的 TCP 连接
命名空间感知仅显示当前命名空间跟随进程的命名空间(容器友好)
权限要求需 root 查看所有连接仅能查看自身进程或权限足够的进程
典型用途主机级网络监控进程/容器级网络诊断

3. 关键关系

(1) 命名空间隔离性
容器环境:
容器中的进程通常位于独立的网络命名空间。此时:

cat /proc/net/tcp → 显示主机全局连接

cat /proc/$容器PID/net/tcp → 显示容器内的连接

# 查看容器内连接(需先获取容器PID)
docker inspect --format '{{.State.Pid}}' nginx
cat /proc/12345/net/tcp

(2) 数据一致性
若进程在主机默认命名空间中:执行以下命令,输出为空

diff /proc/net/tcp /proc/$pid/net/tcp

若进程在独立命名空间(如容器):
两文件内容完全不同,反映各自命名空间的连接状态。

4. 查看网络空间

(1) 显示当前网络空间

# 通过 inode 确认网络命名空间
ls -l /proc/$$/ns/net
# 示例输出:
lrwxrwxrwx 1 root root 0 Jun 12 16:25 /proc/9208/ns/net -> net:[4026531956]

(2) 查看进程所属网络空间

# 通过 inode 确认网络命名空间
ls -l /proc/$PID/ns/net
# 示例输出:
lrwxrwxrwx 1 root root 0 Jun 12 16:18 /proc/27791/ns/net -> net:[4026531956]

相同 inode 值 → 同一网络命名空间
不同 inode 值 → 不同网络命名空间

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词