解析プログラムでTCPを解析してみた

TCPもやってみた。

tshark-tcp-snd070817-2257rtp.png

TCPシーケンス図。シーケンスナンバーの値が変。後ろのLostは無視。

tshark-tcp-snd070817-2257mac.png

MACの送信回数。DCCPと傾向は似ているが、多少、強引に送っている感がある。

途中でMAC層で送信せずに待ちに入っている時間がある。この原因としてMAC層損失がありそうだが、それが発生するくらい再送している状態は見られない。よってバッファオーバーフローではないかという仮説が出てくるが、TCPの内部状態とMACドライバのオーバーフロー数を今回は観察していないので分からない。

受信してファイル出力させたデータのサイズは80.6MB。再生時間までにデータ送信が間に合っていない可能性がある。

その原因としては、誤り訂正が行われるまでデータを上位に渡さないというTCPの性質が挙げられる。TCPは再送して途中が埋まるまでACKにて再送要求を行い、既に受信したデータといえども完全性を保証するまではアプリケーションには渡さない。つまり、先のデータが届いているのにも関わらず、再送を待つことで再生までに間に合わずプレイヤーで劣化として現れてしまったという仮説が考えられる。

これを証明するためには、やはり遅延を考慮した出力を行う必要がありそうだ。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>