Transport layer - English version of guide to TCP/IP protocol and basic internetworking Livello transport - Versione italiana della guida al protocollo TCP/IP, modello OSI e tcpip models

Livello Transport - Transport layer



Ruoli del livello Transport

Scopo del Transport Layer

Il livello transport prevede la segmentazione e il controllo dei dati necessari per riassemblare ogni parte nei vari flussi di comunicazione. Le sue principali responsabilità per realizzare ciò sono:

? Monitoraggio delle singole comunicazioni tra le applicazioni da host sorgente a destinazione
? La segmentazione dei dati e la gestione di ogni parte
? Riassemblaggio dei segmenti in flussi di dati per applicazioni
? Individuazione delle diverse applicazioni

Il monitoraggio delle singole conversazioni

Qualsiasi host può avere molteplici applicazioni che sono comunicanti attraverso la rete. Ciascuna di queste domande dovrà comunicare con una o più applicazioni su host remoto. E' responsabilità del transport layer mantenere più flussi di comunicazione tra queste applicazioni.

Segmentazione dei dati

Come ogni applicazione crea un flusso di dati che devono essere inviati ad applicazioni remote, questi dati devono essere pronti ad essere inviati attraverso il mezzo di informazione in pezzi gestibili. I protocolli a livello transport descrivono i servizi che segmentano quersti dati dal livello di applicazione. Ciò include l' incapsulamento richiesto a ogni pezzo di dati. Ogni pezzo di dati applicazioni richiedono un'intestazione, che è aggiunto al livello di trasporto per indicare a quale comunicazione è associato.

Riassemblamento dei segmenti

All'host di ricezione, ogni pezzo di dati possono essere indirizzati all'applicazione appropriata. Inoltre, questi singoli pezzi di dati devono essere ricostruiti in un flusso di dati che possono essere utili a livello applicazione. I protocolli del transport layer descrivono il modo in cui le informazioni dell'intestazione del livello di trasporto vengono utilizzate per rimontare i dati in pezzi di flussi per essere passati al livello applicazione .

Identificare le applicazioni-

Per passare i flussi di dati per il buon applicazioni, il livello di trasporto deve identificare il target. Per fare questo, il livello di trasporto assegna una domanda un identificatore. I protocolli TCP / IP identificativo di chiamata presente un numero di porta. Ogni software di processo che ha bisogno di accedere alla rete è assegnato un numero di porta unico in tale host. Questo numero di porta è utilizzata nel transport layer intestazione per indicare a quale applicazione che parte dei dati è associato. Il livello transport è il legame tra l'applicazione e il livello di livello inferiore che sono responsabili della rete di trasmissione. Questo strato accetta dati provenienti da diverse conversazioni e passa in giù per i livelli più bassi come gestibile pezzi che possono essere eventualmente multiplexing oltre i mezzi di informazione. Applicazioni non hanno bisogno di conoscere l'dettagli operativi di rete in uso. Le domande di generare dati che vengono inviati da una domanda ad un altro, senza tener conto del tipo di host di destinazione, del tipo di supporto sul quale i dati devono viaggiare, il cammino percorso dai dati, la congestione del traffico su un link, o le dimensioni del rete. Inoltre, i livelli più bassi non sono a conoscenza che vi sono più applicazioni l'invio di dati sulla rete. La loro responsabilità è di fornire i dati alla periferica appropriata. Il livello transport tipi poi questi pezzi prima di emettere la loro corretta applicazione.

Variazione dei requisiti di dati

Perché diverse applicazioni hanno esigenze diverse, ci sono più protocolli di livello di trasporto. Per alcune applicazioni, i segmenti devono arrivare in una sequenza molto specifici, al fine di essere trattati con successo. In alcuni casi, tutti i dati devono essere ricevute per uno dei che sia d'uso. In altri casi, la domanda può tollerare una perdita di dati durante la trasmissione in rete. Oggi in reti convergenti, applicazioni con molto diverse esigenze di trasporto può essere comunicare sulla stessa rete. I diversi protocolli del livello transport sono diversi dispositivi di norme che consentano di gestire questi dati diverse esigenze. Alcuni protocolli di fornire solo le funzioni di base per fornire in modo efficiente i dati tra i pezzi applicazioni adeguate. Questi tipi di protocolli sono utili per le domande i cui dati sono sensibili ai ritardi. Transport Layer altri protocolli di descrivere i processi che forniscono ulteriori funzionalità, come ad esempio garantire la consegna affidabile tra le applicazioni. Mentre queste funzioni supplementari fornire più robusta di comunicazione a livello di trasporto tra le applicazioni, sono ulteriori spese generali e di rendere più grandi esigenze della rete.

abilitare le applicazioni nei dispositivi a comunicare udp datagram



Separazione di comunicazioni multiple

Prendere in considerazione un computer collegato a una rete che è allo stesso tempo ricevere e inviare e-mail e messaggi istantanei, la visualizzazione di siti web, e conducendo una telefonata VoIP. Ognuna di queste applicazioni è l'invio e la ricezione dei dati attraverso la rete allo stesso tempo. Tuttavia, i dati dal telefono cellulare chiamata non è diretta al browser web, e il testo da un messaggio istantaneo non appare in una e-mail. Inoltre, gli utenti che richiedono una e-mail o pagina web completamente essere ricevuti e presentati per le informazioni che devono essere considerati utili. Leggeri ritardi sono considerati accettabili per garantire che le informazioni complete è ricevuto e presentato. Al contrario, di tanto in tanto piccole parti mancanti di una conversazione telefonica può essere considerata accettabile. Né si può dedurre l'audio mancante dal contesto della conversazione o chiedere l'altra persona a ripetere ciò che hanno detto. Ciò è ritenuto preferibile che i ritardi che deriverebbero da chiedere alla rete di gestire e di ricevere segmenti mancanti. In questo esempio, l'utente - non la rete - gestisce il resending o la sostituzione di informazioni mancanti.

tracciare le conversazioni

