web-dev-qa-db-fra.com

TCP doit-il utiliser IP?

Est-il vrai que TCP est l'abréviation de TCP/IP et signifie-t-il la même chose?

Est-il possible que TCP soit construit sur un autre protocole en plus de IP ?

106
Pacerier

TCP et IP (v4 et v6) sont définitivement séparables, et l’un n’implique pas l’autre, comme le montre l’exemple de TCP sur IPX ( RFC 1791 ).

Cependant, TCP ne peut pas être construit uniquement sur les protocoles réseau . Deux raisons:

  1. L'en-tête TCP ne contient pas de champ de taille de segment (uniquement le décalage de données, qui indique la taille de l'en-tête TCP.). Par conséquent, TCP ne fonctionnera qu'avec un protocole de couche inférieure comprenant suffisamment d'informations pour calculer la taille du segment TCP (c'est-à-dire la taille de la charge utile du protocole de couche inférieure). Cette hypothèse est vraie pour IPv4 ( RFC 791 ), IPv6 ( RFC 2460 ) et IPX ( RFC 1791 ). Mais ce n’est pas vrai en général, par exemple, pas pour les transporteurs aviaires ( RFC 1149 ) (voir la note a).
  2. TCP est uniquement conçu pour fonctionner sur un protocole réseau sans connexion. TCP ne fonctionne effectivement pas sur certains protocoles réseau orientés connexion (par exemple, le service à débit constant ATM), car les deux fonctions de contrôle du taux de combat conduisent à des performances très médiocres ou imprévisibles. Un autre exemple dégénéré est TCP sur un tunnel TCP.

La spécification TCP, RFC 793 , n'est pas une bonne source pour décider cette question, car elle admet qu'elle quitte son interface avec la couche inférieure en grande partie non spécifiée.

Remarque a) Pour que TCP réassemble des datagrammes imprimés sur de petites feuilles de papier (transportés par des pigeons ou par un réseau corvid plus intelligent), la taille de la charge utile doit être écrite dans un emplacement standard. Alternativement, une couche d'adaptation pourrait déterminer de manière heuristique la taille du segment. Le scanner optique utilisé dans la mise en œuvre de la pile d'hôte de la spécification des porteuses aviaires ( RFC 1149 ) incluait une telle couche d'adaptation heuristique, mais elle n'était pas documentée.

14
Bob briscoe

Je n'ai pas lu le tout RFC , mais le libellé de la section 1.4 semble suggérer que tout protocole de "niveau inférieur" peut être utilisé.

L'interface entre TCP et le protocole de niveau inférieur est essentiellement non spécifiée, sauf qu'il est supposé qu'il existe un mécanisme par lequel les deux niveaux peuvent se transmettre de manière asynchrone des informations. Généralement, on s'attend à ce que le protocole de niveau inférieur spécifie cette interface. TCP est conçu pour fonctionner dans un environnement très général de réseaux interconnectés. Le protocole de niveau inférieur utilisé dans ce document est le protocole Internet.

89
LawrenceC

Suite de protocole Internet

TCP n'est pas un raccourci pour TCP/IP.

TCP/IP est souvent utilisé comme un raccourci pour dire " la suite de protocoles Internet " et inclut généralement d'autres protocoles standard. Lorsque les utilisateurs parlent de TCP/IP, ils incluent généralement UDP sur IP (UDP étant utilisé à la place de TCP) et de nombreux autres protocoles tels que ARP, ICMP, DNS, SNMP et autres protocoles de couche application.

Couche d'application

Les applications utilisent des protocoles de couche application tels que SMTP (pour le courrier électronique). Ceux-ci reposent sur l'un des deux protocoles de couche de transport - TCP et UDP. Quelques protocoles de couche application utiliseront UDP et TCP ou les deux, mais la plupart sont utilisés avec un seul protocole de couche de transport.

Couche de transport

TCP et UDP sont deux protocoles de couche de transport utilisés dans Internet Protocol Suite. S'il y en a d'autres, je ne les connais pas et d'autres constitueraient une utilisation extrêmement réduite.  D'autres protocoles de couche de transport ont été définis - leur utilisation ne représente probablement qu'une faible proportion du trafic IP global

