• 締切済み

パケット通信の再送制御についての質問です。

パケット通信の再送制御についての質問です。 再送制御の説明を色々なサイトで見つつ思うのですが、n番目のパケットがエラーだった時に、n番目から送り直すのは何故ですか?n+1番目、n+2番目はエラーじゃないのに破棄するのが勿体ない様に感じます。n番目のパケットだけ後から要求すれば良い様に思うのですが、何故そう出来ないのでしょうか? また、再送制御の説明で受信側と送信側を数フレーム分ずらして説明が書いてある理由は何なのでしょうか?1フレームの間に再送要求をしてしまえない物なのでしょうか? ご存知の方がいらっしゃいましたら教えて頂けませんでしょうか? 宜しくお願い致します。

みんなの回答

回答No.5

なぜかプロトコルもネットワークも指定されないままの漠然としたご質問ですので、漠然と回答してみます。 選択再送を実装するためには、少なくとも「後から要求」した再送パケットを受信するまでに送られてきたパケットの全てを蓄積するメモリを受信装置に用意する必要があります。また、パケット伝送の最大のメリットである「蓄積交換」に対して即時性が求められます。伝送されるデータが単一パケットで完結せず、データストリームの形態をとって伝送される場合には、少なくとも再送ウィンドウの範囲の伝送の成功確認信号が返送されるまでセッションあるいはコネクションリソースを確保し続ける必要があり、伝送コストが跳ね上がります。さらに、再送要求パケットの消失は伝送データの完全性を破壊する結果を引き起こすため、特別な手段で確実な伝送を行う必要があり、データ伝送リソースを食いつぶし、再送要求待ち時間分だけ実質伝送容量が低下します。 さらに、多くのノードで再送中継されるネットワークを介して伝送されるパケット網では、これら全ての性能が末端を含むノードの処理能力に依存するため、たとえば末端のノートブックパソコンに接続されているADSLの伝送レートが遅いために日米のバックボーン回線が遅くなるということを引き起こすことになります。(正確には、そうした事態を引き起こさないための設備規模が大きくなります) 世の中の多くの無線ネットワークや、波長分割技術が安価で一般的になる以前に敷設されたラインを介したネットワークを経由して伝送している場合には、伝送容量の不平衡性に適応できないため、確認パケットはデータパケットに比べて伝送遅延が極めて大きくなる場合が一般的であり、flying ackの使えない選択再送では設備の持つ伝送能力に対して実質伝送効率が極めて悪くなります。 したがって、現在のインターネットの構成では、選択再送の方が全ての面で劣っています。

Humpty-Dumpty-V
質問者

補足

追加質問して宜しいですか? >また、パケット伝送の最大のメリットである「蓄積交換」に対して即時性が求められます。伝送されるデータが単一パケットで完結せず、データストリームの形態をとって伝送される場合には、少なくとも再送ウィンドウの範囲の伝送の成功確認信号が返送されるまでセッションあるいはコネクションリソースを確保し続ける必要があり、伝送コストが跳ね上がります。 この文章の意味が良く分かりません。もう少し噛み砕いた説明があると有難いです。 >さらに、再送要求パケットの消失は伝送データの完全性を破壊する結果を引き起こすため、 プロトコル次第でこれは起きないと思います。また、もう一方の方式でも同じではないですか? >末端のノートブックパソコンに接続されているADSLの伝送レートが遅いために日米のバックボーン回線が遅くなるということを引き起こすことになります。 すみません、この論理についていけてません。もう少し噛み砕いた説明があると有難いです。 あと、ラスト1マイルの無線にだけ選択再送を用いる場合はどうでしょうか? 以上、宜しくお願い致します。

回答No.4

選択再送は一般的な技術です。何故「出来ない」という判断をされたのでしょうか。 また、単フレームACKも無線伝送などでは一般的な技術です。有線伝送でも、BSCなどで30年も前から使われています。 なお、標準化されたプロトコル(たとえば、TCP)では、選択再送や単フレームACKを使わない場合もあります。これは、「出来ない」わけではなくて、想定されるリンク(TCPならIEEE802.3上のIPなど)で最適なパフォーマンスを実現する実装をしているだけです。

Humpty-Dumpty-V
質問者

補足

一般的な内容なのですね。近くに4番目のフレームを誤ると4番目のフレームから全て送り直すプロトコルがあって、選択再送でない理由は何なんだろう?もしかして何かの課題が?と思った次第です。ちなみに、上記のプロトコルより、選択再送の方が全ての面で上に見えるんですが・・・そこの所はどう思いますか?

noname#119957
noname#119957
回答No.3

