IPフラグメンテーションについて。


パスMTUに応じてTCP/IPがIPパケットを分割するということですが、それ以前にIPパケットの最大サイズは64kbytesだと思います。
MTUする前の、TCP/IPに来る前に既にアプリケーション側でパケットを64k以下に分割しているのでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/30 00:07:40
  • 終了:2011/07/07 00:10:02

回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4596ベストアンサー獲得回数19352011/06/30 00:42:57

ポイント50pt

MTUする前の、TCP/IPに来る前に既にアプリケーション側でパケットを64k以下に分割しているのでしょうか?

いや、分割しなくてはいけない、という決まりはありません。

でも、分割してはいけない、という決まりもありません。

IP層を直接意識するようなプログラムじゃないかぎり、どのように送信されるかを意識しません。


TCP だと、ウィンドウ分割による断片化もあるので、send は一回でも、

receive は残りが無くなるまで繰り返す、というのが socket のプログラムの常識です。

id:saijyoh_739 No.2

saijyoh_739回答回数113ベストアンサー獲得回数102011/06/30 16:16:23

ポイント50pt

> パスMTUに応じてTCP/IPがIPパケットを分割するということですが、それ以前にIPパケットの最大サイズは64kbytesだと思います。

通常EthernetのMTUは1500byteです。

パスMTU(? Path MTU Discoveryの事ですよね)では通信相手までのネットワーク経路中にある最小MTUに合わせて調整します。

http://www.infraexpert.com/info/5.2adsl.htm


> MTUする前の、TCP/IPに来る前に既にアプリケーション側でパケットを64k以下に分割しているのでしょうか?

通常アプリケーションは関係しません。

システム(カーネル)中に組み込まれるネットワークドライバが行います。

最初、自分の都合で大きなパケットを送信しますが、エラーが返ってくるのでネットワークに適したパケットサイズに調整して送り直します。(上記URL参照)

※Path MTU Discovery(RFC1191)使わない通常の通信では、パケットが分割禁止されてないと思いますから、多き過ぎる場面毎(次のネットワークのMTUが小さければ)に分割されます。

※途中パケットフィルタでICMPを無条件で破棄する設定などされている部分があれば使うと通信できない場合もあります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません