Qual è la dimensione minima di un pacchetto TCP


11

Un post qui:

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

afferma che "Il download più piccolo che i browser possono fare è 1K byte".

Ciò è dovuto alla dimensione minima di un pacchetto attraverso la rete? In caso contrario, qual è la ragione di ciò (se è davvero vero)?


2
Attenersi alle condizioni standard se si desidera evitare confusione. "Pacchetto" è un termine a livello IP. Dici "pacchetto IP", né "pacchetto TCP", né "pacchetto Ethernet".
vtest

La frase che citi ("Il download più piccolo che i browser possono fare è 1K byte") non è certamente vera - non esiste una dimensione minima per il download; e mentre v'è una minima dimensione del pacchetto TCP / IP (come spiegato da @ DMA57361), non è certamente 1KB.
Piskvor lasciò l'edificio il

Risposte:


20

Pacchetto è un termine ambiguo qui perché a volte viene utilizzato in modo improprio per fare riferimento a diversi elementi per la trasmissione. Vediamo in cosa sono raccolti i tuoi dati e vedrai cosa intendo, e spero di ottenere la risposta che volevi:


Supponiamo che tu stia inviando 1 byte di dati 1 su Internet, sul modello TCP / IP .

I dati iniziano a livello di applicazione e devono essere racchiusi in intestazioni per i livelli inferiori in modo che possano essere passati.

Innanzitutto i dati vengono racchiusi in un segmento TCP , che aggiunge un'intestazione di 20 byte (dimensione minima ora 21 byte).
Questo ci mette a livello di trasporto.

Questo viene quindi racchiuso in un pacchetto IP , che aggiunge un'altra intestazione di 20 byte (dimensione minima ora 41 byte).
Ora siamo a livello di Internet.
Si noti che questo wrapping viene modificato ogni volta che un nuovo router inoltra i dati a una nuova sottorete.

Questo è racchiuso in un frame di collegamento di un tipo - di cui l'intestazione e la dimensione del piè di pagina variano a seconda del tipo di frame utilizzato, che dipende dal tipo di link utilizzato.
Questo è a livello di collegamento.
Questo involucro viene cambiato ogni volta che l'unità viene trasmessa tra due entità.

Infine c'è la trasmissione fisica (ad es. Segnali elettrici lungo un cavo, onde radio, ecc.).

Ecco alcune immagini informative disponibili dalla pagina del modello TCP / IP di Wikipedia che spiegano visivamente cosa sta succedendo:


Incapsulamento dei dati tramite UDP / IP


Connessione tramite layer nel modello TCP / IP


1. Suppongo che potresti essere in grado di inviare 0 byte ... ma non l'ho verificato. In realtà non ho verificato se sia consentito 1 byte, ma ehi.


4

Non è corretto, non esiste una dimensione minima per un download. Puoi verificarlo creando un piccolo file sul tuo server web e usando WireShark per guardare il traffico di rete quando scarichi quel file.

La dimensione minima di un pacchetto Ethernet standard è 64 byte.


3

A prima vista, il post sul blog da cui stai citando non è corretto. Non esiste una "dimensione minima di download" per HTTP. (E anche la tua teoria sulle dimensioni minime dei pacchetti è errata.)

Tuttavia, c'è un granello di verità in questo. E cioè che se la dimensione del file che stai scaricando è abbastanza piccola, il messaggio di risposta HTTP (costituito dal file e dalle intestazioni di risposta HTTP) si adatterà in un singolo pacchetto di rete. In tal caso, è probabile che il browser ottenga il file più velocemente rispetto a quando sono necessari due o più pacchetti per inviare la risposta.

(Con un pacchetto nella risposta, ci sono meno possibilità che un pacchetto venga eliminato e debba essere inviato di nuovo, e una maggiore possibilità che la finestra di controllo del flusso TCP / IP non aggiunga ulteriori ritardi di andata e ritorno per il riconoscimento dei pacchetti. )

La dimensione massima tipica di un pacchetto inviato / ricevuto (MTU) è di 1500 byte per Ethernet. Quando si tiene conto delle spese generali IP e TCP e delle dimensioni di una tipica intestazione di risposta HTTP, ciò potrebbe lasciare ~ 1K lasciato per i dati del file nel primo pacchetto di una risposta. Da qui il granello della verità nel commento del blogger.


Sarebbe corretto - se si stesse scaricando solo quell'immagine, e non, diciamo, una pagina web e le risorse associate (immagini, JS, CSS) - nel qual caso si utilizzano comunque keepalive e pipeline per più risorse, quindi TCP le spese generali e le dimensioni dei pacchetti sono molto meno rilevanti. Hai ragione in questo caso particolare (scaricando solo un'immagine), ma con che frequenza succede? Sembra che il blogger sia bloccato nel 1999, dove ogni richiesta HTTP aveva bisogno della propria connessione TCP.
Piskvor lasciò l'edificio l'

2

È peggio di quanto pensi.

Il caricamento lento della pagina è dovuto al fatto che il browser sta riscontrando problemi nel rendering del pixel 1x1 800000 volte (ad es. Per una finestra del browser impostata su 1000x800). Molti anni fa, forse nel 1999, ho letto da qualche parte un articolo che prescriveva il 16x16 come il "più veloce" x il più piccolo per la piastrellatura. Naturalmente, il rendering potrebbe essere diverso ora.

Se leggi il post sul blog, il reclamo riguarda in realtà il caricamento lento della pagina. Download non lento. Non ha nulla a che fare con i pacchetti sebbene sia stata una discussione interessante.

Quindi forse la domanda dovrebbe essere riformulata.


In tal caso, potrei aver frainteso del tutto il post del blog - ho pensato che il nocciolo sia in questa frase: "Il download più piccolo che i browser possono fare è 1K byte [e quindi, regolare la dimensione dell'immagine su 1K]", che Ho letto come "... perché stai comunque trasmettendo 1K byte, indipendentemente dal fatto che la tua immagine sia di soli 50 byte" (che è una ovvia assurdità). Il problema qui potrebbe essere " size" sia per le dimensioni dei pixel che per il conteggio dei byte, e la loro fusione. La tua spiegazione ha senso, ma è irrilevante per il conteggio dei byte di immagine (contrariamente a quanto dice il blog).
Piskvor ha lasciato l'edificio il

Dopo aver riletto il post sul blog, sembra deviare dal corso poiché il terzo paragrafo è incoerente.
Mockman,

Dopo aver riletto il tuo commento ... Il suo scopo è quello di affrontare il problema sollevato nel paragrafo iniziale. Tuttavia, attribuisce erroneamente questo problema alle dimensioni dei pacchetti e spende il resto del post su di esso. La mia risposta ha spiegato il motivo del lento caricamento della pagina. Come altri hanno sottolineato, le caratteristiche dei pacchetti non sono la causa.
Mockman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.