TCP deve usare l'IP?


108

È vero che TCP è l'abbreviazione di TCP / IP e significano la stessa cosa?

È possibile che TCP sia costruito su un altro protocollo oltre all'IP ?


31
Perchè no? Avrei potuto vedere TCP su codice morse una volta.
soandos,

2
Un esempio potrebbe essere un tunnel ICMP, che utilizza TCP su ICMP. Ma è vero che non è solito costruire TCP sopra qualsiasi cosa non IP. Di solito il livello di accesso alla rete è quello che utilizza una gamma più ampia di protocolli e canali (come i tamburi di bongo).
Mister Smith,

1
@TomWijsman Hai provato a fallire? Da quello che ho capito, qualsiasi problema avessero avuto a che fare con la risoluzione di problemi e interoperabilità piuttosto che con qualsiasi problema per far funzionare TCP.
Tylerl,

2
@harper Con il codice Morse normale, 200 caratteri / minuto non sono certamente inauditi per operatori esperti e 100 c / min (20 wpm) sono sicuramente raggiungibili dalla maggior parte delle persone con abbastanza pratica. Certo, a quelle velocità, non senti davvero ogni singolo personaggio, ma piuttosto il suono delle parole. (Si dice che il segno distintivo di un operatore esperto sia che ricordano la conversazione, ma non le parole usate.) Immagino comunque che 100 caratteri c / min spaziati a una velocità complessiva di 50-60 c / min sarebbero fattibili con tassi di errore del carattere trascurabili.
un CVn del

2
@harper Dipende dal livello di precisione richiesto. Per le chiacchiere in gran parte (chiacchiere di rag, nella radio amatoriale), pronunciare una parola qua e là in modo errato non è davvero un problema, perché il contesto conta più delle parole esatte utilizzate. Per il traffico di telegrammi, le comunicazioni di emergenza / soccorso e così via, in particolare se il testo è cifrato, ogni parola e in effetti ogni carattere deve essere (non solo ricevuto ma anche) copiato correttamente (e leggibile). Si noti che ho detto che 200 c / min è "non inaudito"; non banale. 100 c / min tuttavia sono abbastanza comuni nelle bande radio amatoriali.
un CVn del

Risposte:


16

TCP e IP (v4 e v6) sono decisamente separabili e l'uno non implica l'altro, come dimostrato dall'esempio di TCP over IPX ( RFC 1791 ).

Tuttavia, TCP non può essere costruito su qualsiasi protocollo di rete. Due motivi:

  1. Nell'intestazione TCP non è presente alcun campo di dimensioni del segmento (solo Offset dati, che indica le dimensioni dell'intestazione TCP). Pertanto TCP funzionerà solo con un protocollo di livello inferiore che include informazioni sufficienti per calcolare la dimensione del segmento TCP (ovvero, la dimensione del carico utile del protocollo di livello inferiore). Questa ipotesi è vera per IPv4 ( RFC 791 ), IPv6 ( RFC 2460 ) e IPX ( RFC 1791 ). Ma non è vero in generale, ad es. Non per i vettori aerei ( RFC 1149 ) (vedi nota a).
  2. TCP è progettato solo per funzionare su un protocollo di rete senza connessione. Il protocollo TCP in effetti non funziona su determinati protocolli di rete orientati alla connessione (ad es. Il servizio di bit rate costante ATM), poiché le due funzioni di controllo della velocità di combattimento portano a prestazioni molto scarse o imprevedibili. Un altro esempio degenerato è TCP su un tunnel TCP.

La specifica TCP, RFC 793 , non è una buona fonte per decidere questa domanda, perché ammette che lascia la sua interfaccia con il livello inferiore in gran parte non specificata.

Nota a) Affinché TCP riassembli i datagrammi stampati su piccoli fogli di carta (trasportati da piccioni o una rete corvida più intelligente), la dimensione del payload dovrebbe essere scritta in una posizione standard. In alternativa, uno strato di adattamento potrebbe determinare euristicamente la dimensione del segmento. Lo scanner ottico utilizzato nell'implementazione dello stack host delle specifiche dei portatori di aviaria ( RFC 1149 ) includeva un tale livello di adattamento euristico, ma non è documentato.