Come spiegato in un capitolo precedente, l'invio di alcuni tipi di dati - un video per esempio - in una rete come un completo flusso di comunicazione potrebbe impedire di altre comunicazioni che si verificano allo stesso tempo. E 'anche il recupero di errore e di ritrasmissione dei dati danneggiati difficile. Dividendo i dati in piccole parti, e l'invio di queste parti, dalla sorgente alla destinazione, consente diverse comunicazioni da interfogliati (multiplexing) sulla stessa rete. Segmentazione dei dati, in conformità a livello di trasporto protocolli, fornisce i mezzi per invio e ricezione dei dati durante l'esecuzione di più applicazioni contemporaneamente su un computer. Senza segmentazione, solo una domanda, il video streaming per esempio, sarebbe in grado di ricevere i dati. Che non si possono ricevere e-mail, chat via Instant Messenger, o visualizzare pagine web, mentre anche visualizzare il video. A transport layer, ogni particolare insieme di pezzi che scorre tra una fonte di domanda e una destinazione domanda è conosciuto come una conversazione. Per identificare ogni segmento di dati, il livello transport aggiunge il pezzo di un header contenente dati binari. Questa intestazione contiene i campi di bit. Si tratta di valori in questi campi che consentono di diversi protocolli di livello di trasporto per l'esecuzione di funzioni diverse.

segmentazione del transport layer

Controllo del Conversazioni

Funzioni primarie specificato da parte di tutti i protocolli di livello transport comprendono:

Segmentazione e Riassemblamento - La maggior parte delle reti hanno una limitazione della quantità di dati che possono essere incluse in un unico PDU. Il livello transport divide i dati in blocchi di dati che sono entità adeguata. Nel luogo di destinazione, il livello transport riassembla i dati prima di inviarlo alla destinazione applicazione o servizio.

Multiplexing delle conversazioni - Ci possono essere molte applicazioni o servizi in esecuzione su ogni host della rete. Ognuna di queste applicazioni o servizi è assegnato un indirizzo conosciuto come un porto in modo che il livello transport in grado di determinare con cui applicazione o il servizio dati è identificati. Oltre ad utilizzare le informazioni contenute nelle intestazioni, per le funzioni di base di dati di segmentazione e riassemblaggio, alcuni protocolli a livello di trasporto fornire:

? orientato alla connessione conversazioni
? consegna affidabile
? Consegna dei dati di ricostruzione
? Il controllo di flusso

servizi del livello transport

Stabilire una sessione

Il transport layer è in grado di fornire tale contesto l'orientamento mediante la creazione di una tra le sessioni di applicazioni. Queste connessioni preparare le applicazioni per comunicare gli uni con gli altri, prima di ogni dati vengono trasmessi. All'interno di queste sessioni, i dati di una comunicazione tra le due applicazioni possono essere gestiti da vicino.

Consegna affidabile
Per molte ragioni, è possibile che un pezzo di dati a essere danneggiati o persi completamente, in quanto viene trasmesso attraverso la rete. Il livello transport in grado di garantire che tutti i pezzi di raggiungere la loro destinazione tramite la presenza della fonte dispositivo di ritrasmissione di tutti i dati che si perde.

Stesso ordine di consegna

Perché le reti possono fornire più rotte che possono avere diversi tempi di trasmissione, i dati possono arrivare nell'ordine sbagliato. Di numerazione e la sequenza segmenti, il livello transport può garantire che questi segmenti sono riassemblati nel giusto ordine.

Controllo di flusso

Host di rete dispongono di risorse limitate, come ad esempio la memoria o la larghezza di banda. Transport Layer quando è consapevole del fatto che queste risorse sono overtaxed, alcuni protocolli può chiedere che l'invio di applicazione ridurre il tasso di flusso di dati. Questo viene fatto a livello di trasporto regolando la quantità di dati sorgente trasmette come un gruppo. Controllo di flusso in grado di prevenire la perdita dei segmenti della rete e di evitare la necessità di ritrasmissione.

servizi del transport layer

Il supporto alle comunicazioni affidabili

Ricorda che la funzione primaria del livello transport è quello di gestire l'applicazione dei dati per le conversazioni tra host. Tuttavia, diverse applicazioni sono diverse per i loro dati e, pertanto, i protocolli di trasporto diversi sono stati sviluppati per soddisfare queste esigenze. Un protocollo del transport layer può attuare un metodo affidabile per garantire la consegna dei dati. Nella messa in rete di termini, l'affidabilità significa garantire che ogni pezzo di dati che invia la fonte arriva a destinazione. A livello transport, alle tre operazioni di affidabilità sono:

? monitoraggio dei dati trasmessi
? riconoscendo dati ricevuti
? ritrasmettere qualsiasi unacknowledged dati

Ciò richiede i processi di livello transport della sorgente per tenere traccia di tutti i dati di pezzi di ogni conversazione e la ritrasmissione di uno qualsiasi dei dati che ha fatto non sono stati riconosciuti dalla destinazione. Il livello di trasporto del ricevente ospitante deve anche monitorare i dati come è ricevuto e riconoscere il ricevimento dei dati. Questi processi di affidabilità luogo generali aggiuntive sulle risorse di rete a causa di conferma, di monitoraggio e di ritrasmissione. A sostegno di tali operazioni di affidabilità, un maggiore controllo dei dati scambiati tra l'invio e la ricezione host. Questa informazione di controllo è contenuta nel Layer 4 intestazione. Questo crea un trade-off tra il valore di affidabilità e gli oneri che ne luoghi sulla rete. Sviluppatori di applicazioni devono scegliere quale tipo di protocollo di trasporto è opportuno basata sui requisiti delle loro applicazioni. A transport layer, vi sono protocolli che specificano metodi affidabili per entrambi, di consegna garantiti o più sforzo di consegna. Nel contesto del collegamento in rete, più sforzo di consegna è denominato inattendibili, perché non vi è il riconoscimento che i dati vengono ricevuti a destinazione.

Determinare il bisogno di Affidabilità

Applicazioni, ad esempio, basi di dati, pagine web ed e-mail, richiedono che tutti i dati inviati raggiungere la destinazione nella sua condizione originale, in modo che i dati per essere utile. Eventuali dati mancanti potrebbe causare una corruzione di comunicazione che è o incompleti o illeggibili. Pertanto, queste applicazioni sono progettate per l'utilizzo di un protocollo di transport layer che implementa l'affidabilità. L'ulteriore sovraccarico della rete sia ritenuto necessario per queste applicazioni. Altre applicazioni sono più tolleranti della perdita di piccole quantità di dati. Ad esempio, se uno o due segmenti di un flusso video non giungono, sarebbe solo creare una momentanea interruzione nel ruscello. Ciò può apparire come la distorsione a immagine, ma può anche non essere evidente per l'utente. Imponente sopra al fine di garantire l'affidabilità per questa applicazione potrebbe ridurre l'utilità della domanda. L'immagine in un video streaming sarà molto degradato se il dispositivo di destinazione ha dovuto conto per la perdita di dati e ritardare il ruscello in attesa che il suo arrivo. E 'meglio per rendere l'immagine migliore possibile, a tempo con i segmenti che arrivano rinunciare e affidabilità. Se l'affidabilità è un requisito per qualche ragione, queste applicazioni possono fornire controllo di errore e le richieste di ritrasmissione.

protocolli del livello transport

TCP e UDP

I due più comuni protocolli di livello di trasporto del protocollo TCP / IP suite sono Transmission Control Protocol (TCP) e User Datagram Protocol (UDP). Gestire entrambi i protocolli di comunicazione di più applicazioni. Le differenze tra i due sono le funzioni specifiche che ogni protocollo implementa.

User Datagram Protocol (UDP)

UDP è un semplice, protocollo senza connessione, descritto nella RFC 768. Essa ha il vantaggio di fornire un basso overhead per la fornitura di dati. I pezzi di comunicazione in UDP sono chiamati datagrammi. Questi datagrammi vengono inviati come "best effort" di questo protocollo Transport Layer.
Le applicazioni che utilizzano UDP comprendono: Domain Name System (DNS), Video Streaming, Voice over IP (VoIP).

Transmission Control Protocol (TCP)

TCP è un protocollo orientato alla connessione, descritto nella RFC 793. TCP generali aggiuntive sostenute per ottenere funzioni. Funzioni supplementari specificate dal protocollo TCP sono dello stesso ordine di consegna, consegna affidabile, e il controllo di flusso. Ogni segmento TCP dispone di 20 byte di overhead nella intestazione di incapsulare l'applicazione strato di dati, mentre ogni segmento UDP ha solo 8 byte di overhead. Vedere la figura per un confronto.
Le applicazioni che utilizzano il protocollo TCP sono: Web Browser, E-mail, trasferimenti di file

testata segmento TCP e datagramma UDP

Indirizzamento delle porte

Individuare le conversazioni

Prendere in considerazione la precedente esempio di un computer contemporaneamente ricevere e inviare e-mail, messaggi istantanei, pagine web, VoIP e una telefonata. TCP e UDP servizi basati su tenere traccia delle varie applicazioni che sono comunicanti. Per differenziare i segmenti e datagrammi per ciascuna applicazione, sia il protocollo TCP e UDP sono campi che possono identificare in queste applicazioni. Questi identificatori unici sono i numeri di porta. Nella intestazione di ciascun segmento o datagramma, vi è una fonte e la destinazione porto. La fonte numero di porta è il numero per il presente comunicazione connessi con l'applicazione originari in locale ospitante. La destinazione numero di porta è il numero per il presente comunicazione connessi con l'applicazione di destinazione della macchina remota. Numeri di porta sono assegnati in diversi modi, a seconda se il messaggio è una richiesta o una risposta. Mentre processi server hanno numeri di porta statica loro assegnati, i clienti scegliere dinamicamente un numero di porta per ogni conversazione. Quando un'applicazione client invia una richiesta a un server domanda, la porta di destinazione contenute nella intestazione è il numero di porta che viene assegnato al servizio demone in esecuzione sulla macchina remota. Il software client deve sapere che cosa il numero di porta è associata con il processo server sulla macchina remota. Questa destinazione numero di porta è configurata, sia per impostazione predefinita o manualmente. Per esempio, quando un browser web applicazione rende una richiesta a un server Web, il browser utilizza il protocollo TCP e il numero di porta 80 se non diversamente specificato. Questo perché la porta TCP 80 è la porta di default assegnato il web-servizio applicazioni. Molti comuni hanno applicazioni porta predefinita incarichi. La porta di origine in un segmento o datagramma intestazione di un cliente richiesta è generata in modo casuale. Fintanto che non sia in conflitto con altri porti in uso nel sistema, il cliente può scegliere qualsiasi numero di porta. Questo numero di porta agisce come un indirizzo di ritorno per la richiesta di applicazione. Il livello di trasporto tiene traccia di questa porta e l'applicazione che ha avviato la richiesta in modo che quando una risposta viene restituito, può essere trasmesso alla corretta applicazione. La richiesta di applicazione il numero di porta viene utilizzato come destinazione il numero di porta nella risposta di ritorno dal server. La combinazione dei Transport Layer numero di porta e il livello di rete IP assegnato a host identifica univocamente un particolare processo in esecuzione su un host specifico dispositivo. Questa combinazione è chiamato un socket. Occasionalmente, si possono trovare i termini numero di porta e socket usati in modo intercambiabile. Nel contesto di questo corso, il termine socket si riferisce solo ai combinazione unica di indirizzo IP e il numero di porta. Una coppia di socket, costituito l'origine e la destinazione degli indirizzi IP e numeri di porta, è anche unica e identifica la conversazione tra i due host. Per esempio, una pagina Web HTTP richiesta di essere inviato a un server web (porta 80) in esecuzione su un host con un Layer 3 indirizzo IPv4 di 192.168.1.20 sarebbe destinata a 192.168.1.20:80 presa di corrente. Se il browser chiede la pagina web è in esecuzione su host 192.168.100.48 e dinamico numero di porta assegnati al browser è 49152, la presa per la pagina web sarebbe 192.168.100.48:49152.

indirizzamento di porta

Internet Assigned Numbers Authority (IANA) assegna numeri di porta. IANA è un organismo di normalizzazione che è responsabile per l'assegnazione dei vari standard di indirizzamento.

Ci sono diversi tipi di numeri di porta:

Well Known Ports (numeri da 0 a 1023) - Questi numeri sono riservati per i servizi e le applicazioni. Essi sono comunemente utilizzati per applicazioni come HTTP (server web) POP3/SMTP (e-mail server) e Telnet. Con la definizione di queste ben note porte per applicazioni server, applicazioni client può essere programmato per richiesta di una connessione a che porta specifica e la sua associata servizio.

Registered Ports (numeri 1024 a 49151) - Questi numeri di porta sono assegnati a utente processi o applicazioni. Questi processi sono in primo luogo alle singole domande che un utente ha scelto di installare comune piuttosto che le applicazioni che riceverà una porta ben nota. Quando non è utilizzato per un server di risorse, queste porte possono anche essere utilizzati dinamicamente selezionati da un cliente come sua fonte porto.

Dynamic or Private Ports (numeri 49152 e 65535) - Noto anche come porte effimere, queste sono di solito assegnati dinamicamente alle applicazioni client quando si inizia una connessione. Non è molto comune per un client di connettersi a un servizio utilizzando un dinamico o private Porta (anche se alcuni peer-to-peer file programmi di condivisione di fare).

Utilizzando sia il protocollo TCP e UDP

Alcune applicazioni possono utilizzare sia il protocollo TCP e UDP. Ad esempio, il basso overhead di UDP DNS consente di servire molte richieste dei client molto rapidamente. Talvolta, tuttavia, inviando le informazioni richieste possono richiedere l'affidabilità del protocollo TCP. In questo caso, il ben noto il numero di porta del 53 è utilizzato da entrambi i protocolli con questo servizio.

Links

Un elenco di numeri di porta sono disponibili all'indirizzo http://www.iana.org/assignments/port-numbers.

range numeri di porta

Talvolta è necessario conoscere che attiva le connessioni TCP sono aperte e in esecuzione su un host di rete. Netstat è un importante programma di utilità di rete che può essere usato per verificare tali connessioni. Netstat elenca il protocollo in uso, l'indirizzo locale e il numero di porta, l'indirizzo estera e il numero di porta, e lo stato della connessione. Inspiegabile connessioni TCP possono rappresentare una grave minaccia per la sicurezza. Questo è quanto sono in grado di indicare che qualcosa o qualcuno è collegato al locale. Inoltre, non necessario, le connessioni TCP in grado di consumare preziose risorse di sistema quindi il rallentamento delle prestazioni di accoglienza. Netstat dovrebbero essere utilizzati per esaminare le connessioni aperte su un host quando le prestazioni sembra essere compromessa. Molte utili opzioni sono disponibili per il comando netstat.

output di netstat

Segmentazione e Riassemblamento - Divide and Conquer

Un capitolo precedente ha spiegato come sono costruiti PDUs di passare i dati da una domanda attraverso i vari protocolli di creare una distribuzione che viene poi trasmesso sul mezzo. Al host di destinazione, questo processo è invertito fino a quando i dati possono essere trasmessi fino a domanda. Alcune applicazioni trasmettere grandi quantità di dati - in alcuni casi, molti gigabyte. Non sarebbe pratico di inviare tutti i dati di questo in un grande pezzo. Nessun altro traffico di rete potrebbe essere trasmessi i dati, mentre questo è stato inviato. Una grande parte dei dati potrebbe richiedere minuti o anche ore di tempo per inviare. Inoltre, se ci sono stati degli errori, l'intero file di dati dovrebbero essere persi o nuovamente. I dispositivi di rete non avrebbe memoria buffer di grandi dimensioni sufficienti per contenere questo molto più dati durante la trasmissione o ricevuto. Il limite varia a seconda della tecnologia di rete e supporto fisico specifico di essere in uso.

Dividendo i dati in entrambi i pezzi garantisce che i dati siano trasmessi entro i limiti dei mezzi di informazione e che i dati provenienti da diverse applicazioni possono essere multiplexing a ai mezzi di informazione.

TCP e UDP di gestire la segmentazione diverso.

In TCP, ogni segmento di intestazione contiene un numero progressivo. Questo numero progressivo permette al Transport Layer funzioni sulla destinazione ospitante a rimontare segmenti nell'ordine in cui sono stati trasmessi. In questo modo si garantisce che la domanda di destinazione dispone di dati in forma esatta il mittente destinati. Anche se i servizi che utilizzano UDP anche monitorare le conversazioni tra le applicazioni, non sono interessato con l'ordine in cui l'informazione è stata trasmessa, o nel mantenere una connessione. Non vi è alcun numero progressivo nel UDP header. UDP è un design semplice e genera meno overhead di TCP, risultante in un più veloce trasferimento di dati. Informazioni possono arrivare in un ordine diverso di quello che è stato trasmesso perché diversi pacchetti può assumere diversi percorsi attraverso la rete. Un'applicazione che utilizza UDP deve tollerare il fatto che i dati non possono arrivare secondo l'ordine in cui esso è stato spedito.

funzioni del livello OSI transport



Il protocollo TCP - comunicare con l'affidabilità - transport layer

Tcp - rendere affidabili le conversazioni

La distinzione chiave tra TCP e UDP è l'affidabilità. L'affidabilità del protocollo TCP comunicazione è effettuata utilizzando orientato alla connessione sessioni. Prima di un host utilizzando il protocollo TCP invia i dati ad un altro ospite, il livello di trasporto avvia un processo per creare una connessione con la destinazione. Questa connessione consente il monitoraggio di una sessione, o flusso di comunicazione tra i padroni di casa. Questo processo garantisce che ogni ospite è consapevole e preparata per la comunicazione. A completare il protocollo TCP conversazione richiede l'istituzione di una sessione tra gli host in entrambe le direzioni. Dopo una sessione è stata stabilita, la destinazione invia riconoscimenti alla fonte per i segmenti che essa riceve. Questi riconoscimenti costituiscono la base di affidabilità all'interno della sessione TCP. Come la fonte riceve un avviso, tale che sappia che i dati sono stati consegnati con successo e può chiudere che i dati di monitoraggio. Se la fonte non riceve un riconoscimento all'interno di un predeterminato periodo di tempo, è che ritrasmette i dati a destinazione. Parte dei generali aggiuntive di utilizzare il protocollo TCP è il traffico di rete generato da riconoscimenti e ritrasmissioni. La creazione di sessioni crea generali in forma di ulteriori segmenti di essere scambiati. Vi è inoltre generali aggiuntive sui singoli host creato dalla necessità di tenere traccia di tutti i segmenti sono in attesa di riconoscimento e la ritrasmissione di processo. Questo è l'affidabilità di aver raggiunto campi nel segmento TCP, ciascuno con una funzione specifica, come mostrato in figura. Questi campi sono discussi più avanti in questa sezione.
campi testata segmento TCP

TCP Server processi

Come discusso nel capitolo precedente, l'applicazione dei processi eseguiti su server. Questi processi di attendere fino a quando un client avvia la comunicazione con una richiesta di informazioni o altri servizi. Ogni processo di applicazione in esecuzione sul server è configurato per l'utilizzo di un numero di porta, sia per impostazione predefinita o manualmente da un amministratore di sistema. Un singolo server non può avere due servizi assegnati allo stesso numero di porta all'interno dello stesso livello di trasporto servizi. Un host che esegue un server web e un trasferimento di file applicazione non può avere sia configurato per l'utilizzo della stessa porta (per esempio, la porta TCP 8080). Quando un server attivo domanda è assegnato a una porta specifica, che è considerata la porta ad essere "aperto" sul server. Ciò significa che il livello transport e accetta processi segmenti destinatari che porto. Qualsiasi client di arrivo richiesta rivolta alla corretta presa di corrente è accettata e dei dati viene passata al server. Non ci possono essere molte simultanea porti aperti su un server, uno per ogni server attivo applicazione. E 'comune per un server di fornire più di un servizio, come ad esempio un server web e un server FTP, allo stesso tempo. Un modo per migliorare la sicurezza su un server è quello di limitare l'accesso al server solo i porti associati con i servizi e le applicazioni che devono essere accessibili a requestors autorizzato. La figura mostra la tipica ripartizione di origine e di destinazione porti in TCP client / server.

clients mandano una richiesta TCP

Connessione TCP stabilimento e di cessazione

Quando due host comunicano utilizzando il protocollo TCP, una connessione è stabilita prima che i dati possano essere scambiati. Dopo la comunicazione è completato, i lavori sono chiusi e la connessione è chiusa. La connessione e attivare meccanismi di sessione TCP affidabilità della funzione.

stabilire e terminare una connessione TCP



L'host tracce di ogni segmento di dati all'interno di una sessione di scambi e di informazioni su quali dati è ricevuto da ciascun host utilizzando le informazioni nell'intestazione TCP. Ogni connessione rappresenta due a senso unico flussi di comunicazione, o sessioni. Per stabilire la connessione, i padroni di casa eseguire una a tre vie stretta di mano. Bit di controllo TCP indicare lo stato di avanzamento e lo stato della connessione. I tre-way handshake:

? stabilisce che il dispositivo di destinazione è presente sulla rete
? Verifica che il dispositivo di destinazione ha un servizio attivo ed è accettare richieste sulla porta di destinazione che il numero di avvio del client intende utilizzare per la sessione
? informa il dispositivo di destinazione che la fonte cliente intende stabilire una sessione di comunicazione a che il numero di porta

In connessioni TCP, l'host che funge da un client avvia la sessione sul server. I tre passi in connessione TCP stabilimento sono:

1. Avviare il client invia un segmento contenente un valore iniziale di sequenza, che serve come una richiesta al server per iniziare una sessione di comunicazione.
2. Il server risponde con un segmento di un avviso contenente il valore pari al valore ricevuto sequenza più 1, più il suo valore sequenza di sincronizzazione. Il valore è maggiore di uno il numero progressivo perché il ACK è sempre previsto il prossimo Byte o Octet. Questo riconoscimento del valore consente al cliente di legare la risposta al segmento originale che ha inviato al server.
3. Avvio del client risponde con un avviso valore pari valore la sequenza che ha ricevuto più uno. Questo completa il processo di istituisce la connessione.

Per capire il modo di tre stretta di mano processo, è importante guardare i vari valori che i due host di scambio. All'interno del segmento TCP header, ci sono sei 1-bit campi che contengono informazioni di controllo utilizzate per la gestione di processi TCP. Questi campi sono:

URG - Urgente puntatore campo significativo
ACK - Avviso campo significativo
PSH - funzione Push
RST - Reset della connessione
SYN - Sincronizza sequenza di numeri
FIN - Niente più dati dal mittente

Questi settori sono indicati come bandiere, perché il valore di uno di questi campi è solo 1 bit e, quindi, ha solo due valori: 1 o 0. Quando un po 'di valore è impostato su 1, indica le informazioni per il controllo ciò che è contenuto nel segmento.

Utilizzando un quattro fasi, bandiere vengono scambiati per terminare una connessione TCP.

stabilire e terminare una connessione TCP


TCP Three-Way Handshake

Utilizzando il Wireshark uscite, è possibile esaminare il funzionamento del protocollo TCP 3-way handshake:

Fase 1

Un client TCP inizia la tre vie stretta di mano di invio di un segmento con il SYN (Sincronizza Numero di sequenza) bandiera impostare il controllo, indicando un primo valore nel campo numero di sequenza nell'intestazione. Questo valore iniziale per il numero progressivo, noto come Numero di sequenza iniziale (ISN), è scelto in modo casuale e viene usato per avviare il monitoraggio del flusso di dati dal client al server per questa sessione. La ISN nella intestazione di ogni segmento è aumentato di uno per ogni byte di dati inviati dal client al server, poiché i dati conversazione continua. Come illustrato nella figura, uscita da un analizzatore di protocollo mostra la bandiera SYN controllo e il relativo numero progressivo. Il controllo SYN flag è impostata e il relativo numero di sequenza è a 0. Anche se il protocollo analizzatore nel grafico indica la relativa valori per la sequenza e la conferma dei numeri, i veri valori a 32 bit sono numeri binari. Siamo in grado di determinare il numero reale spedito nel segmento intestazioni di esaminare il pacchetto Byte riquadro. Qui potete vedere i quattro byte rappresentati in esadecimale.

TCP 3-way handshake SYN

Fase 2

TCP server deve accusare ricevuta dell'ordine del segmento SYN dal client per stabilire la sessione dal client al server. Per effettuare questa operazione, il server invia un segmento di ritornare al client con il flag ACK impostato che indicano che il numero Riconoscimento è significativo. Con questo flag impostato nel segmento, il cliente riconosce questo come un avviso che il server ha ricevuto il SYN dal protocollo TCP client. Il valore del numero di riconoscimento campo è pari al cliente numero di sequenza iniziale + 1. Questo sistema crea una sessione dal client al server. ACK la bandiera rimarrà fissato per l'equilibrio della sessione. Ricorda che la conversazione tra il client e il server è in realtà uno-due sessioni modo: uno dal client al server, e gli altri dal server al client. In questa seconda fase dei tre-way handshake, il server deve avviare la risposta dal server al client. Per avviare questa sessione, il server utilizza il flag SYN nello stesso modo in cui il cliente ha fatto. Esso definisce le flag SYN di controllo in-line a stabilire una sessione dal server al client. SYN flag indica che il valore iniziale del numero di sequenza in campo è l'intestazione. Questo valore verrà utilizzato per monitorare il flusso di dati in questa sessione dal server al client. Come illustrato nella figura, l'analizzatore di protocollo mostra che il ACK e SYN bandiere di controllo sono impostati e la relativa sequenza di numeri e la conferma sono mostrati.

