TCP e IP (v4 & v6) são definitivamente separáveis, e um não implica o outro, como provado pelo exemplo do TCP sobre IPX ( RFC 1791 ).
No entanto, o TCP não pode ser construído apenas sobre qualquer protocolo de rede. Duas razões:
- 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 o IPv4 ( RFC 791 ), o IPv6 ( RFC 2460 ) e IPX ( RFC 1791 . Mas não é verdade em geral, por exemplo, não para transportadoras aviárias ( RFC 1149 ) (veja nota a).
- O TCP é 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 em um túnel TCP.
A especificação TCP, RFC 793 , não é uma boa fonte para decidir essa questão , porque admite que deixa sua interface com a camada inferior em grande parte não especificada.
Note a) Para TCP remontar os datagramas impressos em pequenas folhas de papel (carregadas por pombos ou uma rede corvid mais inteligente), o tamanho da carga teria que ser escrito em um local padrão. Alternativamente, uma camada de adaptação poderia determinar heuristicamente o tamanho do segmento. O scanner óptico usado na implementação da pilha de hosts da especificação de portadores de aves ( RFC 1149 ) incluiu tal camada de adaptação heurística, mas permanece sem documentação.