2
Tecnicamente accurato (per quanto ne so), approfondito, supportato da riferimenti, chiaro e spensierato. Darei una manciata di voti che potrei.
Scott,

2
L'esempio aviario è lucido ed esilarante!
Giovanni

88

Non ho letto l'intero RFC, ma il linguaggio nella sezione 1.4 sembra suggerire che è possibile utilizzare qualsiasi protocollo di "livello inferiore".

L'interfaccia tra TCP e il protocollo di livello inferiore è essenzialmente non specificata, tranne per il fatto che si presume che esista un meccanismo in base al quale i due livelli possono scambiarsi informazioni in modo asincrono. In genere, ci si aspetta che il protocollo di livello inferiore specifichi questa interfaccia. TCP è progettato per funzionare in un ambiente molto generale di reti interconnesse. Il protocollo di livello inferiore che viene assunto in questo documento è il protocollo Internet.


101
L'IP stesso è stato implementato su molte tecnologie di rete, anche sui piccioni viaggiatori . Gli uccelli sono stati effettivamente utilizzati per dimostrare la consegna di pacchetti Ping ICMP, con una perdita di pacchetti del 55% (apparentemente a causa di un errore dell'operatore) e latenze che vanno da una a due ore. Sarebbe possibile eseguire TCP su questo, ma la configurazione della connessione richiederebbe molti uccelli ....
RBerteig

21
A proposito del commento di RBerteig; considera un piccione viaggiatore che trasporta una scheda mini-SDHC. C'è la differenza tra latenza e velocità effettiva. :-)
un CVn

16
@ MichaelKjörling Questo non interagirebbe con RFC 1149: "Il datagramma IP è stampato su un piccolo rotolo di carta".
kmkaplan,

4
@kmkaplan A meno che il datagramma non sia stato stampato sull'etichetta della scheda SDHC. È come il cliché di diversi film - "oh, in realtà è sul disco rigido!"
Jon Hanna,

40
Dovrebbe avere alcuni buchi molto grandi nel firewall per consentire ai vettori aerei di passare.
Squillman,

76

Suite protocollo Internet

TCP non è l'abbreviazione di TCP / IP.

TCP / IP viene spesso utilizzato come modo abbreviato di dire " Internet Protocol Suite " e di solito include altri protocolli standard. Quando le persone dicono TCP / IP di solito includono UDP su IP (in cui viene utilizzato UDP anziché TCP) e molti altri protocolli come ARP, ICMP, DNS, SNMP e altri protocolli a livello di applicazione.

Livello applicazione

Le applicazioni utilizzano protocolli di livello applicazione come SMTP (per e-mail). Questi siedono su uno dei due protocolli del livello di trasporto: TCP e UDP. Alcuni protocolli a livello di applicazione utilizzeranno uno o entrambi UDP e TCP, ma la maggior parte viene utilizzata con un solo protocollo a livello di trasporto.

Livello di trasporto

TCP e UDP sono due protocolli di livello di trasporto utilizzati in Internet Protocol Suite. Se ce ne sono altri che non conosco e tutti gli altri rappresenterebbero un uso specialistico di dimensioni ridotte. Altri protocolli di livello di trasporto sono stati definiti - il loro utilizzo probabilmente rappresenta solo una piccola parte del traffico IP globale

Strato di rete