TCP 3-way handshake SYN ACK

Fase 3

Infine, il protocollo TCP client risponde con un segmento contenente un ACK che è la risposta a TCP SYN inviato dal server. Non vi è alcun utente dati in questo segmento. Il valore del numero di riconoscimento campo contiene più di uno il numero di sequenza iniziale ricevuto dal server. Una volta che entrambe le sessioni sono stabiliti tra client e server, tutti gli ulteriori segmenti scambiati in questa comunicazione avranno la bandiera ACK impostato. Come illustrato nella figura, l'analizzatore di protocollo mostra i flag ACK impostato il controllo e la relativa sequenza di numeri e la conferma sono mostrati. Sicurezza può essere aggiunto ai dati di rete:

? Negare la creazione di sessioni TCP
? Solo permettendo di sessioni per essere stabilite per specifici servizi
? Solo consentendo il traffico come una parte del già stabilito sessioni

Questa garanzia può essere applicato a tutti i sessioni TCP o solo per determinate sessioni.

TCP 3-way handshake ACK

Sessione TCP terminazione

Per chiudere una connessione, la FIN (termine) di controllo di bandiera nel segmento di intestazione deve essere impostato. Per terminare ogni senso unico sessione TCP, un due vie stretta di mano è usata, consiste di un segmento FIN ACK e un segmento. Quindi, di chiudere la conversazione un unico supportato da TCP, quattro scambi sono necessari per terminare entrambe le sessioni. Nota: In questa dichiarazione, i termini client e server sono utilizzati in questa descrizione come un punto di riferimento per semplicità, ma il processo di risoluzione può essere avviata da qualsiasi due host che completa la sessione:

1. Quando il client non ha più dati per inviare nel ruscello, invia un segmento FIN con la bandiera.
2. Il server invia un ACK accusare ricevuta della FIN di chiudere la sessione dal client al server.
3. Il server invia un FIN al cliente, di chiudere il server per sessione client.
4. Il client risponde con un ACK a riconoscere la FIN dal server.

Quando il client fine della sessione non ha più dati da trasferire, è imposta la FIN bandiera l'intestazione di un segmento. Successivamente, il server della fine la connessione invia un segmento normale contenenti dati con il flag ACK impostato utilizzando il numero di riconoscimento, che conferma che tutti i byte di dati sono stati ricevuti. Quando tutti i segmenti sono stati riconosciuti, la sessione è chiusa. La sessione negli altri direzione è chiusa con lo stesso processo. Il ricevitore indica che non c'è più dati per inviare impostando la FIN bandiera l'intestazione di un segmento inviato alla fonte. Il ritorno riconoscimento conferma che tutti i byte di dati sono state ricevute e che la sessione è, a sua volta, chiusa. Come illustrato nella figura, la FIN e ACK flag di controllo sono indicati nel segmento intestazione, chiudendo così uno sessione HTTP.

E 'inoltre possibile terminare la connessione da una a tre vie stretta di mano. Quando il client non ha più dati per inviare, invia un FIN al server. Se anche il server non ha più dati per inviare, può rispondere con la FIN e ACK flag impostato, che unisce due passi in uno solo. Il client risponde con un ACK.

TCP 3-way handshake FIN


Gestione di sessioni TCP

Tcp riassemblaggio dei segmenti

Risequenziare i segmenti nell'ordinare in cui sono stati trasmessi

Quando i servizi inviare dati utilizzando il protocollo TCP, segmenti possono arrivare a destinazione in ordine. Per il messaggio originale di essere compresa dal destinatario, i dati in questi segmenti è riassemblati in ordine originale. Sequenza di numeri vengono assegnati in intestazione di ogni pacchetto per raggiungere questo obiettivo. Nel corso della tornata di installazione, un numero di sequenza iniziale (ISN) è impostata. Questo primo numero rappresenta il valore di partenza per i byte per questa sessione, che sarà trasmessa al ricevente. Come i dati vengono trasmessi nel corso della sessione, il numero progressivo è incrementata per il numero di byte che sono stati trasmessi. Questo monitoraggio di byte di dati consente a ciascun segmento essere identificate in modo univoco e riconosciuto. Mancante segmenti possono essere identificati. Segmento sequenza di numeri di consentire l'affidabilità indicando come rimontaggio e riordinare ricevuto segmenti, come mostrato in figura. Il processo di ricezione TCP posti i dati di un segmento in un buffer di ricezione. Segmenti sono posti in sequenza il corretto numero di ordine e passati all'applicazione strato quando riassemblati. Qualsiasi segmenti che arrivano con noncontiguous sequenza di numeri sono detenute per la successiva trasformazione. Poi, quando i segmenti con l'arrivo di byte mancanti, questi segmenti sono trasformati.

segmenti TCP sono riordinati a destinazione

TCP Acknowledgement con Windowing

Confermare il ricevimento di segmenti

