20:26:16 with imicola in /proc  … ➜ cat net/tcp sl local_address rem_address st tx_queue rx_queue tr tmwhen retrnsmt uid timeout inode
0: 3600007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 975 0 19504 1 00000000a4229c44 100 0 0 10 5
1: 00000000:1F90 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 212078 1 000000000d6f9099 100 0 0 10 0 2: 3500007F:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 975 0 19502 1 0000000096cfd0bc 100 0 0 10 5
3: 00000000:14EB 00000000:0000 0A 00000000:00000000 00:00000000 00000000 975 0 19485 1 0000000090afd4c8 100 0 0 10 5
4: FEFFFF0A:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 11274 1 00000000002c1024 100 0 0 10 0
5: 0100007F:820F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 61747 1 00000000a99e8635 100 0 0 10 0
6: 0100007F:2EED 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1000 0 66273 1 00000000c8cd5fa4 100 0 0 10 0
7: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0 0 3458 1 000000008179c28a 100 0 0 10 0
8: 0100007F:CF2C 0100007F:820F 01 00000000:00000000 00:00000000 00000000 1000 0 60129 1 0000000058f58fb6 20 4 2 10 -1
9: 0100007F:820F 0100007F:CF24 01 00000000:00000000 00:00000000 00000000 1000 0 22915 1 00000000a02f3b3b 20 4 30 10 32 10: 0100007F:820F 0100007F:CF2C 01 00000000:00000000 00:00000000 00000000 1000 0 22920 1 000000004162dccd 20 4 31 10 -1 11: 0100007F:CF24 0100007F:820F 01 00000000:00000000 00:00000000 00000000 1000 0 91312 1 00000000d84b6750 20 4 30 10 -1

简介

/proc/net/tcp 是 Linux procfs 中用于展示当前 TCP socket 状态的内核接口文件,该文件列出了系统当前所有 TCP socket(监听 + 已建立连接) 的内核信息。

字段讲解

sl

sl字段表示序号,通常是在内核哈希表中的索引,是方便人类阅读的设置

local_address

含义:

  • 本地IP+本地端口 格式:
IP:PORT

使用 16进制 + 小端序 表示

Note

例如0100007F:CF2C转化为正常端口格式:

  • 小端序 反转
7F 00 00 01

转化为10进制:

127.0.0.1

端口:

CF2C(hex) -> 53036(dec)

即:

0100007F:CF2C
= 127.0.0.1:53036

rem_address

含义:

  • 远程IP + 端口

同样也是小端口+16进制,具体的分析拆解可以见上面的

st(TCP state)

TCP有十一种状态,而 st 表示TCP状态机状态

例如:

0A
01

[!常见的状态]-

HEXTCP状态
01ESTABLISHED
02SYN_SENT
03SYN_RECV
04FIN_WAIT1
05FIN_WAIT2
06TIME_WAIT
07CLOSE
08CLOSE_WAIT
09LAST_ACK
0ALISTEN

TCP状态的具体含义可以在计算机网络章节查看

tx_queue | rx_queue

含义:

  • 发送队列中等待发送的数据量和接收队列数据量

格式:

tx_queue:rx_queue

rx_queue 很大的时候,有可能是:

  • 程序读取数据慢
  • 网络拥塞
  • 应用卡住

tr

表示 TCP timer 状态
常见值:

含义
00no timer
01retransmit timer
02delayed ack

tm->when

表示 timer 还剩多少时间触发

其中单位是 Linux 内核时间单位

retrbsmt

表示 重传次数

当这个值很大的时候,说明:

  • 网络丢包
  • TCP重传频繁

uid

表示创建该socket 的用户ID

timeout

TCP socket 的超时值。

inode

socket 对应的 inode编号

可以通过这个 inode 找到哪个进程打开了这个 socket,使用如下命令即可:

ls -l /proc/*/fd/* | grep inode