O TCP deve usar o IP?

108

É verdade que TCP é uma abreviação de TCP / IP e significa a mesma coisa?

É possível que o TCP seja construído sobre outro protocolo além do IP ?

Pacerier
fonte
31
Por que não? Eu poderia ter visto o TCP sobre código morse uma vez.
soandos 16/07/12
2
Um exemplo seria um túnel ICMP, que usa TCP sobre ICMP. Mas é verdade que não é comum criar TCP sobre qualquer coisa que não seja IP. Geralmente, é a camada de acesso à rede que utiliza uma ampla gama de protocolos e canais (como bateria bongô).
Mister Smith
11
@TomWijsman Tentou falhar? Pelo que entendi, qualquer problema que eles tivessem a ver com a solução de problemas e interoperabilidade, em vez de qualquer problema em fazer o TCP funcionar.
tylerl
2
@harper Com código Morse comum, 200 caracteres / minuto certamente não são inéditos para operadores qualificados, e 100 c / min (20 wpm) é definitivamente possível pela maioria das pessoas com bastante prática. Obviamente, nessas velocidades, você realmente não ouve cada personagem individualmente, mas sim o som das palavras. (Dizem que a marca registrada de um operador qualificado é que eles se lembram da conversa, mas não das palavras usadas.) Imagino, no entanto, que caracteres de 100 c / min espaçados a uma velocidade geral de 50-60 c / min seriam possíveis com taxas de erro de caracteres desprezíveis.
um CVn
2
@ harper Depende do seu nível de precisão necessário. Para conversas em geral, é muito difícil conseguir uma palavra aqui e ali erradamente, porque o contexto importa mais do que as palavras exatas usadas. Para tráfego de telegrama, comunicações de emergência / angústia e assim por diante, principalmente se o texto for cifrado, todas as palavras e todos os caracteres devem ser (não apenas recebidos, mas também) copiados corretamente (e de forma legível). Note que eu disse que 200 c / min "não é inédito"; não é comum. 100 c / min, porém, é bastante comum nas bandas de rádio amador.
um CVn

Respostas:

16

TCP e IP (v4 e v6) são definitivamente separáveis, e um não implica o outro, como comprovado pelo exemplo de TCP sobre IPX ( RFC 1791 ).

No entanto, o TCP não pode ser construído sobre qualquer protocolo de rede. Duas razões:

  1. Não há campo de tamanho de segmento no cabeçalho TCP (apenas o deslocamento de dados, que fornece o tamanho do cabeçalho TCP). Portanto, o TCP funcionará apenas com um protocolo de camada inferior que inclui informações suficientes para calcular o tamanho do segmento TCP (ou seja, o tamanho da carga útil do protocolo de camada inferior). Essa suposição é verdadeira para IPv4 ( RFC 791 ), IPv6 ( RFC 2460 ) e IPX ( RFC 1791 ). Mas isso não é verdade em geral, por exemplo, não para as transportadoras aviárias ( RFC 1149 ) (consulte a nota a).
  2. O TCP foi projetado apenas para funcionar em um protocolo de rede sem conexão. O TCP efetivamente não funciona em determinados protocolos de rede orientados a conexão (por exemplo, o serviço de taxa de bits constante ATM), porque as duas funções de controle de taxa de combate levam a um desempenho muito ruim ou imprevisível. Outro exemplo degenerado é o TCP sobre um túnel TCP.

A especificação TCP, RFC 793 , não é uma boa fonte para decidir esta questão, pois admite que deixa sua interface com a camada inferior em grande parte não especificada.

Nota a) Para o TCP remontar datagramas impressos em pequenas folhas de papel (transportadas por pombos ou por uma rede corvid mais inteligente), o tamanho da carga útil teria que ser escrito em um local padrão. Como alternativa, uma camada de adaptação pode determinar heuristicamente o tamanho do segmento. O scanner óptico usado na implementação da pilha host das especificações das transportadoras aviárias ( RFC 1149 ) incluiu uma camada de adaptação heurística, mas permanece sem documentos.

Bob briscoe
fonte
2
Tecnicamente preciso (tanto quanto eu posso dizer), completo, apoiado em referências, claro e alegre. Eu daria a isso um punhado de votos possíveis.
22415 Scott
2
O exemplo aviário é lúcido e hilário!
joh
88

Eu não li a RFC inteira, mas o idioma na seção 1.4 parece sugerir que qualquer protocolo de "nível inferior" possa ser usado.

A interface entre o TCP e o protocolo de nível inferior é essencialmente não especificada, exceto que se supõe que exista um mecanismo pelo qual os dois níveis possam transmitir informações de forma assíncrona. Normalmente, espera-se que o protocolo de nível inferior especifique essa interface. O TCP foi projetado para funcionar em um ambiente muito geral de redes interconectadas. O protocolo de nível inferior assumido neste documento é o Protocolo da Internet.

LawrenceC
fonte
101
O próprio IP foi implementado em muitas tecnologias de rede, até pombos-correio . Os pássaros foram realmente usados ​​para demonstrar a entrega de pacotes ICMP Ping, com uma perda de 55% (aparentemente devido a erro do operador) e latências variando de uma a duas horas. Seria possível executar TCP em cima disso, mas a configuração da conexão exigiria um lote de aves ....
RBerteig
21
Sobre o comentário de RBerteig; considere um pombo-correio carregando um cartão mini-SDHC. Há a diferença entre latência e taxa de transferência. :-)
um CVn
16
@ MichaelKjörling Isso não interoperaria com a RFC 1149: “O datagrama IP é impresso, em um pequeno rolo de papel”.
kmkaplan 17/07/2012
4
@kmkaplan A menos que o datagrama tenha sido impresso na etiqueta do cartão SDHC. É como o clichê de vários filmes - "oh, está realmente no disco rígido!"
21117 Jon Hanna
40
Teria que haver alguns buracos seriamente grandes no firewall para permitir a passagem de transportadoras aviárias.
21412 squillman
76

Internet Protocol Suite

TCP não é abreviação de TCP / IP.

O TCP / IP é frequentemente usado como uma forma abreviada de dizer " O Internet Protocol Suite " e geralmente inclui outros protocolos padrão. Quando as pessoas dizem TCP / IP, geralmente incluem UDP sobre IP (no qual UDP é usado em vez de TCP) e muitos outros protocolos como ARP, ICMP, DNS, SNMP e outros protocolos da camada de aplicação.

Camada de aplicação

Os aplicativos usam protocolos da camada de aplicativos, como SMTP (para email). Eles estão em um dos dois protocolos da camada de transporte - TCP e UDP. Alguns protocolos da camada de aplicação usarão um ou ambos UDP e TCP, mas a maioria é usada com apenas um protocolo da camada de transporte.

Camada de transporte

TCP e UDP são dois protocolos da camada de transporte usados ​​no Internet Protocol Suite. Se existem outros que não os conheço e outros representariam um uso especializado muito pequeno. Outros protocolos da camada de transporte foram definidos - seu uso provavelmente representa apenas uma pequena proporção do tráfego IP global

Camada entre redes

Embora possa ser teoricamente possível usar o TCP em algo que não seja o IP, na prática o TCP é sempre usado sobre o IP - o Protocolo da Internet. O IP move pacotes entre redes (pense no IP como conectando várias LANs)

Camada de interface de rede

A Ethernet é apenas a família mais popular de protocolos de camada de link de baixo nível nos quais o TCP / IP é transportado, mas o TCP / IP também é amplamente usado em ATM e outros.

Diagrama da camada IP No bootdiscs.net


Apêndice 1 - Uma nota sobre protocolos da camada de transporte

Os únicos protocolos da camada de transporte em uso significativo em redes que usam o Internet Protocol Suite são TCP e UDP.

† Apenas por diversão, medi o tráfego na minha LAN (muito) pequena, que inclui NetBIOS (sobre TCP), SSH, Rsync, E-mail, atualizações de software, DNS, conversas gerais na caixa do Windows e alguns outros tipos de tráfego.Estatísticas da hierarquia do protocolo Wirshark

