繁体   English   中英

如何在Android中计算丢包率?

[英]How to calculate packet loss in android?

我们如何在android中计算所有网络或特定的网络数据包丢失?

为了扩展罗伯特的答案,UDP是一种数据报尽力而为的传送协议,它没有会话,按顺序传送或错误检测的任何概念。 如果要进行错误检测,则可能最终要实现很多TCP(嗯,至少是序列号,校验和和确认)。

幸运的是,对于TCP,内核跟踪详细的统计信息。 标准的ip实用程序应该在这里有所帮助。 在我的SGS2上,该实用程序是完整的,并且不会像ifconfig那样减少。

用法示例:

root@android:/etc # ip -s -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    23692      410      0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    23692      410      0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
2: gannet0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1000 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 72:e0:e5:0a:dc:d6 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
3: sit0: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN 
    link/sit 0.0.0.0 brd 0.0.0.0
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        59      0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
4: ip6tnl0: <NOARP,UP,LOWER_UP> mtu 1452 qdisc noqueue state UNKNOWN 
    link/tunnel6 :: brd ::
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        62      62      0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
5: rmnet0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    1410177    2037     0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    199870     1831     0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
6: rmnet1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      
7: rmnet2: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ppp 
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0      

我的手机已经扎根,但这绝对不是必须的。

对于TCP,可能会在Linux级别上获取值,而在Java / Android级别上则无法获取值。

对于UDP,这是不可能的,因为不包含可用于检测数据包丢失的数据。 如果要计算UDP级别的数据丢失,则必须实现自己的基于UDP的协议,并包括例如数据包计数器。 但这只会让您只为自己的协议计算数据包丢失,而不能在总体上计算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM