Pacchetti TCP/UDP

di il
32 risposte

Pacchetti TCP/UDP

Ciao a tutti,
sto affrontando da un po' di tempo l'argomento delle reti riguardo TCP/UDP e mi sono bloccato a un punto a cui non riesco a dare una risposta anche studiando la teoria di questi due protocolli:

praticamente non riesco a capire come mai usando TCP non ho limiti di lunghezza per l'invio dei dati,mentre invece usando UDP posso solo inviare dati grandi al massimo 6000 byte(circa).

Vi ringrazio per l'attenzione

32 Risposte

  • Re: Pacchetti TCP/UDP

    Ciao dna_programmer,
    sulla massima dimensione dei pacchetti c' è un po di confusione.

    Teoricamente il limite massimo della dimensione del pacchetto è 65507 (65535-28), 28 è la dimensione dell' header UDP piu quello IP.

    Questo è il limite massimo imposto dal protocollo, ma alcuni sistemi operativi impongono delle limitazioni.
    Se la comunicazione avviene tra due pc Windows puoi usare 65507 byte, in altri casi 8192, oppure 1500.
    Se la cominicazione avviene in internet il limite sicuro è di 512 byte.

    Comunque la tua domanda non riguarda la dimensione effettiva ma perchè c' è questo limite. Il TCP è un protocollo che gestisce un flusso di pacchetti, ne verifica la trasmissione ed eventualmente ritrasmette. L' UDP è un protocollo veloce, gestisce un solo pacchetto, e non ne garantisce la ricezione. Il limite è quindi imposto dal fatto che si trasmette un solo pacchetto.
  • Re: Pacchetti TCP/UDP

    Ciao barba,
    ho più o meno capito,una cosa sola: se l'UDP manda un solo pacchetto alla volta non avviene la frammentazione dei pacchetti quando ques'ultimo attraversa varie reti?
  • Re: Pacchetti TCP/UDP

    In teoria si in pratica no. Ovvero non c' è una regola. I vari nodi della rete possono frammentare e ricostruire il tuo pacchetto oppure segnalare errore dicendo che il tuo pacchetto è troppo grande (questo lo farebbe un nodo Linux generando l' errore EMSGSIZE).

    È per questo che ti dicevo che in internet la dimensione sicura per i pacchetti UDP è di 512 byte. In una rete locale dove conosci che nodi ci sono puoi usare pacchetti più grandi.
  • Re: Pacchetti TCP/UDP

    Se ti interessa in Linux è possibile abilitare la frammentazione mettendo a off l' opzione socket IP_MTU_DISCOVER
  • Re: Pacchetti TCP/UDP

    Scusate forse mi sto perdendo qualcosa riguardo l'invio dei pacchetti,gentilmente ,se non chiedo troppo,mi potreste fare una piccola panoramica su quello che succede,non tutto sennò diventerebbe impossibile ma solo le cose principali,quando viene inviato e ricevuto un pacchetto.

    Vi ringrazio molto per la vostra disponibilità
  • Re: Pacchetti TCP/UDP

    Ma figurati, parlare con te è sempre è un piacere, ogni volta imparo qualcosa di nuovo.
    Però questa domanda non ha una risposta veloce, potrebbero scorrere fiumi d' inchiostro.
    Comincio col farti una domanda, sai cosa è la pila OSI?
  • Re: Pacchetti TCP/UDP

    Si quello si
  • Re: Pacchetti TCP/UDP

    Bon, allora la salto.
    Quindi sai che quando viene trasmesso un pacchetto è il protocollo dello strato sottostante che si occupa di gestirlo, eventualmente spezzandolo e ricomponendolo, a cascata fino agli stati più bassi, quelli fisici.

    Ora le specifiche per l' implementazione dei vari protocolli a volte sono elastiche, per cui ad esempio il modo di gestire (spezzandolo o meno) un pacchetto UPD può essere diverso da Linux a Window.

    In internet attraversi nodi Linux, Windows ecc, per cui non sai bene cosa accadrà al tuo pacchetto, per cui nel caso di un pacchetto UDP ti confiene farlo di una dimensione tale da non aver problemi (512 byte).
  • Re: Pacchetti TCP/UDP

    Ok,invece per quanto riguarda la frammentazione come funziona il tutto?cioè mi spiego meglio: quando invio un pacchetto è il sistema operativo che si occupa di frammentare il pacchetto oppure il PC lo invia intero al router e poi quest'ultimo si occupa della frammentazione?
  • Re: Pacchetti TCP/UDP

    Ok, non me la cavo facilmente! Ora ti preparo una risposta più precisa, ma mi serve tempo, dopo cena mi metto al lavoro.
  • Re: Pacchetti TCP/UDP

    Ok grazie mille barba,a dopo
  • Re: Pacchetti TCP/UDP

    Sarò breve,

    Comunicazione tra router:

    Cominciamo dalla comunicazione tra router, i router connettono reti diverse e comunicano tra di loro scambiandosi pacchetti IP, il fatto che questi pacchetti IP trasportino protocolli superiori a questo livello non ha importanza, potrebbero essere parti di una trasmissione TCP, oppure UDP (che a loro volta sono parti di una comunicazione HTTP o altro ancora), a questo livello sono solo pacchetti IP.

    Come arrivano e come partono questi pacchetti? attraverso un protocollo di livello piu basso, ad esempio un router potrebbero ricevere su un cavo ethernet e trasmettere in Wi-Fi, oppure su doppino telefonico. A seconda del collegamento fisico di adopereranno protocolli specifici per trasportare i pacchetti IP.

    Ad esempio al router arrivamo dei frame ethernet, vengono ricomposti in un pacchetto IP, viene letto l' indirizzo di destinazione vengono convertiti in un altro protocollo e inviati magari attraverso il WI-Fi.

    Protocolli di alto livello:

    Ora partiamo dall' alto, partiamo da una applicazione che invia dati secondo un certo protocollo, ad esempio HTTP (un broswer) o FTP, entrambi questi protocolli usano il TCP come protocollo di trasporto, quindi avviene la prima trasformazione dei dati (qui siamo ancora a livello software all' interno del pc). Il TCP è un protocollo basato sulla connessione che prevede un certo dialogo con la destinazione per realizzare il quale si usano pacchetti IP, quindi avviene la seconda trasformazione (è sempre del software all' interno del pc che fa il lavoro) e a questo siamo arrivati ai driver della scheda ethernet, la quale provvede poi a comunicare con i router attraverso un canale fisico.

    Caso specifico di un pacchetto UDP:

    Una applicazione decide di mandare un pacchetto UDP, questo pacchetto UDP viene inscatolato dentro un pacchetto IP (teoricamente un pacchetto IP potrebbe essere grande 65535) a questo punto potremmo mandarlo ad un altro processo all' interno del nostro pc (e qui non ci sono problemi) oppure spedirlo in rete. Se deve andare in rete il pacchetto IP deve uscire dalla nostra scheda ethernet sotto forma di frame ethernet (la cui lunghezza massima è 1500 byte) se il pacchetto è piccolo nessun problema, avremo un pacchetto UDP dentro un pacchetto IP, dentro un frame ethernet, se è più grande a seconda dei sistemi operativi può essere o rifiutato o spezzettato in più frame ethernet, cosa problematica e poco efficiente.

    Riassumendo il nostro pacchetto UDP viaggerà all' interno di un singolo pacchetto IP (il quale occasionalemente potrebbe essere spezzettato).

    Ovviamente il discorso è più complicato di quello che ho scritto, si potrebbe essere molto più precisi, ma per chiarire i concetti a grandi linee dovrebbe andare bene.

    Buonanotte.
  • Re: Pacchetti TCP/UDP

    Ciao barba,

    scusa se ti rispondo tardi.
    allora alla tua risposta ora ho una panoramica molto più chiara e ho due domande a riguardo:

    1)tu hai detto che il pacchetto UDP può essere frammentato;da quello che so però il protocollo UDP non ha un sistema di ordinamento pacchetti,quindi in caso di frammentazione come fa a funzionare il tutto visto che un pacchetto,magari inviato dopo,può arrivare per primo?

    2)Da quello che so l'indirizzo MAC è collegato al frame ethernet; ecco ma se ad esempio la comunicazione avviene via Wi-Fi i dati nella stessa rete vengono scambiati sempre via MAC oppure mediante altro indirizzo?
  • Re: Pacchetti TCP/UDP

    Ciao dna_programmer,

    È il protocollo èthernet che quando trasferisce un pacchetto decide se frammentarlo o meno e poi ricostruirlo dall' altra parte, senza preoccuparsi se al suo interno c' è un pacchetto UDP. Dopo che il pacchetto è stato ricostruito si può capire che era un pacchetto UDP e darlo in gestione al protocollo superiore che se lo ritrova tutto intero.

    Sul wi-fi non conosco i dettagli se ti interessa mi informo, comunque all' arrivo il MAC di partenza generalmente è perso
Devi accedere o registrarti per scrivere nel forum
32 risposte