Observe também esta declaração nas perguntas frequentes do Google para o protocolo QUIC

Por que você não construiu um protocolo totalmente novo, em vez de usar o UDP? Hoje, as caixas intermediárias da Internet geralmente bloqueiam o tráfego, a menos que seja tráfego TCP ou UDP

(minha ênfase)

RedGrittyBrick
fonte
11
Me trouxe todo o caminho de volta a 1996 e ao modelo OSI en.wikipedia.org/wiki/OSI_model
Rudi
Existem mais de 2 protocolos de camada de transporte: en.wikipedia.org/wiki/Transport_layer#Protocols
Stuart Blackler
@StuartBlackler: Ponto interessante, obrigado. Existem outros (que não sejam TCP e UDP) que não se enquadram no que eu chamei de categoria "uso extremamente pequeno e especializado" e que são usados ​​por IP? Se eu medisse o tráfego IP em um ponto de intercâmbio na Internet , que proporção dos protocolos da camada de transporte seria outra coisa senão TCP ou UDP?
RedGrittyBrick
Tomemos o DCCP, por exemplo, ainda é um novo protocolo, mas imagino que nos próximos anos você verá mais aplicativos usando o protocolo. A razão pela qual ainda não acho que seja mainstream é porque não acredito que haja suporte para isso no Windows. Pense nisso como UDP com controle de congestionamento. Pode ser muito útil para muitos aplicativos, como Skype e jogos :) Dê uma olhada. Para responder à sua pergunta, é provavelmente uma quantidade muito pequena no momento
Stuart Blackler
@ Rudi er, você deve perceber que esse não é o modelo de referência OSI e, se você perceber, não engane as pessoas a pensarem que é. É o modelo / arquitetura TCP / IP ... Às vezes, a arquitetura TCP / IP é descrita com a terminologia do OSI, o modelo de referência OSI. Mas as 4 camadas mostradas e com esses nomes são muito TCP / IP, não OSI. Não há problema com a postagem de red, mas seu comentário é enganoso, na melhor das hipóteses.
barlop
34

A razão pela qual TCP / IP é uma abreviação tão comum (em oposição a, digamos, UDP / IP ou SCTP / IP) é porque os dois protocolos foram projetados juntos, e no artigo original de Vint Cerf e Bob Kahn, os dois conceitos foram combinados em um único protocolo. Logo depois, eles foram divididos em IP para fornecer roteamento e TCP para fornecer controle de fluxo, multiplexação, detecção de erros etc. Somente seis anos depois o UDP foi introduzido para fornecer uma camada de multiplexação "leve" sem o restante do sobrecarga envolvida com o TCP.

Ainda assim, TCP e IP são duas coisas separadas e completamente e intencionalmente independentes. O fato de o TCP não exigir IP é imediatamente aparente, pois ele pode ser executado sem modificação no IPv4 e no IPv6, que são dois protocolos completamente diferentes.

Com um pouco de trabalho, você poderia criar um protocolo concorrente para IP que atendesse aos mesmos propósitos, mas provavelmente teria que conter a maioria, senão todos os mesmos recursos, e provavelmente acabaria parecendo muito com IP de qualquer maneira. Você poderia argumentar que as extensões ao IP (como IPSec) são efetivamente protocolos alternativos da camada 3, e pronto.

tylerl
fonte
11
Correto - a primeira versão do TCP incluía a funcionalidade do IP. Talvez outro motivo pelo qual as pessoas digam "TCP / IP" seja que, na maioria das vezes, quando você envia dados por IP, você deseja garantir que tudo seja entregue e na ordem correta, para que você use o TCP. Por exemplo, todo o tráfego HTTP e FTP usa TCP. Uma categoria de exceções são os dados em tempo real; O Skype, por exemplo, usa UDP, porque você prefere obter o pacote mais recente em uma conversa do que interromper tudo para obter um que você perdeu.
21712 Nathan Long
21