Sebbene teoricamente sia possibile utilizzare TCP su qualcosa di diverso dall'IP, in pratica il TCP viene sempre utilizzato su IP: il protocollo Internet. L'IP sposta i pacchetti tra le reti (pensa all'IP come a connettere più LAN insieme)

Livello di interfaccia di rete

Ethernet è solo la famiglia più popolare di protocolli di livello link a basso livello su cui è gestito TCP / IP, ma TCP / IP è anche ampiamente utilizzato su ATM e altri.

Diagramma del livello IP da bootdiscs.net


Appendice 1 - Nota sui protocolli del livello di trasporto

Gli unici protocolli di livello di trasporto in uso significativo su reti che utilizzano Internet Protocol Suite sono TCP e UDP.

† Solo per divertimento, ho misurato il traffico sulla mia (molto) piccola LAN, che include NetBIOS (su TCP), SSH, Rsync, e-mail, aggiornamenti software, DNS, chiacchiere Windows-box generali e alcuni altri tipi di traffico.Statistiche di gerarchia del protocollo di Wirshark

Nota anche questa affermazione nelle FAQ di Google per il loro protocollo QUIC

Perché non hai creato un protocollo completamente nuovo, anziché utilizzare UDP? Le scatole centrali su Internet oggi generalmente bloccano il traffico a meno che non si tratti di traffico TCP o UDP

(la mia enfasi)


1
Mi ha riportato indietro nel tempo fino al 1996 e il modello OSI en.wikipedia.org/wiki/OSI_model
Rudi,

Esistono più di 2 protocolli del livello di trasporto: en.wikipedia.org/wiki/Transport_layer#Protocols
Stuart Blackler

@StuartBlackler: punto interessante, grazie. Esistono (diversi da TCP e UDP) che non rientrano in quella che ho chiamato la categoria "uso specialistico sempre più piccolo" e che sono utilizzati su IP? Se misurassi il traffico IP in un punto di scambio Internet , quale proporzione dei protocolli del livello di trasporto sarebbe diversa da TCP o UDP?
RedGrittyBrick

Prendi DCCP per esempio, è ancora un nuovo protocollo ma immagino che nei prossimi anni vedrai più applicazioni utilizzare il protocollo. Il motivo per cui non credo sia ancora mainstream è perché non credo che ci sia supporto per Windows. Pensalo come UDP con controllo della congestione. Può essere molto utile per molte applicazioni come Skype e i giochi :) Dai un'occhiata. Per rispondere alla tua domanda, è probabilmente una quantità molto piccola al momento
Stuart Blackler

@Rudi err, dovresti capire che non è il modello di riferimento OSI, e se te ne rendi conto, allora non indurre in errore le persone a pensare che lo sia. È il modello / architettura TCP / IP ... A volte l'architettura TCP / IP è descritta con la terminologia di OSI, il modello di riferimento OSI. Ma i 4 livelli mostrati e con quei nomi, sono molto TCP / IP, non OSI. Nessun problema con il post di red ma il tuo commento è fuorviante al massimo.
barlop

34

Il motivo per cui TCP / IP è un'abbreviazione così comune (al contrario di, diciamo UDP / IP o SCTP / IP) è perché i due protocolli sono stati progettati insieme, e nel documento originale di Vint Cerf e Bob Kahn, i due concetti erano combinati insieme in un unico protocollo. Poco dopo sono stati divisi in IP per fornire routing e TCP per fornire controllo del flusso, multiplexing, rilevamento degli errori, ecc. Solo sei anni dopo è stato introdotto UDP per fornire uno strato multiplexing "leggero" senza il resto del sovraccarico coinvolto con TCP.

Tuttavia, TCP e IP sono due cose separate e completamente e intenzionalmente indipendenti. Il fatto che TCP non richieda IP è immediatamente evidente dal fatto che TCP può essere eseguito senza modifiche sia su IPv4 che su IPv6, che sono due protocolli completamente diversi.

Con un po 'di lavoro, potresti creare un protocollo concorrente su IP che avrebbe gli stessi scopi, ma probabilmente dovrebbe contenere la maggior parte se non tutte le stesse funzionalità e probabilmente finirebbe per assomigliare molto all'IP. Si potrebbe sostenere che le estensioni IP (come IPSec) siano effettivamente protocolli di livello 3 alternati, quindi il gioco è fatto.


1
Corretto: la prima versione di TCP includeva la funzionalità di IP. Forse un altro motivo per cui la gente dice "TCP / IP" è che la stragrande maggioranza delle volte quando si inviano dati su IP, si desidera garantire che tutto venga consegnato e nel giusto ordine, quindi si utilizza TCP. Ad esempio, tutto il traffico HTTP e FTP utilizza TCP. Una categoria di eccezioni sono i dati in tempo reale; Skype, ad esempio, usa UDP, perché preferiresti ricevere l'ultimo pacchetto in una conversazione piuttosto che interrompere tutto per ottenerne uno che ti sei perso.
Nathan Long,

