アプリ版:「スタンプのみでお礼する」機能のリリースについて

TCP/IPでのパケットの分割の仕組みで疑問に思ったことがあったので質問します。
本を見ると(日経NETWORK 新ネットワーク超入門より)

TCPの役割:IP機能の負荷を減らすため、データが伝送途中で分割されないで送れる最大サイズになるように区切る。
ルータの役割:ルータ内のIP機能が、転送先の回線で決められたサイズに合わせて分割したりする。

と書いてあったのですが、

端末A -- ルータ1 -- ルータ2 -- サーバ
(MTU:1500B) (1000B) (500B)
(それぞれ、端末A ルータ1 MTU 1500B
ルータ1 ルータ2 MTU 1000B
ルータ2 サーバ MTU 500B と仮定)

のようなトポロジを仮定した場合
端末Aがサーバと通信する場合はどのように通信が行なわれるのでしょうか?

A 回答 (4件)

端末Aからサーバに2000byteのデータを送信した場合


端末A→ルータ1:1500byte と 500 byte のパケット
ルータ1→ルータ2:1000byte と 500 byte と 500byte のパケット
ルータ2→サーバ:500byte と 500 byte と 500byte と 500 byte のパケット
になります。

この回答への補足

さっそくの回答ありがとうございます。
端末Aが2000Bデータを送信する場合、
1)端末AからTCPによって1500B・500Bに分割されたパケットがルータ1に届くとその先はMTUが1000Bなのでルータ1が1000B・ 500B・500Bに分割しておくり、さらにルータ2とサーバ間はMTUが500Bなのでルータ2が500B *4に分割して送る。

2)端末AはTCPによって1500B・500Bに分割されたパケットをルータ1に送る。しかしルータ1とルータ2間のMTUは1000BなのでICMP で宛て先到達不能のメッセージを端末Aに返す。端末AはTCPで1000B・1000Bに分割して再びルータ1に送る。ルータ1はそのパケットをルータ2 に転送する。しかし、ルータ2とサーバ間のMTUは500Bなのでルータ2は端末AにICMPエラーを返す。それを受け取った端末AはTCPで 500B*4に分割したパケットをサーバ宛に送信する。

このどちらかだと考えたのですが、
1)の方式に該当し、
TCPがネットワークで伝送できるサイズを判断してパケットを分割するのは端末Aがつながっている先のネットワークまでであってその先はルータが判断して分割を行なうと言うことでしょうか?

補足日時:2004/05/28 12:49
    • good
    • 0

#1の補足への回答です。



1)の方です。
おっしゃるとおりTCPは、直接つながっているネットワークのMTU長しか意識しません。

この回答への補足

shigureさん、
迅速な回答ありがとうございます。

>>おっしゃるとおりTCPは、直接つながっているネットワークのMTU長しか意識しません。

と言うのは先の例で言うと、
TCPは端末Aが属しているネットワークと隣接しているルータ1とルータ2の間のネットワークのMTUまで意識すると言うことでしょうか?

また、pingやftp、httpなどの通信を行ない、Etherealでパケットキャプチャーしてみたところ、IPヘッダーのFlagsの情報にDFフラグがたっているみたいなのですがこれはルータではパケット分割を行なっていないのでしょうか?
(RIPは0がたっていたのですがICMP、TCPともに1がたっていました。)
環境 OS Fedora Core 2
方法 Yahooなどに接続,他のネットワークにあるFTPサーバへ接続しそれを端末でパケットキャプチャー

質問ばかりですみませんが宜しくお願いいたします。

補足日時:2004/05/28 13:50
    • good
    • 0

#2の補足への回答です。



>TCPは端末Aが属しているネットワークと隣接しているルータ1とルータ2の間のネットワークのMTUまで意識すると言うことでしょうか?

いえ、そうではなく、「送信しようとするネットワークのMTU長しか意識しない」です。
端末AのTCP/IPはルータ1とのネットワークしか意識しません。

それから、 DFフラグが立っているパケットは分割禁止なので、分割されません。

この回答への補足

回答ありがとうございます。

>>送信しようとするネットワークのMTU長しか意識しない」です。
端末AのTCP/IPはルータ1とのネットワークしか意識しません。

意味が分りました。端末Aが属しているネットワークのMTUしかTCPは意識しないと言うことですね。

>>それから、 DFフラグが立っているパケットは分割禁止なので、分割されません。

通信方法は、shigureさんの説明を聞いて
ルータで適切なサイズにパケットを分割して目的地まで伝送すると言うことは分かったのですが、
実際にキャプチャーしてみると、Http,Ftpなどは全てのパケットでDFのフラグが立っており、一部のプロトコル(ICMPの一部のメッセージやRIPv1)しかDFが立っていないみたいなのですが、これは通信の方法としてはルータで分割するようになっているが、一般的な通信ではほとんどルータではパケットを分割しないで行なうと言うことでしょうか?
イーサネットが大部分で普及してるから!?とか考えてみたのですが・・

度々、すみません。宜しくお願いいたします。

補足日時:2004/05/28 15:41
    • good
    • 0

そうですね、今はほとんどイーサネットでMTU長は1500byteですから。



ルータは、分割すると転送性能が落ちますので、あらかじめ分割しないようにしているのだと思います。
    • good
    • 0
この回答へのお礼

shigureさん、回答ありがとうございました。
パケット転送に関する疑問を解決することができました。

お礼日時:2004/05/28 21:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!