Você pode substituir o IP por outra coisa. Na verdade, é exatamente isso que você faz quando usa o TCP sobre IPv6. O TCP ainda é TCP, mas o IP é v6 em vez de v4.

AFAIK, ninguém criou nenhum outro protocolo de camada 3 para trabalhar com o TCP acima deles, mas não há razão para que você não possa.

Mark Reed
fonte
9

TCP e IP são como manteiga sobre pão.

Você pode emparelhar qualquer outra coisa que funcione com qualquer um dos protocolos, mas esses dois são tão complementares que é apenas uma maneira confiável e agradável de transferir dados e encher a barriga com dados da Internet. Lubrifica o tubo para permitir que outros alimentos secos e handshake de dados também apóiem ​​esse emparelhamento. Mas de forma alguma é exclusivo.

P No entanto, não é possível que o TCP seja construído sobre outro protocolo além do IP?

A Sim, é possível. Eu gosto dos exemplos de código Morse e pombo do TCP sem IP.

Tony Stewart Sunnyskyguy EE75
fonte
5

Eu sempre ouvi dizer que TCP é a abreviação de TCP / IP

Na verdade, significa Transmission Control Protocol over Internet Protocol

e eles significam a mesma coisa.

Isso não está correto.

Primeiro, a Ethernet é o sistema de hardware de baixo nível que controla como as peças de hardware reais funcionam.

Em seguida, pense no IP como um sistema telefônico ou sinais de trânsito. Ele fornece o controle básico de conectar o sistema dois pontos juntos.

Por outro lado, o TCP é mais como um sistema de mensagens ou um oficial de controle de tráfego que direciona as mensagens / carros para o ponto correto.

Tomados em conjunto, o TCP / IP, fornece um sistema de transferência confiável de dados de e para quaisquer dois dispositivos conectados.

Com a Internet, quando você deseja enviar ou receber dados, a parte IP do sistema é a parte que controla a conexão real do hardware com os fios (ou ondas sem fio). A parte TCP do sistema é o software responsável por coletar e decompor os dados, enviá-los, remontar os dados recebidos e verificar os dados e reenviá-los, se necessário.

Existem inúmeras explicações com analogias e detalhes técnicos disponíveis, especialmente na forma de vídeo . A DiferençaBetween.net tem uma opinião particularmente boa sobre esse assunto exato .

No entanto, não é possível que o TCP seja construído sobre outro protocolo além do IP?

Sim, você pode realmente criar um sistema alternativo para o TCP que use IP. Dê uma olhada no Internet Protocol Suite para obter alguns detalhes.

Synetech
fonte
13
É um pouco enganador dizer que o IP "conecta" dois pontos juntos. O IP fornece uma maneira de enviar pacotes individuais discretos de uma máquina para outra; cada pacote é independente de todos os outros. O TCP fornece a ilusão de uma conexão contínua , que é realmente uma sequência de pacotes enviados via IP.
21912 Wyzard
4
O IP também não está relacionado ao hardware ou à sinalização física. Isso é tratado por tecnologias de nível inferior, por exemplo, Ethernet.
Wyzard 17/07/2012
9
Há muita coisa errada nessa resposta e ela perde totalmente a questão. Primeiro, a Ethernet é apenas um protocolo de camada de link que foi usado para transportar IP. Existem muitos outros, e o IP não conhece nem se importa com nenhum deles. IP não tem nada a ver com o hardware; é a camada de roteamento entre redes, acima do hardware usado para conectá-las. O ponto principal da pergunta era se você pode usar o TCP em algo que não seja IP, e não se pode usar algo que não seja o TCP que usa IP (consulte UDP para obter um exemplo disso).
Psusi 17/07/2012
3
@ Synetech, a questão não era "outra coisa pode ser usada no IP". Foi "o TCP pode ser usado em outra coisa", ou seja, sem IP.
21412 Wyzard
2
> the fact that !TCP can go over IP does not necessarily mean TCP can go over !IP Huh?psusi está tentando ser inteligente usando "!" como o "não operador". Seu comentário deve ser lido como: "o fato de que algo que não é TCP pode passar por IP não significa necessariamente que o TCP pode passar por algo que não é IP". É feito em referência à última frase da sua resposta, que mostrou a existência de "Sistemas alternativos ao TCP". No entanto, mostrar que existem alternativas ao TCP não implica necessariamente nem sugere que existem alternativas ao IP.
Lie Ryan
5