Couche interréseau

Bien qu'il soit théoriquement possible d'utiliser TCP sur autre chose que l'IP, en pratique, TCP est toujours utilisé sur IP - le protocole Internet. IP déplace les paquets entre les réseaux (pensez à IP comme connectant plusieurs réseaux locaux ensemble)

Couche d'interface réseau

Ethernet n’est que la famille la plus répandue de protocoles de couche liaison de bas niveau sur lesquels le protocole TCP/IP est acheminé, mais le protocole TCP/IP est également largement utilisé sur les systèmes ATM et autres.

IP layer diagram From bootdiscs.net


Annexe 1 - Note sur les protocoles de la couche de transport

Les seuls protocoles de couche de transport utilisés de manière significative sur les réseaux qui utilisent Internet Protocol Suite sont TCP et UDP.

† Juste pour le plaisir, j’ai mesuré le trafic sur mon (très) petit réseau local, qui comprend NetBIOS (sur TCP), SSH, Rsync, Email, mises à jour logicielles, DNS, bavardage général de la boîte Windows et quelques autres types de trafic.Wirshark Protocol Hierarchy Statistics

Notez également cette déclaration dans la FAQ de Google pour leur protocole QUIC

Pourquoi n'avez-vous pas créé un tout nouveau protocole plutôt que d'utiliser UDP? Aujourd'hui, les boîtiers centraux sur Internet bloquent le trafic sauf s'il s'agit de TCP ou UDP. trafic

(mon emphase)

77
RedGrittyBrick

La raison pour laquelle TCP/IP est une abréviation si courante (par opposition à, UDP/IP ou SCTP/IP) est due au fait que les deux protocoles ont été conçus ensemble, et dans le document original de Vint Cerf et de Bob Kahn, les deux concepts étaient: combinés ensemble dans un protocole unique. Peu après, ils ont été divisés en IP pour fournir le routage et en TCP pour assurer le contrôle de flux, le multiplexage, la détection d'erreur, etc. Ce n'est que six ans plus tard que le protocole UDP a été introduit pour fournir un multiplexage "léger". couche sans le reste de la surcharge impliqué avec TCP.

Néanmoins, TCP et IP sont deux choses distinctes et totalement et intentionnellement indépendantes. Le fait que TCP ne nécessite pas d'adresse IP apparaît immédiatement avec le fait que TCP peut s'exécuter sans modification sur IPv4 et IPv6, deux protocoles complètement différents.

Avec un peu de travail, vous pourriez créer un protocole IP concurrent qui aurait les mêmes objectifs, mais il devrait probablement contenir la plupart sinon toutes les mêmes fonctionnalités, et finirait probablement par ressembler beaucoup à IP. Vous pouvez faire valoir que les extensions IP (telles que IPSec) sont en réalité des protocoles de couche 3 alternatifs.

34
tylerl

Vous pouvez remplacer IP par quelque chose d'autre. En fait, c'est exactement ce que vous faites lorsque vous utilisez TCP sur IPv6. TCP est toujours TCP, mais l'adresse IP est v6 au lieu de v4.

Autant que je sache, personne n’a créé d’autres protocoles de couche 3 pour fonctionner avec TCP au-dessus d’eux, mais rien ne nous en empêche.

22
Mark Reed

TCP et IP sont comme du beurre sur du pain.

Vous pouvez associer tout ce qui fonctionne avec l’un ou l’autre des protocoles, mais ces deux-là sont donc complémentaires un délicieux moyen fiable pour transférer des données et remplissez le ventre avec des données Internet. Il lubrifie le tube pour permettre à d’autres aliments secs et au transfert de données de prendre en charge cet appariement. Mais ce n'est en aucun cas exclusif.

Q Cependant, n'est-il pas possible que TCP soit construit sur un autre protocole que IP?

A Oui c'est possible. J'aime les exemples de code Morse et Pigeon de TCP sans IP.

9
Sunnyskyguy EE75

J'ai toujours entendu dire que TCP est l'abréviation de TCP/IP