Una delle funzioni del protocollo TCP è fare in modo che ogni segmento raggiunge la sua destinazione. I servizi TCP sulla destinazione ospitante riconoscere i dati che essa ha ricevuto la fonte di applicazione. Il segmento di intestazione numero progressivo e la conferma numero sono utilizzati insieme per confermare la ricezione dei byte di dati contenuti nei segmenti. Il numero progressivo è il relativo numero di byte che sono stati trasmessi in questa sessione, più 1 (che è il numero del primo byte di dati nel segmento attuale). TCP utilizza il numero di riconoscimento in segmenti rinviata alla fonte per indicare il prossimo byte in questa sessione che il ricevitore si aspetta di ricevere. Questo è chiamato expectational acknowledgement. La fonte è informato del fatto che la destinazione ha ricevuto tutti i byte in questo flusso di dati fino a, ma non compresi, il byte indicato dal numero di riconoscimento. L'invio di accoglienza si prevede di inviare un segmento che utilizza un numero progressivo che è uguale al numero di riconoscimento. Ricordate, ogni connessione è costituito da due a senso unico sessioni. Sequenza di numeri e la conferma dei numeri di essere scambiati in entrambe le direzioni. In questo esempio nella figura, l'host sulla sinistra è l'invio di dati per l'host sulla destra. Invia un segmento contenenti 10 byte di dati per questa sessione e un numero progressivo pari a 1 nell'intestazione. La ricezione ospite a destra riceve il segmento a livello 4 e stabilisce che il numero di sequenza è 1 e che dispone di 10 byte di dati. L'host invia un segmento torna alla accoglienza a sinistra per riconoscere il ricevimento di tali dati. In questo segmento, ospite fissa il numero di riconoscimento a 11 per indicare che il prossimo byte di dati che si aspetta di ricevere in questa sessione è byte numero 11. Quando l'invio di accoglienza sulla sinistra riceve questo riconoscimento, è ora possibile inviare il segmento successivo contenente i dati per questa sessione, a partire byte numero 11. Guardando a questo esempio, se l'invio di accoglienza ha dovuto attendere di conferma del ricevimento di ogni 10 byte, la rete avrebbe un sacco di overhead. Per ridurre il sovraccarico di questi riconoscimenti, molteplici segmenti di dati possono essere inviati prima e riconosciuto con un unico messaggio di TCP nella direzione opposta. Il presente avviso contiene un numero di riconoscimento basato sul numero totale di byte ricevuti in sessione plenaria. Per esempio, a partire da un numero progressivo del 2000, se 10 segmenti di 1000 byte ciascuno ha ricevuto un avviso numero di 12001 sarebbe tornato alla fonte. La quantità di dati che una sorgente può trasmettere prima un avviso deve essere ricevuta è chiamato le dimensioni della finestra. Dimensione della finestra è un campo in TCP che consente la gestione di perdita di dati e il controllo di flusso.

acquisizione di un segmento TCP

Ritrasmissione TCP

Manipolazione di un segmento perduto

Non importa quanto ben progettata è una rete, la perdita di dati sarà di tanto in tanto si verificano. Pertanto, il protocollo TCP fornisce i metodi di gestione di queste perdite segmento. Tra questi è un meccanismo di ritrasmissione di segmenti con unacknowledged dati. Un host di destinazione servizio di solito utilizzando il protocollo TCP riconosce solo i dati per contigui sequenza di byte. Se uno o più segmenti sono mancanti, solo i dati nei segmenti che completano il flusso sono riconosciuti. Se, ad esempio, segmenti con sequenza di numeri 1500 a 3000 e 3400 a 3500 sono stati ricevuti, il numero di riconoscimento sarebbe 3001. Questo perché vi sono segmenti con la sequenza di numeri 3001 e 3399 che non sono stati ricevuti. Quando il protocollo TCP alla fonte ospitante non ha ricevuto un avviso dopo un certo periodo di tempo, si tornerà a conferma l'ultimo numero di aver ricevuto e di ritrasmissione di dati da quel punto in avanti. La ritrasmissione processo non è specificato da RFC, ma è lasciata alla particolare esecuzione del protocollo TCP. Per un tipico TCP attuazione, un host può trasmettere un segmento, mettere una copia del segmento in una coda di ritrasmissione, e avviare un timer. Quando i dati riconoscimento è ricevuto, il segmento viene eliminato dalla coda. Se il riconoscimento non è ricevuto prima il timer scade, il segmento viene ritrasmesso. L'animazione dimostra la ritrasmissione di perdita di segmenti. Ospita oggi può anche assumere una funzione opzionale chiamato Selective Acknowledgements. Se entrambi gli host hanno sostegno selettivo, è possibile che la destinazione di riconoscere byte in segmenti discontinui e di accoglienza avrebbe solo bisogno di ritrasmettere i dati mancanti.


ritrasmissione TCP


TCP Controllo congestione - Minimizzare i segmenti persi

Controllo di Flusso

TCP prevede anche meccanismi per il controllo di flusso. Controllo di flusso assiste l'affidabilità della trasmissione TCP regolando il tasso effettivo di flusso di dati tra i due servizi di cui la sessione. Quando la fonte è informato del fatto che il suddetto quantitativo di dati nei segmenti è ricevuto, può continuare a inviare più dati per questa sessione. Questa dimensione della finestra campo nell'intestazione TCP specifica la quantità di dati che possono essere trasmessi prima un avviso deve essere ricevuto. La prima dimensione della finestra è determinata nel corso della sessione di avvio tramite il tre vie stretta di mano. TCP meccanismo di feedback regola il tasso effettivo di trasmissione dei dati per il flusso massimo che la rete e la destinazione dispositivo in grado di supportare senza perdita. TCP tentativi di gestire il tasso di trasmissione in modo che tutti i dati vengono ricevuti e ritrasmissioni verrà ridotto a icona. Vedere la figura di una rappresentazione semplificata delle dimensioni della finestra e riconoscimenti. In questo esempio, la dimensione della finestra iniziale per una sessione TCP rappresentato è impostata su 3000 byte. Quando il mittente ha trasmesso 3000 byte, che aspetta un avviso di questi byte prima di trasmettere più segmenti in questa sessione. Una volta che il mittente ha ricevuto questo riconoscimento dal ricevitore, il mittente può trasmettere un ulteriore 3000 byte. Durante il ritardo nel ricevere il riconoscimento, il mittente non sarà l'invio di ulteriori segmenti per questa sessione. In periodi in cui la rete è congestionato o le risorse del ricevente ospitante sono tese, il ritardo può aumentare. Come questo ritardo cresce più a lungo, l'effettiva velocità di trasmissione dei dati per questa sessione diminuisce. Il rallentamento della velocità dati aiuta a ridurre la risorsa contesa.

acquisizione segmento TCP e window size

Ridurre la dimensione della finestra

