tcpping指定网卡类型为any结果不准确问题

tcpping软件参考开源工具

https://github.com/jwyllie83/tcpping

该软件通过libnet组包和发包,通过libpcap抓取返回的ACK或RST信息来计算tcp延迟和丢包。

./tcpping -h

./tcpping: invalid option -- ‘h‘

./tcpping: [-v] [-c count] [-p port] [-i interval] [-I interface] [-t ttl] [-S srcaddress] remote_host

如果设备上有多个网卡,数据发出是从网卡A发出,数据回来是经过网卡B回来,这种情况下,需要设置-I any。只针对linux系统有效。

但设置成any后,第一包结果出现 异常。如:

./tcpping -S 1.1.1.1 1.1.1.5 -p 22 -I any

TCP PING 1.1.1.5 (1.1.1.5:22)

SYN/ACK from 1.1.1.5: seq=1 ttl=63 time=1463296896.000s

SYN/ACK from 1.1.1.5: seq=2 ttl=63 time=43.474ms

SYN/ACK from 1.1.1.5: seq=3 ttl=63 time=45.411ms

SYN/ACK from 1.1.1.5: seq=4 ttl=63 time=45.780ms

SYN/ACK from 1.1.1.5: seq=5 ttl=63 time=43.381ms

SYN/ACK from 1.1.1.5: seq=6 ttl=63 time=43.429ms

SYN/ACK from 1.1.1.5: seq=7 ttl=63 time=45.549ms

SYN/ACK from 1.1.1.5: seq=8 ttl=63 time=43.241ms

^C

--- 1.1.1.5 TCP ping statistics ---

7 SYN packets transmitted, 8 SYN/ACKs and 0 RSTs received, -14.3% packet loss

round-trip min/avg/max = 43.241/182912128.000/1463296896.000 ms

出现这种情况,稍微改一下tcpping.c代码即可

/* Do some analysis on the returned packet... */

if (ms > 1000) {

units = "s";

ms /= 1000;

//如果大于1000,认为异常,直接返回

return;

}

改进后效果为:

./tcpping -S 1.1.1.1 1.1.1.5 -p 22 -I any -c 5

TCP PING 1.1.1.5 (1.1.1.5:22)

SYN/ACK from 1.1.1.5: seq=1 ttl=63 time=43.492ms

SYN/ACK from 1.1.1.5: seq=2 ttl=63 time=43.469ms

SYN/ACK from 1.1.1.5: seq=3 ttl=63 time=45.379ms

SYN/ACK from 1.1.1.5: seq=4 ttl=63 time=43.549ms

SYN/ACK from 1.1.1.5: seq=5 ttl=63 time=43.409ms

SYN/ACK from 1.1.1.5: seq=6 ttl=63 time=43.494ms

--- 1.1.1.5 TCP ping statistics ---

6 SYN packets transmitted, 6 SYN/ACKs and 0 RSTs received, 0.0% packet loss

round-trip min/avg/max = 43.409/43.799/45.379 ms

时间: 2024-08-04 21:40:14

tcpping指定网卡类型为any结果不准确问题的相关文章

修改VMware Workstation虚拟机 网卡类型

Vmware workstation的默认网卡是AMD PCNet AM79C970A,可以改变网卡配置,虚拟出Intel(R) PRO/1000和VMware PCI Ethernet Adapter网卡. 在.vmx文件中添加或修改如下语句: ethernet0.virtualDev = "e1000" 值为"e1000"指定网卡类型为Intel(R) PRO/1000 值为"vlance"指定网卡类型为AMD PCNet AM79C970A

C# 获取本机指定类型指定网卡的Ip地址

1.简单方式 ,适用于单网卡 string hostName = Dns.GetHostName(); IPAddress[] addresses = Dns.GetHostAddresses(hostName); foreach (IPAddress address in addresses) { if (address.AddressFamily == AddressFamily.InterNetwork) { //本机IPV4 地址 } else if (address.AddressFa

2.1-Apache不记录指定文件类型日志

在apache访问日志中,默认会记录所有动作.包括本地一些静态小图片,从而日志变得繁多臃肿. 这时我们可以指定,不记录指定文件类型的日志,来达到只记录我们想要的日志. 配置步骤: 1:标记指定文件类型 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/src/Discuz" ServerName www.llzdwyp.com ServerAlias www.wyp.com S

每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容

前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望能够对大家有所帮助. 1.   在列表中为列表项添加子项 为列表添加子项大家都很熟悉,但是如何为列表项添加子项呢?例如列表项是一个文件夹,如何为该文件夹添加子项呢?这里就用到了List.AddItem()方法,具体示例如下: 首先我们要获取列表中的子项: SPListItem root_item=l

nginx不记录指定文件类型的日志

1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; 其中dd是指日志格式的名字,可修改.2.在虚拟主机配置文件中,指

&lt;input type=&quot;file&quot; /&gt;浏览时只显示指定文件类型

<input type="file" />浏览时只显示指定文件类型 <input type="file" accept="application/msword" ><br><br>accept属性列表<br> 1.accept="application/msexcel"2.accept="application/msword"3.accept=&q

1.9-nginx不记录指定文件类型日志

nginx的日志记录和格式,在主配置文件中有配置 vim /usr/local/nginx/conf/nginx.conf 中这一行 log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' '$host "$request_uri" $status' '"$http_referer" "$http_user_agent"'; combined_re

Linux指定网卡工作模式

指定网卡工作模式使用 ethtool命令,有时候会使用mii-tool ,但是这个命令显示不太准确,1000M的也会显示成100M ethtool eth0  #产看eth0网卡的信息 [[email protected] ~]# ethtool  eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes:   10baseT/Half 10baseT/Full 100baseT/Half 100baseT/

为Linux虚拟机更改网卡类型从E1000到VMXNET3

用户为什么要从E1000调整为VMXNET3,理由如下: E1000是千兆网路卡,而VMXNET3是万兆网路卡: E1000的性能相对较低,而VMXNET3的性能相对较高: VMXNET3支持TCP/IP Offload Engine,E1000不支持: VMXNET3可以直接和vmkernel通讯,执行内部数据处理: 我们知道VMware的网络适配器类型有多种,例如E1000.VMXNET. VMXNET 2 (Enhanced).VMXNET3等,就性能而言,一般VMXNET3要优于E100