我想找出在tcp套接字上传输了多少字节(顺便说一句,我正在使用Ubuntu 18.04)。我尝试了 ss 命令,但 ss 似乎只能显示已接收的字节数,而不能显示bytes_sent。那么有什么方法可以显示套接字的bytes_sent吗?为什么这个数字没有显示在ss中?我认为bytes_received和bytes_sent密切相关。
> ss -ti
ESTAB 0 0 host1:ssh host2:7703
cubic wscale:2,8 rto:384 rtt:181.622/16.823 ato:40 mss:1452 cwnd:10
ssthresh:118 bytes_acked:120873541 bytes_received:1151501 segs_out:87562
segs_in:39194 send 639.6Kbps lastsnd:11732 lastrcv:11564 lastack:11564
pacing_rate 1.3Mbps retrans:0/203 reordering:56 rcv_rtt:11516 rcv_space:71360
答案 0 :(得分:0)
我一直在研究相同的问题,并得出结论,这取决于您使用的内核。
通过测试,我已经在Linux内核4.xx和5.xx上获得了bytes_sent
,bytes_acked
和bytes_recieved
,但在3.xx上却没有。请参见以下Debian GNU/Linux with kernel 4.19.0-6-amd64
上的示例:
$ ss -itpn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.16.177.135:22 172.16.177.1:60928
users:(("sshd",pid=700,fd=4))
bytes_sent:50872 bytes_acked:50872 bytes_received:11165
*我删去了与此问题无关的其他信息
在深入研究sock_diag和ss's source code之后,ss似乎使用类型为INET_DIAG_INFO
的{{1}}来获取此信息。
我希望这会有所帮助,如果我发现其他问题,会告诉您。