一,工具简介
tcpaccept工具用于追踪接受TCP套接字连接的内核函数(例如,通过accept()函数实现的被动连接;不是connect()函数)。
accept()
是一个在 UNIX-like 系统上用于套接字编程的系统调用,它在 TCP 服务器中起着关键作用。当 TCP 服务器通过 listen()
系统调用使其套接字进入被动打开模式后,它会等待客户端的连接请求。当一个客户端尝试连接到服务器时,服务器的套接字将变得可读,表明有新的连接请求到来。
这时,服务器使用 accept()
函数来接受这个连接请求,并创建一个新的套接字用于与该客户端进行通信。原始的服务器套接字则继续监听新的连接请求。
二,代码示例
#!/usr/bin/env python
from __future__ import print_function
from bcc.containers import filter_by_containers
from bcc import BPF
from socket import inet_ntop, AF_INET, AF_INET6
from struct import pack
import argparse
from bcc.utils import printb
from time import strftime
# 参数
examples = """examples:
./tcpaccept # trace all TCP accept()s
./tcpaccept -t # include timestamps
./tcpaccept -P 80,81 # only trace port 80 and 81
./tcpaccept -p 181 # only trace P