21

Puoi sostituire l'IP con qualcos'altro. In effetti, è esattamente quello che stai facendo quando usi TCP su IPv6. TCP è ancora TCP, ma l'IP è v6 anziché v4.

AFAIK, nessuno ha creato altri protocolli di livello 3 per funzionare con TCP sopra di loro, ma non c'è motivo per cui non potresti farlo.


9

TCP e IP sono come il burro sul pane.

Puoi accoppiare qualsiasi altra cosa che funzioni con entrambi i protocolli, ma questi due sono così complementari che è solo un ottimo modo affidabile per trasferire i dati e riempire la pancia con i dati di Internet. Unge il tubo per consentire ad altri prodotti alimentari secchi e allo stesso tempo di handshaking di dati di supportare questa associazione. Ma in nessun modo è esclusivo.

D Tuttavia, non è possibile costruire TCP su un altro protocollo oltre all'IP?

A Sì è possibile. Mi piacciono gli esempi di codice Morse e Pigeon di TCP senza IP.


5

Ho sempre sentito che TCP è l'abbreviazione di TCP / IP

In realtà sta per Transmission Control Protocol over Internet Protocol

e significano la stessa cosa.

Non è corretto

Innanzitutto, Ethernet è il sistema hardware di basso livello che controlla il funzionamento delle parti hardware effettive.

Quindi, pensa all'IP come a un sistema telefonico o a segnali stradali. Fornisce il controllo di base del sistema di collegamento di due punti insieme.

TCP d'altra parte è più simile a un sistema di messaggistica o un addetto al controllo del traffico che indirizza i messaggi / le auto al punto corretto.

Nel loro insieme, TCP / IP, fornisce un sistema di trasferimento affidabile dei dati da e verso due dispositivi collegati.

Con Internet, quando si desidera inviare o ricevere dati, la parte IP del sistema è la parte che controlla le connessioni hardware effettive con i fili (o le onde wireless). La parte TCP del sistema è il software che è responsabile della raccolta dei dati e della loro suddivisione, invio, riassemblaggio dei dati ricevuti, controllo dei dati e reinvio, se necessario.

Ci sono innumerevoli spiegazioni con analogie e dettagli tecnici disponibili, specialmente in forma video . DifferenceBetween.net ne ha uno particolarmente valido su questo argomento esatto .

Tuttavia, non è possibile che TCP sia costruito su un altro protocollo oltre all'IP?

Sì, potresti davvero creare un sistema alternativo a TCP che utilizza IP. Dai un'occhiata a Internet Protocol Suite per alcuni dettagli.


13
È un po 'fuorviante affermare che l'IP prevede la "connessione" di due punti insieme. IP fornisce un modo per inviare singoli pacchetti discreti da una macchina all'altra; ogni pacchetto è indipendente da tutti gli altri. TCP fornisce l'illusione di una connessione continua , che è in realtà una sequenza di pacchetti inviati tramite IP.
Wyzard,

4
Anche l'IP non è correlato all'hardware o alla segnalazione fisica. È gestito da tecnologie di livello inferiore, ad esempio Ethernet.
Wyzard,

9
C'è molto di sbagliato in questa risposta e manca completamente la domanda. Innanzitutto, Ethernet è solo un protocollo a livello di collegamento utilizzato per trasportare IP. Ce ne sono molti altri e IP non ne conosce né si preoccupa. IP non ha nulla a che fare con l'hardware; è il livello di routing tra le reti, sopra l'hardware utilizzato per collegarle. Il punto della domanda era se è possibile utilizzare TCP su qualcosa di diverso dall'IP, non se è possibile utilizzare qualcosa di diverso da TCP che utilizza l'IP (vedere UDP per un esempio).
psusi,

3
@synetech, la domanda non era "si può usare qualcos'altro su IP". Era "si può usare TCP su qualcos'altro", cioè senza IP.
Wyzard,

