リモート ホストへのネットワーク遅延を測定する一般的な方法は、ping
アプリケーションを使用することです。 ping
ツールは、ICMP ECHO 要求および応答パケットに依存して、リモート ホストの往復遅延を測定します。ただし、場合によっては、ICMP トラフィックがファイアウォールによってブロックされ、制限されたファイアウォールの背後にあるホストでは ping
アプリケーションが役に立たなくなることがあります。この場合、これらのレイヤー 3 パケットは一般的なファイアウォール ルールをバイパスする可能性が高いため、TCP/UDP パケットを使用するレイヤー 3 測定ツールに依存する必要があります。
そのようなレイヤー 3 測定ツールの 1 つが tcpping
です。レイテンシを測定するために、tcpping
は、いわゆる セミオープン接続テクノロジ
を利用します。 TCP スリーウェイ ハンドシェイクについて。つまり、ポート番号 (デフォルトは 80) を介して TCP SYN パケットをリモート ホストに送信します。リモート ホストがそのポートでリッスンしている場合、TCP ACK パケットで応答します。それ以外の場合は、TCP RST パケットで応答します。いずれの場合でも、tcpping
は、送信 SYN パケットと受信 ACK (または RST) パケットのタイミングを計ることにより、リモート ホストのラウンドトリップ時間 (RTT) 遅延を測定できます。
tcpping
tcpping
外部ツールに応答して RTT 測定を実行および報告するシェル スクリプトとして実装されます。したがって、tcpping
をインストールするには、まずこれらの前提条件をインストールする必要があります。
tcptraceroute
Ubuntu または Debian にインストールするにはtcptraceroute
:
CentOS または RHEL に tcptraceroute
をインストールするには、まずシステムに RepoForge をセットアップしてから、次のコマンドを実行します。
$ sudo yum install tcptraceroute
bc
使用的另一个工具tcpping
是GNUbc
,它预装在所有主要的 Linux 发行版上。但是,如果你tcpping
在最小 Linux 运行时环境(例如Docker容器、AWS 最小映像 AMI)中运行,则bc
可能不会预先安装。在这种情况下,你需要bc
自己安装。
在Debian 的 Linux 上安装:
$ sudo apt-get install bc
在 Red Hat 的 Linux 上安装:
$ sudo yum install bc
tcpping
安装这些必备工具后,最后继续tcpping
从官方源下载。
$ wget http://www.vdberg.org/~richard/tcpping $ cp tcpping /usr/bin $ chmod 755 tcpping
tcpping
来衡量延迟要使用 测量网络延迟tcpping
,你可以使用以下格式。
tcpping [-d] [-c] [-r sec] [-x count] ipaddress [端口]
-d
: 在每个结果之前打印时间戳。-c
: 使用分列输出以便于解析。-r
:连续探测之间的间隔(以秒为单位)(默认为 1 秒)。-x
: 重复 n 次(默认无限制)。[port]
: 目标端口(默认为 80)。请注意,你需要 root 权限才能运行,tcpping
因为它需要调用特权tcptraceroute
命令。
对于任何开放 80 端口的目标 Web 服务器,你可以使用以下方法测量其 RTT 延迟tcpping
。
tcpping www.rumenz.com seq 0: tcp response from 42.194.162.109 (42.194.162.109) 33.822 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 1: tcp response from 42.194.162.109 (42.194.162.109) 33.975 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 2: tcp response from 42.194.162.109 (42.194.162.109) 32.010 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 3: tcp response from 42.194.162.109 (42.194.162.109) 32.209 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 4: tcp response from 42.194.162.109 (42.194.162.109) 30.866 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 5: tcp response from 42.194.162.109 (42.194.162.109) 34.866 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 6: tcp response from 42.194.162.109 (42.194.162.109) 32.604 ms traceroute to rumenz.com (42.194.162.109), 255 hops max, 60 byte packets seq 7: tcp response from 42.194.162.109 (42.194.162.109) 30.495 ms
对于任意远程主机,在运行tcpping
. 要检查远程 TCP 端口是否打开,你可以使用nc
如下命令。
$ nc -vn
-t
: 连续 TCPing ,直到使用 Ctrl+C 键停止tcping -t 1.1.1.1 80
-n 5
: TCPing 5次后停止tcping -i 5 1.1.1.1 80
-w 0.5
: 设置超时时间为 0.5秒(1秒=1000毫秒),单位 秒tcping -w 0.5 1.1.1.1 80
-d
:在每行返回信息中加入时间信息tcping -d 1.1.1.1 80
-s
: 当 TCPing 测试成功后(在超时时间以内返回 TCPing 延迟数据)自动停止 TCPingtcping -s 1.1.1.1 80
-4
: 优先 IPv4(如果一个域名有 IPv4 和 IPv6 解析,那么走 IPv4)tcping -s 1.1.1.1 80
-6
:优先 IPv6(如果一个域名有 IPv4 和 IPv6 解析,那么走 IPv6)tcping -6 www.rumenz.com 80
--file
: TCPing 将逐行循环遍历文件内的 服务器IP/域名 信息(一行一个,支持端口,例如:1.1.1.1 443)tcping --file rumenz.txt
以上がLinux での TCP テスト ツールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。