Por que o TCP e o SCTP não foram projetados para serem usados em UDP?

1

Como é bem sabido, TCP e SCTP são geralmente usados sobre IP diretamente. Mas eu acho algumas vantagens se elas foram projetadas para serem usadas em UDP:

  • Eles não precisarão de portas, talvez também de soma de verificação, já que o UDP fornece portas e soma de verificação.
  • Eles poderão ser implementados no espaço do usuário.
  • NATs não precisarão implementá-las. Talvez ainda existam alguns NATs sem suporte para o SCTP.
  • Protocolos como o DNS serão capazes de fazer o handshake TCP mais rápido, caso a resposta seja muito longa para o UDP, porque um pacote UDP já terá sido enviado nesse caso.

Então, por que o TCP e o SCTP não foram projetados para serem usados em UDP?

Ao comparar o TCP com SSL, é fácil ver,

  • O aplicativo que usa SSL deseja um canal seguro e confiável. Como o TCP é confiável, ele pode aproveitar o TCP para economizar esforços.
  • O aplicativo que usa TCP e SCTP deseja um canal confiável. Como o UDP fornece um canal, eles podem aproveitar o UDP para economizar esforços.

Eu tentei pensar sobre as desvantagens do TCP e do SCTP em relação ao UDP. Eu só surgiu com isso, então o servidor terá que distinguir quando o TCP ou SCTP está sendo usado. Ele pode ser resolvido usando outra porta (como 443 e 80) ou usando um comando (como STARTTLS ).

    
por tv6x5pe2 31.07.2017 / 17:37

1 resposta

2

Existem dificuldades para implementar o TCP sobre o UDP, principalmente:

  • Pacotes TCP e Pacotes UDP têm um formato incompatível.
  • O TCP e o UDP têm diferentes números de protocolo (vistos no cabeçalho IP ), significando que os pacotes TCP para uma porta UDP não seriam passados para a protocolo de camada superior.

No entanto, protocolos que implementam algoritmos TCP no topo do UDP foram implementadas para necessidades muito específicas. Isso é chamado de "Pseudo TCP", usado principalmente por aplicativos P2P porque o NAT traversal para TCP é mais complicado que para o UDP.

Existem duas variações de pseudo-TCP: Libjingle e Libnice . Libjingle é uma biblioteca de código aberto do google usada inicialmente para o gtalk. O desktop do Chrome também usa libjingle para conexões confiáveis.

    
por 31.07.2017 / 18:24

Tags