TCP é um protocolo de camada 4. Ele fornece transporte garantido de dados na forma de um fluxo ordenado de um processo em um computador para outro processo no mesmo / outro computador.

IP é um protocolo de camada 3. Ele fornece transporte de um host para outro.

Contanto que exista um protocolo que possa hospedar a transferência de dados host, o TCP funcionará.

Portanto, o TCP pode ser implementado em qualquer protocolo, mas apenas fizemos o IP. IP é simples e faz o trabalho.

Não há necessidade de outro protocolo da camada 3.

SurenNihalani
fonte
11
E o IPv6?
110525
11
E o IPv6? É apenas IP. A interface de envio e recebimento de um pacote permanece a mesma. Portanto, o TCP pode usar a mesma função. O SO pode simplesmente substituir o ponteiro de função do IPv4 e IPv6 e ainda funcionaria. Não sei ao certo o que você está dizendo aqui?
SurenNihalani
3
O IPv6 e o ​​IPv4 são semelhantes , com interfaces semelhantes para as camadas superiores, mas certamente não são o mesmo protocolo e também não são estritamente funcionalmente equivalentes.
23412
Assim como você pode fingir que UDP é o mesmo protocolo IP , porque eles oferecem interfaces de extremamente semelhantes às camadas superiores: definir um local e um remoto endpoint endereços, enviar e receber pacotes ...
curiousguy
3

Ao projetar uma rede, você deve escolher um conjunto de protocolos (que são basicamente conjuntos de regras de comunicação entre máquinas), para cada uma das várias "camadas" (que você pode imaginar como diferentes níveis de abstração, que os designers de rede gostam) lembre-se de criar e combinar protocolos).

Versão mais simples: os protocolos são como caixas nas quais colocamos nossas mensagens . Essas caixas têm tamanhos diferentes e você coloca sua mensagem na caixa menor, depois a menor em uma caixa um pouco maior, etc. Escolher um conjunto de protocolos é escolher que tipo de caixas você usará para cada " camada "que envolve sua mensagem.

TCP e IP são protocolos para duas camadas independentes, criadas em conjunto e que podem ser usadas em conjunto; mas pode muito bem ser usado com outros protocolos. Isso acontece com bastante frequência: você pode usar o IP junto com um protocolo não-TCP ou TCP junto com um protocolo não-IP .

A razão pela qual o TCP / IP é uma abreviação tão comum é que esses dois protocolos formaram, juntos, a base da Internet e foram a chave para seu sucesso .

(O TCP e o IP têm algumas funcionalidades que foram projetadas especificamente para que funcionem juntas, o que é algo que os puristas costumam reclamar, mas na verdade não impedem que você as interfira com outros protocolos)

userBigNum
fonte
2

Eu acho que é possível executar o transporte TCP sobre IPX, se você quiser se tornar retro.

RDA
fonte
11
Você provavelmente está pensando em quando o IPX foi encapsulado em TCP / IP. O que surpreendentemente não durou muito.
andygavin
2

No entanto, não é possível que o TCP seja construído sobre outro protocolo além do IP?

Além dos clássicos TCP / IPv4 e TCP / IPv6, alguns protocolos experimentais foram projetados, por exemplo:

Quase TCP sobre UDP (atou)

Como parte de nossos esforços Net100 e Probe para melhorar as transferências em massa em redes de alta velocidade e alta latência, desenvolvemos uma versão instrumentada e ajustável do TCP que é executada em UDP. O transporte UDP do tipo TCP serve como um recurso de teste para experimentar controles do tipo TCP no nível do aplicativo semelhante ao TReno.

E iproxy: executando serviços TCP em UDP , o que é mais divertido:

