TCPもやってみた。
TCPシーケンス図。シーケンスナンバーの値が変。後ろのLostは無視。
MACの送信回数。DCCPと傾向は似ているが、多少、強引に送っている感がある。
途中でMAC層で送信せずに待ちに入っている時間がある。この原因としてMAC層損失がありそうだが、それが発生するくらい再送している状態は見られない。よってバッファオーバーフローではないかという仮説が出てくるが、TCPの内部状態とMACドライバのオーバーフロー数を今回は観察していないので分からない。
受信してファイル出力させたデータのサイズは80.6MB。再生時間までにデータ送信が間に合っていない可能性がある。
その原因としては、誤り訂正が行われるまでデータを上位に渡さないというTCPの性質が挙げられる。TCPは再送して途中が埋まるまでACKにて再送要求を行い、既に受信したデータといえども完全性を保証するまではアプリケーションには渡さない。つまり、先のデータが届いているのにも関わらず、再送を待つことで再生までに間に合わずプレイヤーで劣化として現れてしまったという仮説が考えられる。
これを証明するためには、やはり遅延を考慮した出力を行う必要がありそうだ。