Czy HTTPS używa TCP lub UDP?

Odpowiedzi:

41

HTTPS może działać na dowolnym niezawodnym protokole transportu strumienia . Zwykle jest to TCP, ale może to być również SCTP. NIE oczekuje się, że będzie działał przez UDP, który jest zawodnym protokołem datagramowym (w rzeczywistości, chociaż nie jest to jego oficjalna nazwa, jest to dobry sposób na zapamiętanie, co to jest).

Zadanie IANA dla UDP ma charakter historyczny; w tym czasie prawie każdemu protokołowi przypisano zarówno numery portów TCP, jak i UDP, nawet jeśli spodziewano się, że użyje tylko jednego. Dyskutowano na temat łączenia rejestrów numerów portów i odtąd tylko przypisywania jednego portu do jednego protokołu. Ma to na celu ułatwienie wdrażania przyszłych protokołów transportowych, które w innym przypadku wymagałyby własnych rejestrów. Nie wiem, jak zakończyła się ta dyskusja.

Andrew McGregor
źródło
1
Większość implementacji SSL ujawnia to jako gniazdo SSL, więc sugeruje TCP. Istnieją bardzo rzadkie przypadki korzystania z jakiegokolwiek innego transportu.
Nasko
3
Ostrzeżenie: ta odpowiedź jest nieaktualna (9 lat temu). Spójrz na odpowiedź na temat protokołu QUIC, który jest implementacją używaną przez Google dla Chrome. Tylko mówię.
ivanleoncz
33

Używa TCP. Trudno byłoby uruchomić go na UDP bez gwarancji nadchodzących pakietów. Jeśli pakiety nie dotrą, zaszyfrowane dane nie zostaną rozszyfrowane.

sybreon
źródło
4
Lub jeśli pakiety przychodzą nieuporządkowane, ponieważ UDP nie zawiera przepisów dotyczących zmiany kolejności pakietów, takich jak TCP.
janneb
3
Nie zamierzam cię -1, ponieważ byłoby to trochę pedantyczne, ale warto zauważyć, że nie ma powodu, dla którego nie można by go uruchomić przez UDP. Może to być nietypowe, ale jest możliwe.
ThatGraemeGuy
12

Następnym razem, jeśli zastanawiasz się, czy domyślna usługa portu działa na tcp lub udp, możesz spojrzeć na / etc / services na komputerze z systemem Linux.

Deimosfr
źródło
3
Lub komputer z systemem Windows, w wierszu poleceń:find "https" %windir%\system32\drivers\etc\services
ThatGraemeGuy
1
Moje / etc / services zawiera również listę 80 / udp. W rzeczywistości wiele usług przypisało oba porty, „na wszelki wypadek”.
Peter Eisentraut,
8

Obecnie HTTPS może działać powyżej TCP lub UDP.

Nowy protokół „QUIC” ma na celu zastąpienie wielu połączeń TCP jednym multipleksowanym połączeniem UDP, a zatem może obsługiwać SSL i HTTPS:

HTTPS → SSL → przepływ QUIC → UDP → IP

QUIC został pierwotnie opracowany w 2012 r. Przez Google i jest poddawany przeglądowi IETF. Aby uzyskać więcej informacji, zobacz Wikipedia.

JP Tosoni
źródło
To powinna być odpowiedź, biorąc pod uwagę obecny scenariusz. Na przykład do celów eksperymentalnych mogłem zablokować ruch HTTPS tylko dla określonego adresu IP, używając DROPcelów w mangletabeli i używając udpprotokołu dla reguły.
ivanleoncz
2
+1, nie spodziewałem się czegoś nauczyć, klikając to pytanie.
T.Coutlakis
7

Model OSI umożliwia działanie protokołów wyższych warstw na dowolnym protokole bazowym zapewniającym prawidłowe usługi. HTTPS to HTTP wykorzystujący zabezpieczenia SSL / TLS. SSL / TLS zazwyczaj działa na TCP, ale nic nie stoi na przeszkodzie, aby uruchomić go na UDP, SCTP lub innym protokole warstwy transportowej.

W rzeczywistości HTTPS przez TCP i UDP są zdefiniowane przez IANA jako „dobrze znane” i mają zarezerwowane numery portów.

Zobacz http://www.iana.org/assignments/port-numbers, aby uzyskać informacje na temat „oficjalnych” kombinacji portów / protokołów.

pehrs
źródło
1
Zobacz na przykład tools.ietf.org/html/rfc4347 (Datagram Transport Layer Security), w jaki sposób SSL / TLS może działać przez UDP.
pehrs,
0
  • HTTPS to HTTP przez TLS przez TCP przez IP.
  • TLS przez UDP to specyficzna implementacja o nazwie DTLS ; gdzie D oznacza „Datagram”.
Serge Stroobandt
źródło