2
> the fact that !TCP can go over IP does not necessarily mean TCP can go over !IP Huh?psusi sta cercando di essere intelligente usando "!" come "non operatore". Il suo commento dovrebbe essere letto come: "il fatto che qualcosa che non sia TCP può andare oltre IP non significa necessariamente che TCP possa andare oltre qualcosa che non è IP". È fatto in riferimento all'ultima frase della tua risposta, che ha mostrato l'esistenza di "Sistemi alternativi a TCP". Tuttavia, mostrare che esistono alternative al TCP non implica necessariamente che non esistano alternative all'IP.
Lie Ryan,

5

TCP è un protocollo di livello 4. Fornisce il trasporto garantito di dati sotto forma di flusso ordinato da un processo su un computer a un altro processo sullo stesso / un altro computer.

IP è un protocollo di livello 3. Fornisce il trasporto da un host all'altro.

Finché esiste un protocollo che può fare da host a host per il trasferimento di dati, TCP funzionerà.

Quindi, TCP può essere implementato su qualsiasi protocollo, ma abbiamo creato solo IP. L'IP è semplice e funziona.

Non è necessario un altro protocollo di livello 3.


1
Che dire di IPv6?
curiousguy,

1
Che dire di IPv6? È solo IP. L'interfaccia di invio e ricezione di un pacchetto rimane invariata. Pertanto, TCP può utilizzare la stessa funzione. Il sistema operativo può semplicemente sostituire il puntatore a funzione da IPv4 e IPv6 e funzionerebbe comunque. Non sono sicuro di quello che stai dicendo qui?
Suren Nihalani,

3
IPv6 e IPv4 sono simili , con interfacce simili per i livelli superiori, ma certamente non lo stesso protocollo e neppure strettamente funzionalmente equivalente.
curiousguy,

Potresti anche far finta che UDP sia lo stesso protocollo dell'IP , perché offrono interfacce estremamente simili ai livelli superiori: imposta un indirizzo endpoint locale e remoto, invia e ricevi pacchetti ...
curiousguy

3

Quando progetti una rete, devi scegliere un insieme di protocolli (che sono fondamentalmente insiemi di regole di comunicazione tra macchine), per ciascuno dei vari "livelli" (che puoi immaginare come diversi livelli di astrazione, che i progettisti di reti amano tenere presente quando si creano e si combinano i protocolli).

Versione più semplice: i protocolli sono come scatole in cui inseriamo i nostri messaggi . Quelle scatole hanno dimensioni diverse e metti il ​​tuo messaggio nella casella più piccola, quindi nella casella più piccola in una scatola che è un po 'più grande, ecc. Scegliere un set di protocolli è scegliere quale tipo di scatole utilizzerai, per ciascuna " layer "che circonda il tuo messaggio.

TCP e IP sono protocolli per due livelli indipendenti, creati insieme e utilizzabili insieme; ma può benissimo essere usato con altri protocolli. Ciò accade abbastanza spesso: è possibile utilizzare l'IP insieme a un protocollo non TCP o TCP insieme a un protocollo non IP .

Il motivo per cui TCP / IP è un'abbreviazione così comune è che quei due protocolli costituivano, insieme, la base di Internet e rappresentavano la chiave del suo successo .

(TCP e IP hanno alcune funzionalità progettate appositamente per funzionare insieme, il che è qualcosa di cui i puristi spesso si lamentano, ma in realtà non ti impediscono di interfacciarli con altri protocolli)


2

Penso che sia possibile eseguire il trasporto TCP su IPX, se si desidera passare al passato.


1
Probabilmente stai pensando a quando IPX è stato sintonizzato su TCP / IP. Che non sorprende che non sia durato a lungo.
Andygavin,


2

Tuttavia, non è possibile che TCP sia costruito su un altro protocollo oltre all'IP?

Oltre ai classici TCP / IPv4 e TCP / IPv6, sono stati progettati alcuni protocolli sperimentali, ad esempio:

Quasi TCP su UDP (atou)

Come parte dei nostri sforzi Net100 e Probe per migliorare i trasferimenti di massa su reti ad alta velocità e alta latenza, abbiamo sviluppato una versione strumentata e sintonizzabile di TCP che funziona su UDP. Il trasporto simile a TCP UDP funge da test-harness per sperimentare controlli simili a TCP a livello di applicazione simili a TReno.

