• 締切済み

RWINとWireshark

RWINの事がよくわからないので質問させてもらいます。 MTUは1500でRWINを76800などに変更しても、ダウンロード最中のパケットを見てみると、データを2回受け取りACKを1回返す→またデータを2回受け取り・・・を繰り返しているみたいでここが意味不明なんです。 自分の考えだとウィンドウサイズを76800に変更しているので、データを51回ぐらい送って(1500*51<76800)そこで初めてACKを返してまたデータを51回ぐらい送って・・・の繰り返しだと思うのですが、恐らく俺の勘違いだと思うので誰かご教授願います(;´Д`)文章へたくそで申し訳ないです

みんなの回答

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

> 11回一気に送って 「スロースタート」という言葉があるので、いきなり11回送ったりはしないと思います。最大転送速度で通信しているときはあるかもしれませんけどね。 > この時受信側の現在のRWINは16384-1454*2で13476だと思うんですが ダウト。1454オクテットはPPPoEのMTUなので、TCPのデータサイズはそれよりも小さくなります。-32で最大1422オクテットのはず。なので、計算式は 16384 - 1422 * 2 になります。 > 16384でACKを返していて謎。 Ackを返すということは「受信したよ」ということを相手に伝えているだけです。RWINサイズは自分の余力を相手に伝えているだけなので、性能に余裕がないならともかく、そうでなければRWINは最大にして返したほうがよいですね。というわけでRWINを最大にして送っているのでしょう。

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.1

RWINて「自分がどのくらい受信バッファを用意しているか」を相手に伝えるための情報なので、Ackを返すタイミングとは関係ないです。 Ackをいつ返すかはTCP/IPスタックの実装によったと思いますが(うろ覚え)、送信側は相手のRWINを超えてデータを先行送信することはありませんので、ちょこちょことAckを返して常にバッファをクリアしておかないと、Ackが滞った時に送信側の送信が止まってしまうことになります。

sandaruman
質問者

補足

回答ありがとうございます。素人の自分なりの解釈ですと MTU1454,受信側のRwinを16384とするとまず最初に送信側は 16384÷1454=11でセグメントを11回一気に送って 受信側はデータが2個届き次第ACKを返す。(この時受信側の現在のRWINは16384-1454*2で13476だと思うんですが、Wiresharkでみると16384でACKを返していて謎。データ2個ごとにACKを返すのも謎)送信側は応答を確認し、ウィンドウをスライディングしていく こんな流れだと思っているのですが、どうですかね?

関連するQ&A