当前位置: 首页 > 科技观察

Linux下的TCP测试工具

时间:2023-03-12 18:28:06 科技观察

测量远程主机网络延迟的常用方法是使用ping应用程序。ping工具依赖于ICMPECHO请求和回复数据包来测量到远程主机的往返延迟。但是,在某些情况下,ICMP流量可能会被防火墙阻止,从而使此ping应用程序对受限防火墙后面的主机无用。在这种情况下,您将需要依赖使用TCP/UDP数据包的第3层测量工具,因为这些第3层数据包更有可能绕过常见的防火墙规则。一种这样的第3层测量工具是tcpping。为了测量延迟,tcpping使用了一种基于TCP三向握手的所谓半开放连接技术。即通过端口号(默认80)向远程主机发送一个TCPSYN包。如果远程主机正在侦听该端口,它将使用TCPACK数据包进行响应。否则,它将使用TCPRST数据包进行响应。无论哪种方式,tcpping通过计时传出的SYN数据包和传入的ACK(或RST)数据包来测量远程主机的往返时间(RTT)延迟。在Linux上安装tcppingtcpping是作为响应外部工具执行和报告RTT测量的shell脚本实现的。因此,为了安装tcpping,您首先需要先安装这些先决条件。安装依赖项tcptraceroute要在Ubuntu或Debian上安装tcptraceroute:$sudoapt-getinstalltcptraceroute要在CentOS或RHEL上安装tcptraceroute,首先在您的系统上设置RepoForge,然后运行:$sudoyuminstalltcptracerouteinstalldependenciesbcused另一个用于tcpping的工具是GNUbc,它预装在所有主要的Linux发行版中。但是,如果您的tcpping在最小的Linux运行时环境(例如Docker容器、AWS最小图像AMI)中运行,则可能不会预安装bc。在这种情况下,您需要bc自行安装。在DebianLinux上:$sudoapt-getinstallbc在RedHatLinux上:$sudoyuminstallbc安装tcpping安装完这些必备工具后,最后继续从官方源下载tcpping。$wgethttp://www.vdberg.org/~richard/tcpping$cptcpping/usr/bin$chmod755tcpping使用tcpping测量延迟要使用tcpping测量网络延迟,您可以使用以下格式。tcpping[-d][-c][-rsec][-xcount]ipaddress[port]-d:在每个结果前打印时间戳。-c:使用柱状输出以便于解析。-r:连续探测之间的间隔(以秒为单位)(默认为1秒)。-x:重复n次(默认无限制)。[端口]:目标端口(默认为80)。请注意,您需要root权限才能运行tcpping,因为它需要调用特权tcptraceroute命令。对于任何开放了80端口的目标Web服务器,您可以使用以下方法测量其RTT延迟tcpping。tcppingwww.rumenz.comseq0:来自42.194.162.109(42.194.162.109)33.822mstraceroute到rumenz.com(42.194.162.109)的tcp响应,最大255跳,60字节数据包seq1:tcp响应从42.194.162.109(42.194.162.109)33.975mstraceroute到rumenz.com(42.194.162.109),最大255跳,60字节数据包seq2:来自42.194.162.109(42.194.162.109)32.010mstraceroutetorumenz.com(42.194.162.109),255hopsmax,60bytepacketsseq3:tcpresponsefrom42.194.162.109(42.194.162.109)32.209mstraceroutetorumenz.com(42.194.162.109),255hopsmax,60bytepacketsseq4:tcpresponsefrom42.194.162.109(42.194.162.109)30.866mstraceroutetorumenz.com(42.194.162.109),255hopsmax,60byte数据包seq5:来自42.194.162.109(42.194.162.109)34.866mstraceroute到rumenz.com(42.194.162.109)的tcp响应,最大255跳,60字节数据包seq6:来自42.194.162.109(42.194.162.109)32.604mstraceroute到rumenz.com(42.194.162.109)的tcp响应,最大255跳,来自se9.4tcp响应的60字节数据包seq1.162.109(42.194.162.109)30.495ms对于任何运行tcpping的远程主机。要检查远程TCP端口是否打开,可以使用nc,如下所示$nc-vn-t:ContinuousTCPinguntiltcpingisstoppedusingtheCtrl+Ckey-t1.1.1.180-n5:TCPing5次后停止tcping-i51.1.1.180-w0.5:设置超时为0.5秒(1秒=1000毫秒),以秒为单位tcping-w0.51.1.1.180-d:添加每行返回信息的时间信息tcping-d1.1.1.180-s:当TCPing测试成功时(在超时时间内返回TCPing延迟数据)自动停止TCPingtcping-s1.1.1.180-4:优先级IPv4(如果域名有IPv4和IPv6解析,则转到IPv4)tcping-s1.1.1.180-6:priorityIPv6(如果域名有IPv4和IPv6解析,则转到IPv6)tcping-6www.rumenz。com80--file:TCPing会逐行循环遍历文件中的服务器IP/域名信息(一行一行,支持端口,例如:1.1.1.1443)tcping--filerumenz.txt