Un altro modo per controllare il flusso di dati è quello di utilizzare la finestra dinamica dimensioni. Quando le risorse di rete sono limitate, TCP possono ridurre le dimensioni della finestra di esigere che hanno ricevuto segmenti di essere riconosciuto più di frequente. In questo modo rallenta il tasso di trasmissione, perché la fonte di attesa per i dati per essere riconosciuto più di frequente. TCP ricevente invia ospitante le dimensioni della finestra valore per l'invio di TCP per indicare il numero di byte che essa è disposta a ricevere come parte di questa sessione. Se la destinazione deve rallentare il tasso di comunicazione a causa della limitata memoria buffer, è possibile inviare una finestra di dimensioni più piccole valore alla fonte come parte di un avviso. Come illustrato nella figura, se un host ha la ricezione di congestione, può rispondere alle ospitante con l'invio di un segmento con una finestra di dimensioni ridotte. In questo grafico, vi è stata una perdita di uno dei segmenti. Il ricevitore ha cambiato la finestra campo nell'intestazione TCP ritorno dei segmenti in questa conversazione da 3000 a 1500. Questo ha causato il mittente di ridurre le dimensioni della finestra al 1500. Dopo un periodo di trasmissione senza perdite di dati o di risorse limitate, il ricevitore comincerà ad aumentare la finestra di campo. Questo riduce il sovraccarico della rete perché un minor numero di riconoscimenti bisogno di essere spedito. Dimensione della finestra continuerà ad aumentare fino a quando non vi è perdita di dati, che provocherà le dimensioni della finestra di essere diminuita. Questa dinamica in aumento e diminuzione della dimensione della finestra è un processo continuo in TCP, che determina la massima dimensione della finestra TCP per ogni sessione. In reti altamente efficiente, finestra dimensioni possono diventare molto grandi, perché i dati non viene perso. Nelle reti in cui l'infrastruttura esistente viene sottolineato, le dimensioni della finestra è probabile che restano piccole.
Dettagli del protocollo TCP varie funzioni di gestione della congestione può essere trovato nella RFC 2581.

congestione TCP e controllo del flusso

Il protocollo UDP - comunicare con basso overhead - UDP datagram

UDP - Bassa Overhead vs Affidabilità

UDP è un semplice protocollo che fornisce la base Transport Layer funzioni. E 'molto più basso overhead di TCP, dal momento che non è orientato alla connessione e non prevede la ritrasmissione sofisticati, sequenziamento, e meccanismi di controllo di flusso. Ciò non significa che le applicazioni che utilizzano UDP sono sempre inaffidabili. Significa semplicemente che queste funzioni non sono previsti dal protocollo di livello di trasporto e devono essere attuate altrove, se necessario. Anche se l'importo totale del traffico UDP trovato su una tipica rete è spesso relativamente basso, chiave Applicazione strato protocolli che utilizzano UDP comprendono:

? DNS (Domain Name System)
? Simple Network Management Protocol (SNMP)
? Dynamic Host Configuration Protocol (DHCP)
? RIP (Routing Information Protocol)
? Trivial File Transfer Protocol (TFTP)
? giochi online

Alcune applicazioni, come ad esempio i giochi on line o VoIP, può tollerare una perdita di alcuni dati. Se queste applicazioni TCP utilizzati, possono sperimentare grandi ritardi, mentre il protocollo TCP rileva la perdita di dati e ritrasmette i dati. Tali ritardi sarebbe più dannoso per l'applicazione di piccole perdite di dati. Alcune applicazioni, come ad esempio DNS, semplicemente la ripetizione della richiesta se non ricevono una risposta, e quindi non necessitano di TCP per garantire il recapito dei messaggi. Il basso overhead di UDP rende molto auspicabile per tali applicazioni.

basso overhead dei dati UDP datagram

Riassemblaggio datagramma UDP

Perché UDP è senza connessione, le sessioni non sono stabiliti prima comunicazione ha luogo in cui sono con il protocollo TCP. UDP è detto di essere a base di transazione. In altre parole, quando la domanda è di inviare i dati, è semplicemente invia i dati. Molte applicazioni che utilizzano UDP inviare piccole quantità di dati che possono essere contenuti in un unico segmento. Tuttavia, alcune applicazioni invierà più grande quantità di dati che devono essere suddivisi in più segmenti L'UDP PDU viene indicato come un datagramma, anche se i termini segmento datagramma e sono a volte usati in modo intercambiabile per descrivere un livello transport PDU. Quando più datagrammi vengono inviati ad una destinazione, si può prendere percorsi diversi e arrivare nell'ordine sbagliato. UDP non tenere traccia dei numeri di sequenza TCP il modo in cui funziona. UDP non ha alcun modo per riordinare i datagrammi in ordine la loro trasmissione. Vedere la figura. Pertanto, UDP reassembles semplicemente i dati nell'ordine in cui è stato ricevuto e la trasmette alla domanda. Se la sequenza dei dati è importante per l'applicazione, la domanda dovrà individuare la corretta sequenza dei dati e determinare in che modo i dati dovrebbero essere trattati.

UDP datagram senza connessione e senza affidabilità

Processi e richieste UDP server

Come TCP applicazioni basate su, UDP server basato su applicazioni sono assegnati ben noto o registrati numeri di porta. Quando queste applicazioni o processi in esecuzione, essi accetteranno la corrispondenza dei dati con il numero di porta assegnati. UDP quando riceve un datagramma destinati ad una di queste porte, esso trasmette la domanda di dati l'applicazione appropriata in base al suo numero di porta.

server UDP in ascolto per richieste

UDP client processi

Come con TCP, client / server di comunicazione è iniziata da un client che richiede i dati da un server di processo. Il processo client UDP seleziona a caso un numero di porta della gamma dinamica di numeri di porta e si avvale di questa come la porta di origine per la conversazione. La porta di destinazione di solito è ben noto o registrato il numero di porta assegnato al server di processo. Randomizzati fonte numeri di porta anche aiutare con la sicurezza. Se vi è un prevedibile per il modello di selezione porta di destinazione, un intruso in grado di simulare più facilmente accesso a un client di cerchi di accedere a il numero di porta più probabilità di essere aperta. Perché non vi è alcuna sessione di essere creati con UDP, non appena i dati è pronto per essere spedito e dei porti individuati, UDP possono costituire il datagramma e passare al livello di rete da affrontare e inviato sulla rete. Ricorda che, una volta un cliente ha scelto la fonte e la destinazione dei porti, la stessa coppia di porte è impiegato nella intestazione di tutti i datagrammi oggetto della transazione. Per i dati di ritorno al client dal server, l'origine e la destinazione numeri di porta nel datagramma header sono invertiti.

client mandano una richiesta UDP
client mandano una richiesta UDP



Il livello transport o transport layer prevede la segmentazione e il controllo dei dati necessari per riassemblare ogni parte nei vari flussi di comunicazione.