アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
単純に (スコア:1)
# NetBSD1.4はRWINが512に達しないとACK返さなかった気がする。
Re:単純に (スコア:1)
普通だと、サーバまでのネットワークか、サーバを疑うところです。が、このサーバは他のクライアントとも通信していて、それらのクライアントでは以上は報告されていません。また、前にも書いたとおり、クライアント側のソフトウェア(OSは不変)を変えると正常に通信できます。
Re:単純に (スコア:1)
# クライアント→鯖のシーケンス番号が合ってない気も...
Re:単純に (スコア:1)
この通信は、クライアントからサーバへほとんど一方的にデータを送りつける... というか、SMTPなんですが、だもんで、普通はクライアント→サーバ方向へは連続的にデータが送られ、逆の通信は、ほとんどTCP ACKのみが送られることになります。
で、この若いACKは、正しくスライディングウィンドウ内のACK番号で返されるため、複数同じACK番号のものが返ってくれば、当然再送が起きます。
#という理解でいいんですよね?
Re:単純に (スコア:1)
# ウインドウ外のパケットを受けてACKを返すのがKeepAlive
ええと、複数同じ番号のACK受けても再送はしないよ。
再送するのはACKが来ないとき。
# そもそもTCPのパケットはほとんどACK立ってるし。
Re:単純に (スコア:1)
a. 送信側がフレームを送信後、タイムアウトまでACKが返ってこないとき
b. 重複する確認応答が一定数以上到着したとき
のいずれかで起こる、と理解しています。受信側は、受信したフレームに基づき、スライディングウィンドウを移動した後スライディングウィンドウの先頭のシーケンス番号をACK番号としたTCP ACKを返すかもしれません(無駄を省くために、返さないこともある)。
ここで、受信したフレームの順番によっては、スライディングウィンドウを移動できない場合もあります。また、フレームが途中で消失した場合や、フレームの重複が起こった場合にもスライディングウィンドウの移動が行われないこともあります。そういった場合、以前にTCP ACKで送出したACK番号と同じのACK番号を持つTCP ACKが送出されることがあります。
ACK番号は、「ACK番号を開始シーケンス番号とするフレームの送信要求」を意味しますから、同じACK番号が複数回到着すれば、それは再送要求と理解されるべき、という話だと思います。
...もしかして、私の知識が古いのかな??
Re:単純に (スコア:1)
そんときゃデータが揃うまで待つだけよ。で、現在のACK番号から始まるフレ
ームが来たらそこから連続している分までACK番号を進めてACKを返すわけだ。
> ACK番号を開始シーケンス番号とするフレームの送信要求
「ACK-1までの受信確認とACK~ACK+RWIN-1のデータの送信許可」だと思う
んだがなぁ...送信側も常にACK立ててるわけだからもし複数ACKで再送する
なら連続して受信している側はたまに最後に送信したフレームを再送しなきゃ
ならないけど、それは無駄じゃない?そういうの見たことないし。
# 参照してたのがRFC793だから...古すぎ?それとも記憶がアレなのか。
# とりあえずまた読んでみるか。
Re:単純に (スコア:1)
> 「ACK-1までの受信確認とACK~ACK+RWIN-1のデータの送信許可」
> だと思うんだがなぁ...
正確に言うとそうですね。
> 送信側も常にACK立ててるわけだからもし複数ACKで再送する
> なら連続して受信している側はたまに最後に送信したフレーム
> を再送しなきゃならないけど、それは無駄じゃない?
正確には「同じACK番号が複数回到着すれば」ではなくて、「同じACK番号が一定回数以上到着すれば」が正しいと思います。この「一定回数」は、一般には2よりは大きいでしょう。
また、受け取ったACK番号に対応するフレームのTCPデータ長が0の場合は、当然再送を行いません。
という話だったと思います…が、自信はありません(笑)。
ん~。 (スコア:1)