| コメント |
by あきみち 2011/06/20
TCPはウィンドウを使って複数のパケットに対するACK(応答確認)をまとめて行うので、ICMPのように一つ一つの個々のパケットに対して応答が出るわけではないので、そのものズバリのRTTを出すのは難しいかも知れません。 TCPに関するkernel設定を変更してしまうという手はありますが。。。
簡単な方法としては、正確ではありませんが、たとえば、libpcapでTCPパケット風のパケットを自作してやり取りを行うプログラムを書いてみたり、TCPセッションが開始される3 way hand shakeだけの部分を切り出してRTTとしてみるとかはどうでしょう?
|
by say 2011/06/20
Wireshark ですと Statistics - TCP Stream Graph - Round Trip Time Graph というのがあります。あきみちさんの仰るとおり、ICMPにおけるRTTとは少し意味合いが違うので、そのまま比較はできないですが参考にはなると思います。
|
by Kenichi Maehashi 2011/06/21
あきみちさん
コメントありがとうございます。(いつも blog 拝見しています!) kernel の設定について、TCP セグメントの数が常に 1 になるようにすれば、RTT になるのかなと思っています。 ハンドシェイク自作については、iPhone 側で何かしらのポートを空ける or iPhone アプリを作らないといけないのでちょっとハードル高いですが、時間があったら挑戦してみます。 # そもそも libpcap を使ったプログラムを書いたことが無いという話もあります :-)
|
by Kenichi Maehashi 2011/06/21
say さん
情報ありがとうございます。そのままズバリな機能があったのですね。 グラフの読み方と調節の仕方がまだ分かっていないので、使いこなせるように勉強します... (汗)
|
by あきみち 2011/06/21
いつもありがとうございます(笑)。
kernel設定が出来るのであれば、それでやれば何となくのデータが取れそうですね。
3 way hand shakeの部分は、いくつかのTCPセッションを普通に張ってみて、その部分のwireshark結果を見てみるという意味です。 わかりにくくてすみません。。。
libpcapその他のプログラミングに関しては、そこまでやるのもやり過ぎな気がするので、忘れて下さい。。。 といいつつ、もし興味があるのであればlinux用のサンプルコードをいくつか公開しているのでどうぞ。 http://www.geekpage.jp/programming/linux-network/book/
|
by Kenichi Maehashi 2011/06/21
実は来月からネットワークプログラミング関連の業務に関わることになり、ちょうど今勉強中でした。 サンプルコード、ぜひ参考にさせていただきます。ありがとうございます。
|
by kshat 2011/06/21
簡単に見てみるならば、 複数回セッションを張って測定し、 tcpdump -rとフィルターで、SYN/SYN+ACKだけを取り出し、 テキスト処理で統計をとってみてもいいかもしれませんね。
勉強中とのことですので、 その方がWiresharkで可視化するより、 個々のパケットについての理解が深まるかもしれません。
|
by Hide 2011/06/21
> 余談ですが、ICMP パケットもパケット課金の対象になるので、 > あんまりジャンジャカ転送されるよりは多少フィルタが掛かってた方が > パケ放題じゃない人にとっては嬉しいはず。 > ping flood でパケ死とか、笑えない。
そもそも、iPhone 側がPing に応答する意味はないと思う。 それこそ、書かれているように「Ping flood」の餌食になりますから・・・
|
by Hide 2011/06/21
訂正:
訂正前 「そもそも、iPhone 側がPing に応答する意味はないと思う。」
訂正後 「そもそも、iPhone 側がPing に応答するべきではないと思う。」
|
by Kenichi Maehashi 2011/06/24
kshat さん アドバイスありがとうございます。 ついツールに頼ってしまいがちですが、そういった地道な努力も必要ですね。。
Hide さん ユーザが設定変更できれば、なお良いですね。
|
| |