¿HTTPS utiliza TCP o UDP?

Respuestas:

41

HTTPS puede ejecutarse sobre cualquier protocolo de transporte de flujo confiable . Normalmente eso es TCP, pero también podría ser SCTP. NO se espera que se ejecute sobre UDP, que es un protocolo de datagrama poco confiable (de hecho, si bien ese no es su nombre oficial, es una buena manera de recordar cuál es).

La asignación de IANA para UDP es histórica; en ese momento, a casi todos los protocolos se les asignaron los números de puerto TCP y UDP, incluso si se esperaba que solo usaría uno. Se ha debatido sobre la fusión de los registros de número de puerto, y solo se asignará un puerto a un protocolo de aquí en adelante. Esto es para facilitar la implementación de futuros protocolos de transporte que de otro modo necesitarían sus propios registros. No sé cómo concluyó esa discusión.

Andrew McGregor
fuente
1
La mayoría de las implementaciones SSL lo exponen como socket SSL, por lo que implica TCP. Hay casos muy raros de utilizar cualquier otro medio de transporte.
Nasko
3
Advertencia: esta respuesta está desactualizada (hace 9 años). Eche un vistazo a la respuesta sobre el protocolo QUIC, que es una implementación que Google usa para Chrome. Solo digo.
ivanleoncz
33

Utiliza TCP. Sería difícil ejecutarlo en UDP sin la garantía de la llegada de paquetes. Si los paquetes no llegan, los datos cifrados no serán descifrables.

sybreon
fuente
44
O si los paquetes llegan fuera de servicio, ya que UDP no contiene disposiciones para reordenar paquetes como TCP.
Janneb
3
No voy a -1 porque sería un poco pedante, pero vale la pena señalar que no hay razón para que no pueda ejecutarse sobre UDP. Puede ser atípico, pero es posible.
ThatGraemeGuy
12

Para la próxima vez, si se pregunta si un servicio de puerto predeterminado se ejecuta en tcp o udp, puede consultar / etc / services en una máquina Linux.

Deimosfr
fuente
3
O una máquina Windows, en un símbolo del sistema:find "https" %windir%\system32\drivers\etc\services
ThatGraemeGuy
1
Mi / etc / services también enumera 80 / udp. En realidad, muchos servicios han asignado ambos puertos, "por si acaso", supongo.
Peter Eisentraut el
8

Hoy en día HTTPS puede ejecutarse por encima de TCP o UDP.

El nuevo protocolo "QUIC" tiene como objetivo reemplazar múltiples conexiones TCP con una conexión UDP multiplexada y, por lo tanto, puede manejar SSL y HTTPS:

HTTPS → SSL → Flujo QUIC → UDP → IP

QUIC fue desarrollado originalmente en 2012 por Google y está siendo revisado por IETF. Para más detalles, ver Wikipedia.

JP Tosoni
fuente
Esta debería ser la respuesta, considerando el escenario actual. Por ejemplo, para fines experimentales, solo pude bloquear el tráfico HTTPS para una IP específica, usando DROPobjetivos en la mangletabla, usando el udpprotocolo para la regla.
ivanleoncz
2
+1, no esperaba aprender algo al hacer clic en esta pregunta.
T.Coutlakis
7

El modelo OSI permite que los protocolos de capa superior se ejecuten sobre cualquier protocolo subyacente que proporcione los servicios correctos. HTTPS es HTTP usando seguridad SSL / TLS. SSL / TLS generalmente se ejecuta sobre TCP, pero no hay nada que le impida ejecutarlo en UDP, SCTP o cualquier otro protocolo de capa de transporte.

De hecho, HTTPS sobre TCP y UDP están definidos como "bien conocidos" por IANA y tienen números de puerto reservados.

Ver http://www.iana.org/assignments/port-numbers para las combinaciones de puertos / protocolos "oficiales".

pehrs
fuente
1
Consulte, por ejemplo, tools.ietf.org/html/rfc4347 (Seguridad de la capa de transporte de datagramas) para ver cómo SSL / TLS puede ejecutarse en UDP.
pehrs
0
  • HTTPS es HTTP sobre TLS sobre TCP sobre IP.
  • TLS sobre UDP es una implementación específica llamada DTLS ; donde la D significa "Datagrama".
Serge Stroobandt
fuente