45.2. 显示添加到内核的接受队列中的 TCP 连接
通过使用 tcpaccept 工具,您可以通过追踪内核的 accept() 函数来监控新接受的连接。
内核在 TCP 三向握手中接收 ACK 数据包后,内核会在连接状态变为 ESTABLISHED 后将 SYN 队列的连接移到 accept 队列。因此,只有成功的 TCP 连接才能在此队列中看到。
tcpaccept 工具使用 eBPF 特性显示内核添加到 accept 队列的所有连接。该工具是轻量级的,因为它跟踪内核的 accept() 函数,而不是捕获和过滤数据包。例如,使用 tcpaccept 进行常规故障排除,来显示服务器已接受的新连接。
流程
输入以下命令来启动对内核
accept队列的追踪:# /usr/share/bcc/tools/tcpaccept PID COMM IP RADDR RPORT LADDR LPORT 843 sshd 4 192.0.2.17 50598 192.0.2.1 22 1107 ns-slapd 4 198.51.100.6 38772 192.0.2.1 389 1107 ns-slapd 4 203.0.113.85 38774 192.0.2.1 389 ...每次内核接受一个连接时,
tcpaccept都会显示连接的详情。- 按 Ctrl+C 停止追踪过程。