E iproxy: esecuzione di servizi TCP su UDP , il che è più divertente:

iproxy comprende un proxy lato client e un proxy lato server che consente l'esecuzione di servizi TCP / IP arbitrari su UDP Broadcast, Multicast o Unicast. Originariamente era stato concepito come un metodo per configurare server a cui non era stato assegnato un indirizzo IP sulla LAN utilizzando un'interfaccia basata sul web.

Quindi vedi: TCP su UDP unicast e persino TCP su UDP broadcast o multicast !

Solo AFAIK TCP / IPv4 e TCP / IPv6 godono di una distribuzione di grandi dimensioni.


Sì, ma questo è UDP su IP; Vedo cosa hai fatto lì ...
Tamara Wijsman,

@TomWijsman Sì, è TCP / UDP / IP.
curiousguy,

2

La risposta è no! Ad esempio, esiste un vecchio RFC che descrive TCP su IPX: http://tools.ietf.org/html/rfc1791

Per quelli con brevi ricordi, IPX era il protocollo Novell Netware: http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange


so che la risposta è vecchia, ma se possibile, per favore, approfondisci ulteriormente la tua risposta ed evita di pubblicare collegamenti come semplici risposte / fonte. se i collegamenti non ci sono più, lo è anche la tua risposta.
Lorenzo Von Matterhorn,

2

Esistono già implementazioni di TCP su vari protocolli che supportano il trasporto di un datagramma di base. In realtà la necessità non è nemmeno di specificare le informazioni di routing (TCP non ha nemmeno bisogno dell'IP con cui lavorare, basterebbe solo un collegamento Serila con un destinatario implicito).

Quindi hai implementato TCP nella parte superiore di UDP (vantaggio: usi una singola porta sul lato "server", oppure puoi incorporarla su una connessione esistente trasportando vari canali multiplexati). Solo il livello IP fornisce il routing, ma TCP non ne ha bisogno. Tutto ciò che conta è che il concetto di MTU sia fornito dal livello inferiore.

Ciò consente al protocollo di bypassare le limitazioni di NAT traversal, senza la necessità di registrare una porta di traduzione UPnP per un host specifico. Consente l'ottimizzazione indipendente di MTU e MSS, ottimizzata per ciascun client anziché da ciascun router condiviso intermedio. Sono possibili altri protocolli di routing (anche per la consegna tramite Multicast e reti di trasmissione). E hai la scelta dei meccanismi di sicurezza.

Un esempio di utilizzo è Gogo6.net (che implementa il suo canale di trasporto IPv6 su una sessione TCP utilizzando una reimplementazione di TCP su UDP v4 (funziona sulla maggior parte dei router di accesso a casa che hanno ancora solo un indirizzo IPv4 e non sempre supporta il metodo UPnP ; senza necessità di configurarlo da parte degli utenti utilizzando un numero di porta costante specifico per l'applicazione, anche quando non è in esecuzione)

Altri esempi sono l'incapsulamento di TCP su HTTP (o HTTPS) versione 1.1 con estensione "streaming" nativa. La maggior parte delle VPN che consentono di collegare reti su Internet farà lo stesso. Il bridge può anche incapsulare più protocolli: Ethernet, PPP, IPv4 e IPv6 (estendendo solo il segmento LAN o Ethernet locale), NetBEUI / LanMan, rilevamento router (all'interno della rete con bridge), incluso in modalità raw (che consente DHCPv4 o DHCPv6) in la rete a ponte. HTTPS viene utilizzato perché l'incapsulamento su HTTPS consente anche la crittografia e l'autenticazione per stabilire e proteggere il bridge, ma non richiede autenticazione / crittografia end-to-end per client e server sulla rete bridge e poiché i router sono altamente ottimizzati per HTTP e HTTPS.


1

Esistono esempi di sistemi di comunicazione in campo militare che utilizzano TCP ma non IP poiché il percorso di comunicazione è una connessione di tipo seriale che non viene instradata tramite router, ecc. Se si guarda un pacchetto TCP prima che sia intestato con campi IP esso sembra facilmente possibile non utilizzare l'IP se il protocollo di "routing" è diverso.

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.