n番目のパケットがエラーだった時に、n番目から送り直すのは何故ですか?n+1番目、n+2番目はエラーじゃないのに破棄するのが勿体ない様に感じます。n番目のパケットだけ後から要求すれば良い様に思うのですが、何故そう出来ないのでしょうか? >>ネットワークアダプターのデータバッファーの制約によるものでは? プロトコルなので決まり道理にしないとまずいし。。 また、再送制御の説明で受信側と送信側を数フレーム分ずらして説明が書いてある理由は何なのでしょうか?1フレームの間に再送要求をしてしまえない物なのでしょうか? >>意味が良くわかりませんが。。 受信と送信の動作は、ハード的には独立した動作です。また、全2重なら同時に送信ができます。受け側の、リダンダンシーチェックで誤りがあった時点で初めて、再送要求がされるために、送り側では、その要求を処理するまでは、送るという動作をするように出来ているから。処理時間と伝送と伝送遅延時間などでズレるのでしょう。

Humpty-Dumpty-V
質問者

補足

>プロトコルなので決まり道理にしないとまずいし 関心事は、実現が容易である様に見えるのに、何故今の決まりになったのかです。 >処理時間と伝送と伝送遅延時間などでズレるのでしょう 処理遅延ってやはりあるんでしょうか・・・そこの所ははかって無いし何とも言えません。

回答No.2

>n番目から送り直すのは何故ですか?n+1番目、n+2番目はエラーじゃないのに破棄するのが勿体ない様に感じます。n番目のパケットだけ後から要求すれば良い様に思うのですが、何故そう出来ないのでしょうか? n+1番目、n+2番目の内容が「信用できない」からです。 データパケットの壊れ方によっては「n+1番目のパケットだと思って受け取った物が、実は、n番目のパケットの途中のデータだった」って事があります。 「ビットがずれて、あたかも正しそうに見えるデータになってしまった」って事が絶対に起きない、って保証はどこにもありません。 >また、再送制御の説明で受信側と送信側を数フレーム分ずらして説明が書いてある理由は何なのでしょうか?1フレームの間に再送要求をしてしまえない物なのでしょうか? 受信側が「1フレーム目を受け取った瞬間」には、もう既に送信側が「2フレーム目、3フレーム目を送り出してしまっているから」です。 「1フレーム送るごとに応答を確認する」のでは、ラグが大き過ぎて使い物になりません。 送り側は「ともかく、相手から返事が来るまで、ポンポンと放り投げ続ける」のです。 受け側が何も言ってこないうちは、送り側はどんどん投げ続けるのです。 で、受け側から「2つ目から投げ直してくれ」って言われた時だけ、送り側は2つ目から投げ直します。 送り側が最後まで投げ続けたら「これで終りだ」って言って、受け側からの応答を待ちます。 受け側は「これで終りだ」って言われたら「おけ~、全部揃ってるよ~」って一言だけ返事します。 もちろん、返事が届かない場合もあるので、ある程度の時間を待って返事が無い場合は「お~い、返事は~?」って感じで「聞き直し」をします。 送り側が無事に「おけ~、全部揃ってるよ~」って返事を貰ったら「了解した~。返事受け取った」って答えてセッションが切れます。 送り側は「返事も待たずにポンポン投げ続けてくる」のですから「1フレームの間に再送要求できる訳がない」のです。 受け取りミスしたら、相手に「ちょ、ちょっと待てって。ポンポン投げて寄越すな。4番目からやり直して」って言わないと、相手はどんどん投げ続けて来るのです。

Humpty-Dumpty-V
質問者

補足

>n+1番目のパケットだと思って受け取った物が、実は、n番目のパケットの途中のデータだった これが起きてしまう理由が解りません。時間スロットで区切られているからフレーム毎に独立しているのではないですか?フレームにユニークな識別子やインデックスがあればいいだけで、独立しているとしたら、最後に「1と3と7が足らーん!」でもいいですよね?

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.1

>n番目のパケットがエラーだった時に、n番目から送り直すのは何故ですか? 処理的に、「連続して送るだけ」と「送ったものが正しいかどうか確認しながら送る」のはどちらが難しいですか? また、パケットを受信して一つのデータにする際にはどちらが楽ですか? >n+1番目、n+2番目はエラーじゃないのに破棄するのが勿体ない様に感じます。 >n番目のパケットだけ後から要求すれば良い様に思うのですが、何故そう出来ないのでしょうか? どんなデータでも、パケットが受信バッファに入りきるのなら可能でしょう。 しかし、「n」は可変である限りどれだけのパケットを受信するかわかりませんからバッファの観点上からも問題が発生する可能性があります。 また、前述の通り「一つにまとめる」ために再送による欠損部分の把握にも限度があります。 >受信側と送信側を数フレーム分ずらして説明が書いてある理由は何なのでしょうか? 時間を表すため。 送信したデータは、送信した瞬間に受信しているわけではないため。 受信しても、受信内容の確認を氏再送要求を行う時間も必要。

Humpty-Dumpty-V
質問者

補足

分割するデータの分割度合を段階を踏めばバッファの問題は解決すると思いませんか。最小単位を1ダース集めて一塊とする。受信側は一塊の中で欠落しているフレーム番号を通知する。 一定時間あけて「足りない物はありませんか?」が理想に見えるんですが・・・。

関連するQ&A

専門家に質問してみよう