web-dev-qa-db-ja.com

TCPパケットの最小サイズは何ですか

ここに投稿:

http://blogs.Adobe.com/dreamweaver/2011/02/optimal-css-tiled-background-image-size.html

「ブラウザーが実行できる最小のダウンロードは1Kバイトです。」

これは、ネットワーク上のパケットの最小サイズが原因ですか?そうでない場合、これの理由は何ですか(本当にそうである場合)?

11
Andy Hume

Packetは、トランスミッションのさまざまな要素を参照するために誤用されることがあるので、ここではあいまいな用語です。データがどのようにまとめられているかを見てみましょう。つまり、私が何を意味しているのかがわかります。うまくいけば、望んだ答えが得られます。


1バイトのデータを送信しているとしましょう1TCP/IPモデル でインターネット経由。

dataはアプリケーションレベルで始まり、下位レベルのヘッダーにラップして、渡せるようにする必要があります。

まず、データがTCPセグメントでラップされ、20バイトのヘッダーが追加されます(最小サイズは21バイトになりました)。
これにより、トランスポートレベルになります。

次に、これはIPパケットでラップされ、20バイトの別のヘッダーが追加されます(最小サイズは41バイトになりました)。
今、私たちはインターネットのレベルにいます。
このラッピングは、新しいルーターがデータを新しいサブネットに転送するたびに変更されることに注意してください。

これは、あるタイプのリンクframeでラップされています-ヘッダーとフッターのサイズは、タイプに応じて、使用されるフレームのタイプによって異なります使用されているリンクの。
これはリンクレベルです。
このラッピングは、2つのエンティティ間で送信される場合、ユニットが変更されるたびに変更されます。

最後に、物理的な送信(ケーブルを介した電気信号、電波など)です。

Wikipediaから入手できる有益な画像をいくつか示します TCP/IPモデル 何が起こっているのかを視覚的に説明するのに役立ちます:


Data encapsulation using UDP/IP


Connection via layers in the TCP/IP model


1. 0バイトを送信できる可能性があると思いますが、まだ確認していません。実際、1バイトも許可されているかどうかは確認していませんが、ちょっと。

20
DMA57361

不正解です。ダウンロードの最小サイズはありません。 Webサーバーに小さなファイルを作成し、wiresharkを使用してそのファイルをダウンロードするときにネットワークトラフィックを監視することで、これを確認できます。

標準イーサネットパケットの最小サイズは64バイトです。

4
shapr

一見すると、引用元のブログ投稿は正しくありません。 HTTPの「最小ダウンロードサイズ」はありません。 (そして、最小パケットサイズに関するあなたの理論も間違っています。)

しかし、これには一粒の真実があります。つまり、ダウンロードするファイルのサイズが十分に小さい場合、HTTP応答メッセージ(ファイルとHTTP応答ヘッダーで構成される)は単一のネットワークパケットに収まります。その場合、ブラウザは応答を送信するのに2つ以上のパケットを必要とする場合よりも速くファイルを取得する可能性があります。

(応答に1つのパケットが含まれていると、パケットがドロップされて再送信する必要が生じる可能性は低くなり、TCP/IPフロー制御ウィンドウがパケット確認のために余分な往復遅延を追加しない可能性が高くなります。 )

送受信されるパケットの一般的な最大サイズ(MTU)は、イーサネットの場合は1500バイトです。 IPとTCPオーバーヘッド、および一般的なHTTP応答ヘッダーのサイズを考慮に入れると、応答の最初のパケットでファイルデータ用に〜1Kを残すことができます。したがって、ブロガーのコメントの真実。

3
Stephen C

それはあなたが考えるよりも悪いです。

ページの読み込みが遅いのは、ブラウザが1x1ピクセルを800000回レンダリングするときに問題があるためです(たとえば、ブラウザウィンドウが1000x800に設定されている場合)。何年も前、おそらく1999年に、16x16をタイリングの「最速」x最小として規定した記事をどこかで読みました。もちろん、現在はレンダリングが異なる場合があります。

ブログの投稿を読んだ場合、苦情は実際にはページの読み込みが遅いことです。ダウンロードが遅くない。それは興味深い議論でしたが、パケットとは何の関係もありません。

したがって、おそらく質問を書き直す必要があります。

2
mockman