En réalité, il signifie protocole de contrôle de transmission sur protocole Internet

et ils veulent dire la même chose.

Ce n'est pas correct.

Premièrement, Ethernet est le système matériel de bas niveau qui contrôle le fonctionnement des pièces matérielles réelles.

Ensuite, imaginez IP comme un système téléphonique ou des panneaux de signalisation. Il fournit le contrôle de base de la connexion du système deux points ensemble.

TCP ressemble en revanche davantage à un système de messagerie ou à un agent de contrôle du trafic qui dirige les messages/voitures vers le bon point.

Pris dans leur ensemble, TCP/IP fournit un système de transfert fiable des données vers et depuis deux périphériques connectés.

Avec Internet, lorsque vous souhaitez envoyer ou recevoir des données, la partie IP du système est la partie qui contrôle l’établissement des connexions matérielles réelles avec les fils (ou les ondes sans fil). La partie TCP du système est le logiciel chargé de récupérer les données, de les séparer, de les envoyer, de réassembler les données reçues, de vérifier les données et de les renvoyer si nécessaire.

Il y a d'innombrables explications avec des analogies et des détails techniques disponibles, en particulier dans le formulaire vidéo . DifferenceBetween.net en a une particulièrement bonne sur ce sujet exact .

Cependant, n'est-il pas possible que TCP soit construit sur un autre protocole que IP?

Oui, vous pouvez en effet créer un système alternatif à TCP utilisant IP. Jetez un coup d’œil à la suite de protocoles Internet Internet pour plus de détails.

6
Synetech

TCP est un protocole de couche 4. Il fournit une garantie de transport des données sous la forme d'un flux ordonné d'un processus sur un ordinateur à un autre processus sur le même ordinateur/un autre.

IP est un protocole de couche 3. Il assure le transport d'un hôte à un autre.

Tant qu'il existe un protocole permettant le transfert de données entre hôtes, TCP fonctionnera.

Donc, TCP peut être implémenté sur n’importe quel protocole, mais, nous n’avons fait que de l’IP. IP est simple et fait le travail.

Un autre protocole de couche 3 n'est pas nécessaire.

5
snihalani

Lorsque vous concevez un réseau, vous devez choisir un ensemble de protocoles (qui sont essentiellement des ensembles de règles de communication entre machines), pour chacune des différentes "couches" (que vous pouvez imaginer sous différents niveaux d'abstraction, que les concepteurs de réseau aiment utiliser. garder à l'esprit lors de la création et de la combinaison de protocoles).

Version simplifiée: les protocoles sont comme des boîtes dans lesquelles nous mettons nos messages . Ces boîtes ont des tailles différentes et vous mettez votre message dans la plus petite, puis dans une boîte un peu plus grande, etc. Choisir un ensemble de protocoles revient à choisir le type de boîte que vous utiliserez, pour chaque " couche "qui entoure votre message.

TCP et IP sont des protocoles pour deux couches indépendantes, créées ensemble et utilisables ensemble. mais peut très bien être utilisé avec d'autres protocoles. Cela arrive assez souvent: vous pouvez utiliser IP avec un protocole non-TCP, ou TCP avec un protocole non-IP .

La raison pour laquelle TCP/IP est une abréviation si commune est que ces deux protocoles ont formé ensemble la base d'Internet et ont été la clé de son succès .