O iproxy é composto por um proxy do lado do cliente e um proxy do lado do servidor que permite que serviços TCP / IP arbitrários sejam executados sobre Broadcast, Multicast ou Unicast UDP. Foi originalmente concebido como um método para configurar servidores que não receberam um endereço IP na LAN usando uma interface baseada na Web.

Então você vê: TCP no UDP unicast e até TCP no UDP broadcast ou multicast !

Somente o AFAIK TCP / IPv4 e TCP / IPv6 desfrutam de uma grande implantação.

curiousguy
fonte
Sim, mas isso é UDP sobre IP; Eu vejo o que você fez lá ...
Tamara Wijsman
@TomWijsman Sim, é TCP / UDP / IP.
curiousguy
2

A resposta é não! Por exemplo, há uma RFC antiga que descreve o TCP sobre IPX: http://tools.ietf.org/html/rfc1791

Para aqueles com pouca memória, o IPX era o protocolo Novell Netware: http://en.wikipedia.org/wiki/Internetwork_Packet_Exchange

teambob
fonte
Eu sei que a resposta é antiga, mas, se possível, elabore mais a sua resposta e evite postar links como respostas / fonte simples. se os links desaparecerem, também será sua resposta.
Lorenzo Von Matterhorn
2

Já existem implementações de TCP sobre vários protocolos que suportam o transporte de um datagrama básico. De fato, nem é necessário especificar as informações de roteamento (o TCP nem precisa de IP para trabalhar, apenas um link serila com um destinatário implícito seria suficiente).

Portanto, você tem o TCP implementado no topo do UDP (vantagem: você usa uma única porta no lado do "servidor" ou pode incorporá-lo em uma conexão existente transportando vários canais multiplexados). Somente o nível de IP fornece o roteamento, mas o TCP não precisa dele. Tudo o que importa é que o conceito de MTU seja fornecido pela camada inferior.

Isso permite que o protocolo ignore as limitações da passagem NAT, sem a necessidade de registrar uma porta de conversão UPnP para um host específico. Ele permite o ajuste independente do MTU e MSS, otimizado para cada cliente, e não por cada roteador compartilhado intermediário. Outros protocolos de roteamento são possíveis (inclusive para entrega via multicast e redes de broadcast). E você tem a escolha dos mecanismos de segurança.

Um exemplo de uso é o Gogo6.net (que implementa seu canal de transporte IPv6 em uma sessão TCP usando uma reimplementação do TCP sobre UDP v4 (funciona na maioria dos roteadores de acesso doméstico que ainda possuem apenas um endereço IPv4 e nem sempre suportam o método UPnP ; sem a necessidade de configurá-lo pelos usuários usando um número de porta constante específico para o aplicativo, mesmo quando não estiver em execução)

Outros exemplos são encapsular a versão 1.1 do TCP sobre HTTP (ou HTTPS) com sua extensão "transmitida" nativa. A maioria das VPNs que permitem a conexão de redes pela Internet fará o mesmo. A ponte pode até encapsular vários protocolos: Ethernet, PPP, IPv4 e IPv6 (estendendo apenas o segmento LAN ou Ethernet local), NetBEUI / LanMan, descoberta de roteador (dentro da rede em ponte), inclusive no modo bruto (permitindo DHCPv4 ou DHCPv6) em a rede em ponte. O HTTPS é usado porque o encapsulamento por HTTPS também permite criptografia e autenticação para estabelecer e proteger a ponte, mas não requer autenticação / criptografia de ponta a ponta para clientes e servidores na rede em ponte e porque os roteadores são altamente otimizados para HTTP e HTTPS.

verdy_p
fonte
1

Existem exemplos de sistemas de comunicação nas forças armadas usando TCP, mas não IP, pois o caminho de comunicação é uma conexão do tipo serial que não é roteada através de roteadores, etc. Se você observar o pacote TCP antes de encabeçar com campos IP, parece facilmente possível não usar IP se o seu protocolo de "roteamento" for diferente.

Jeremy
fonte