有没有办法查找TCP套接字的发送/接收缓冲区大小?
我使用了netstat和ss,以及raw / proc / net / tcp.那里有很多好东西,包括飞行中的字节数,计时器,进程名称等.
但是我希望能够诊断一些程序是否设置了SO_ {SND,RCV} BUF ……更有趣的是内核实际上为每个SKB使用了什么值.
解决方法
从
lsof FAQ(搜索“为什么没有lsof报告套接字选项”),我相信Linux不会提供您可用的信息. (至少不通过/ proc)
如果是这样,你可以使用lsof -i< pid> -a -i tcp -T f,但-T只需要“qs”,而不是Linux上的f.您可以从netstat(netstat –tcp -p -o -e -e -v | grep< pid>)获取一些其他信息,其中包括发送队列和接收队列以及一些计时器信息.
你能做的就是使用strace.您必须通过strace(strace -ff -e network,ioctl PROGRAM)或在设置TCP套接字(strace -fff -e network,ioctl -p PID)之前运行程序. ioctl是如何设置这些选项的,网络应该足够了解它们是什么连接. (但只是ioctl然后使用lsof来确定连接应该在哪里工作)