(TCP et IP ont certaines fonctionnalités spécialement conçues pour fonctionner ensemble, ce dont se vantent souvent les puristes, mais ils ne vous empêchent pas vraiment de les interfacer avec d'autres protocoles)

3
userBigNum

Je pense qu'il est possible d'exécuter TCP sur le transport IPX, si vous voulez utiliser le mode rétro.

2
GDR

La réponse est non! Par exemple, il existe un ancien RFC décrivant TCP sur IPX: http://tools.ietf.org/html/rfc1791

Pour ceux dont la mémoire est courte, IPX était le protocole Novell Netware: http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange

2
teambob

Des implémentations de TCP au-dessus de divers protocoles prenant en charge le transport d'un datagramme de base existent déjà. En fait, il n'est même pas nécessaire de spécifier les informations de routage (TCP n'a même pas besoin de l'adresse IP pour fonctionner, un simple lien serila avec un destinataire implicite suffirait).

Donc, vous avez TCP implémenté en haut d’UDP (avantage: vous utilisez un seul port du côté "serveur", ou vous pouvez l’intégrer via une connexion existante transportant divers canaux multiplexés). Seul le niveau IP fournit le routage, mais TCP n'en a pas besoin. Tout ce qui compte est que le concept de MTU soit fourni par la couche inférieure.

Cela permet au protocole de contourner les limitations de NAT traversal, sans nécessiter l'enregistrement d'un port de traduction UPnP pour un hôte spécifique. Il permet un réglage indépendant du MTU et du MSS, optimisé pour chaque client plutôt que par chaque routeur partagé intermédiaire. D'autres protocoles de routage sont possibles (y compris pour la distribution via des réseaux de multidiffusion et de diffusion). Et vous avez le choix des mécanismes de sécurité.

Un exemple d'utilisation est Gogo6.net (qui implémente son canal de transport IPv6 sur une session TCP en utilisant une réimplémentation de TCP sur UDP v4 (il fonctionne sur la plupart des routeurs d'accès à la maison avoir une adresse IPv4, et ne prenant pas toujours en charge la méthode UPnP; sans qu'il soit nécessaire de la configurer par les utilisateurs utilisant un numéro de port constant spécifique à l'application, même lorsqu'elle n'est pas en cours d'exécution)

D'autres exemples consistent à encapsuler TCP sur HTTP (ou HTTPS) version 1.1 avec son extension "streamed" native. La plupart des VPN autorisant les réseaux de pontage sur Internet feront de même. Le pont peut même encapsuler plusieurs protocoles: Ethernet, PPP, IPv4 et IPv6 (extension du segment LAN local ou Ethernet uniquement), NetBEUI/LanMan, découverte de routeur (au sein du réseau ponté), y compris en mode brut (autorisant DHCPv4 ou DHCPv6) dans le réseau ponté. HTTPS est utilisé car l'encapsulation sur HTTPS permet également le cryptage et l'authentification pour établir et sécuriser le pont, mais n'exige pas d'authentification/cryptage de bout en bout pour les clients et les serveurs sur le réseau ponté, et parce que les routeurs sont hautement optimisés pour HTTP et HTTPS.

2
verdy_p

Cependant, n'est-il pas possible que TCP soit construit sur un autre protocole que IP?

Outre les protocoles classiques TCP/IPv4 et TCP/IPv6, quelques protocoles expérimentaux ont été conçus, par exemple:

Presque TCP sur UDP (atou)

Dans le cadre de nos efforts Net100 et Probe visant à améliorer les transferts de masse sur des réseaux à grande vitesse et à latence élevée, nous avons développé une version instrumentée et ajustable de TCP exécutée sur UDP. Le transport de type TCP UDP sert de faisceau de test pour expérimenter des contrôles de type TCP au niveau de l’application, similaires à TReno.

Et iproxy: exécuter TCP services sur UDP, ce qui est plus amusant:

iproxy comprend un proxy côté client et un proxy côté serveur qui permettent aux services TCP/IP arbitraires de s'exécuter sur un UDP de diffusion, de multidiffusion ou d'unicast. Il a été conçu à l’origine comme une méthode permettant de configurer des serveurs qui n’avaient pas reçu d’adresse IP sur le réseau local à l’aide d’une interface Web.

Donc, vous voyez: TCP sur UDP unicast, et même TCP sur UDP diffusé ou multicast !

Autant que je sache, TCP/IPv4 et TCP/IPv6 bénéficient d'un déploiement important.

2
curiousguy

Il existe des exemples de systèmes de communication dans l'armée qui utilisent TCP mais pas IP, car le chemin de communication est une connexion de type série qui n'est pas acheminée via des routeurs, etc. Si vous regardez l'élément a TCP paquet avant son en-tête avec des champs IP, il semble facilement possible de ne pas utiliser IP si votre protocole de "routage" est différent.

1
Jeremy