Apakah HTTP menggunakan UDP?

103

Ini mungkin pertanyaan konyol:

  • Apakah HTTP pernah menggunakan User Datagram Protocol?

Sebagai contoh:

Jika seseorang mengalirkan MP3 atau video menggunakan HTTP, apakah secara internal menggunakan UDP untuk transportasi?

Sesh
sumber
Apa yang Anda maksud dengan: "web"? Maksud Anda menggunakan browser? Atau melalui internet umum?
benc
Yang ingin saya tanyakan adalah mengatakan bahwa ada mp3 yang dihosting di URL seperti someserver / somemusic.mp3 . Jika ini dialirkan ke klien mana pun - browser, perangkat, dll. Bagaimana http mentransfernya. Jika saya memahami jawaban di bawah dengan benar, ini akan didelegasikan ke RTP.
Sesh
Port 80 UDP juga dicadangkan untuk HTTP, yang menurut saya lucu karena saya belum pernah melihatnya digunakan, saya juga tidak dapat membayangkan kegunaannya yang baik.
Joshua
1
Itu dicadangkan karena panitia IANA memiliki imajinasi yang lebih fleksibel daripada yang Anda lakukan. ;-) Mereka membayangkan bahwa mungkin saja ada gunanya untuk itu. Selain itu, untuk tidak mencadangkan port 80 untuk UDP / HTTP akan membiarkannya terbuka untuk beberapa protokol UDP lainnya, yang hanya akan menyebabkan kebingungan ketika berbicara tentang port 80.
Jesse Chisholm

Jawaban:

42

Biasanya, tidak.

Streaming jarang digunakan melalui HTTP itu sendiri, dan HTTP jarang dijalankan melalui UDP. Lihat, bagaimanapun, RTP .

Untuk sesuatu sebagai contoh Anda (dalam komentar), Anda tidak menampilkan protokol untuk sumber daya. Jika protokol itu adalah HTTP, maka saya tidak akan menyebut akses "streaming"; bahkan jika dalam beberapa arti kata itu karena mengirimkan sumber daya (mungkin besar) secara serial melalui jaringan. Biasanya, sumber daya akan disimpan ke disk lokal sebelum diputar ulang, jadi transfer jaringan bukanlah yang biasanya dimaksud dengan "streaming".

Seperti yang ditunjukkan oleh pemberi komentar, memang mungkin untuk benar-benar melakukan streaming melalui HTTP, dan itu dilakukan oleh beberapa orang.

beristirahat
sumber
16
Jelas salah, tidak ada dalam HTTP yang mencegah streaming itu hanya tidak seefisien protokol khusus. HTTP Dyanmic Streaming menggunakan potongan: adobe.com/products/httpdynamicstreaming HTTP Pseudo-Streaming: longtailvideo.com/support/jw-player/jw-player-for-flash-v5/…
Steve-o
14
aliran youtube melalui http.
no
6
@ snowcrash09 Saya bahkan tidak dapat menghapusnya sendiri, karena sudah diterima. Itu aneh. Saya menulis ulang, saya harap sekarang tidak terlalu menyinggung.
bersantai
1
Hanya bertele-tele tentang HTTP dan streaming - jauh di masa kegelapan video QuickTime, ada server push, di mana koneksi HTTP mengirim MJPEG (beberapa gambar JPEG) masing-masing sebagai bagian terpisah dari respons multi-bagian MIME untuk permintaan HTTP. Setiap gambar JPEG muncul dan menggantikan gambar sebelumnya di layar. Tapi Anda benar @unwind, ini jarang dilakukan hari ini, karena RTP / RTSP bekerja lebih baik.
Jesse Chisholm
3
@nos Youtube tidak sedang streaming. Browser mengunduh file ke dalam cache dan mulai memutar dari file tersebut sebelum diunduh sepenuhnya. Meskipun ini mensimulasikan streaming, sebenarnya tidak.
SimonStiph
113

Dari RFC 2616 :

Komunikasi HTTP biasanya dilakukan melalui koneksi TCP / IP. Port default adalah TCP 80, tetapi port lain dapat digunakan. Ini tidak menghalangi HTTP untuk diterapkan di atas protokol lain di Internet, atau di jaringan lain. HTTP hanya menganggap transportasi yang andal; protokol apa pun yang memberikan jaminan seperti itu dapat digunakan; pemetaan permintaan HTTP / 1.1 dan struktur respons ke unit data transportasi dari protokol yang dimaksud berada di luar cakupan spesifikasi ini.

Jadi meskipun tidak secara eksplisit mengatakannya, UDP tidak digunakan karena ini bukan "transportasi yang dapat diandalkan".

EDIT - baru-baru ini, protokol QUIC (yang lebih ketat adalah pseudo-transport atau protokol lapisan sesi) menggunakan UDP untuk membawa lalu lintas HTTP / 2.0 dan sebagian besar lalu lintas Google sudah menggunakan protokol ini. Saat ini berkembang menuju standardisasi sebagai HTTP / 3 .

Alnitak
sumber
Apakah ada server web yang dapat dikonfigurasi untuk menerima koneksi yang bukan TCP?
Spidey
1
Ada modifikasi pada apache di sini pel.cis.udel.edu untuk menggunakan protokol SCTP, bukan TCP.
no
@nos Yup, dan Google juga memiliki SPDY. Keduanya adalah mekanisme transportasi yang andal .
Alnitak
5
@Alnitak SPDY adalah protokol lapisan aplikasi, bukan protokol lapisan transport.
Walking Wiki
@WalkingWiki tentu saja Anda benar - dalam konteks itu SPDY menggantikan HTTP, bukan TCP.
Alnitak
36

Mungkin hanya sedikit hal sepele, tetapi UPnP akan menggunakan pesan berformat HTTP melalui UDP untuk penemuan perangkat.

Frank Schwieterman
sumber
4
Untuk lebih spesifiknya, porsi UPnP yang menggunakan pesan UDP dan HTTP-like disebut SSDP (Simple Service Discovery Protocol). Struktur pesannya sama, tetapi METHODhimpunannya berbeda. Setelah itu, UPnP menggunakan protokol lain (dan biasanya TCP) untuk sisa fungsinya.
Jesse Chisholm
20

Ya, HTTP, sebagai protokol aplikasi, dapat ditransfer melalui protokol transport UDP. Berikut adalah beberapa layanan yang menggunakan UDP dan protokol yang mendasari untuk mentransfer data HTTP dan mengalirkannya ke pengguna akhir:

  • Metode Transportasi UDP Mentah Jingle XMPP
  • Nomor untuk layanan yang menggunakan UDT --- Protokol Transfer Data berbasis UDP, yang merupakan superset dari protokol UDP.
  • Protokol Transport Layer Security (TLS) yang merangkum HTTP serta XMPP yang disebutkan di atas dan protokol aplikasi lainnya memang memiliki implementasi yang menggunakan UDP di lapisan transportnya; implementasi ini disebut Datagram Transport Layer Security (DTLS).
  • Pemberitahuan push di GNUTella adalah permintaan HTTP yang dikirim melalui transportasi UDP.

Artikel ini berisi perincian lebih lanjut tentang streaming melalui UDP dan superset andalannya, RUDP: Reliable UDP (RUDP): The Next Big Streaming Protocol?

Hadron yang Eksotis
sumber
1
Pertanyaan lain: apakah browser web utama mendukung halaman web HTTP melalui UDP?
pengguna2284570
ya karena HTTP ada di lapisan aplikasi dan UDP di lapisan transport. browser tidak menulis paket TCP atau UDP. Mereka juga tidak menulis paket IP. Itu ditangani oleh OS dan driver. Lapisan ethernet sangat rendah sehingga bisa berada di chip yang dekat dengan MAC pada saat ini.
yan bellavance
@yanbellavance itu sepenuhnya salah. Sementara browser dan web server memang tidak menghasilkan baku frame TCP (atau orang-orang UDP dalam hal ini) mereka tidak harus memilih transportasi untuk digunakan, dan untuk HTTP normal yang selalu TCP. Pseudo-protocol QUIC yang lebih baru tidak menggunakan UDP.
Alnitak
18

Tentu saja, ini tidak harus dikirim melalui TCP. Saya menerapkan HTTP di atas UDP, untuk digunakan dalam industri Penyiaran TV Satelit.

jkc
sumber
6

Mungkin beberapa perubahan pada topik ini dengan QUIC

QUIC (Quick UDP Internet Connections, diucapkan cepat) adalah protokol jaringan lapisan transportasi eksperimental yang dikembangkan oleh Google dan diterapkan pada tahun 2013. QUIC mendukung satu set koneksi multipleks antara dua titik akhir melalui User Datagram Protocol (UDP), dan dirancang untuk memberikan perlindungan keamanan setara dengan TLS / SSL, bersama dengan pengurangan koneksi dan latensi transportasi, dan estimasi bandwidth di setiap arah untuk menghindari kemacetan. Tujuan utama QUIC adalah untuk mengoptimalkan aplikasi web berorientasi koneksi yang saat ini menggunakan TCP.

Sébastien
sumber
4

Jika Anda mengalirkan mp3 atau video yang mungkin belum tentu melalui HTTP, sebenarnya saya akan terkejut jika itu. Ini mungkin akan menjadi protokol lain melalui TCP tetapi saya tidak melihat alasan mengapa Anda tidak dapat melakukan streaming melalui UDP.

Jika Anda melakukannya, Anda harus memperhitungkan bahwa tidak ada kepastian bahwa data Anda akan sampai di ujung lain, tetapi saya dapat mengambilnya bahwa Anda tahu tentang UDP.

Untuk menjawab pertanyaan Anda, Tidak, HTTP TIDAK menggunakan UDP. Untuk apa yang Anda bicarakan, streaming mp3 / video DAPAT terjadi melalui UDP dan menurut saya tidak boleh terjadi melalui HTTP.

Henry B
sumber
1
"streaming" melalui HTTP biasanya disebut (yang saya anggap paling akurat) "streaming semu" - laju bit data yang diatur melalui HTTP. Seperti banyak di dunia kita, jenis pemasaran telah menyalahgunakan nomenklatur meninggalkan orang-orang yang berorientasi pada detail seperti kita menggenggam secara spesifik.
Stu Thompson
4

Secara teori ya dimungkinkan untuk menggunakan UDP untuk http tapi itu mungkin bermasalah. Katakanlah misalnya dalam contoh Anda mp3 atau video sedang streaming akan ada masalah pemesanan dan beberapa bit mungkin hilang karena UDP tidak berorientasi koneksi tidak ada mekanisme pengiriman ulang.

HM Manya
sumber
1
Nah disebutkan: UDP is not connection oriented there is no retransmit mechanism.
ivanleoncz
4

Saya pikir beberapa jawaban tidak memiliki poin penting. Pilihan antara UDP dan TCP tidak boleh didasarkan pada jenis data (mis., Audio atau video) atau apakah aplikasi mulai memutarnya sebelum transfer selesai ("streaming"), tetapi apakah itu waktu nyata . Data waktu nyata (menurut definisi) peka terhadap penundaan, sehingga sering kali paling baik dikirim melalui RTP / UDP (Protokol Waktu Nyata melalui UDP).

Penundaan bukanlah masalah dengan data yang disimpan dari file, meskipun itu audio dan / atau video, jadi mungkin paling baik dikirim melalui TCP sehingga setiap kehilangan paket dapat diperbaiki. Pengirim dapat membaca terus dan menjaga pipa jaringan tetap penuh dan penerima juga dapat menggunakan banyak buffering playout sehingga tidak akan terganggu oleh transmisi ulang TCP atau perlambatan jaringan sesaat. Kasus pembatas adalah dimana seluruh rekaman ditransfer sebelum pemutaran dimulai. Hal ini menghilangkan risiko kemacetan pemutaran, tetapi seringkali tidak praktis.

Masalah dengan TCP untuk data real-time bukanlah transmisi ulang sebanyak buffering berlebihan karena TCP mencoba menggunakan pipa seefisien mungkin tanpa memperhatikan latensi. UDP mempertahankan batasan paket aplikasi dan tidak memiliki penyimpanan internal, sehingga tidak menimbulkan latensi.

Phil Karn
sumber
3

Jawabannya: Ya

Alasan: Lihat model OSI.

Penjelasan:

HTTP adalah protokol lapisan aplikasi, yang dapat dienkapsulasi dengan protokol yang menggunakan UDP, menyediakan komunikasi andal yang bisa dibilang lebih cepat daripada TCP. Daemon server dan klien jelas perlu mendukung protokol baru ini. Protokol Quake 2 membuktikan bahwa UDP dapat digunakan melalui TCP untuk menyediakan dasar bagi sistem komunikasi terstruktur yang menjamin kontrol aliran (mis. ID potongan).

mengerti
sumber
1
Anda tidak dapat mengalahkan TCP dengan tangan tanpa informasi lebih dari yang seharusnya Anda miliki pada level itu.
Joshua
1
"UDP dapat digunakan melalui TCP". Keduanya adalah protokol lapisan transport, jadi itu satu atau yang lain.
opiat
2

http over udp digunakan oleh beberapa implementasi pelacak torrent (dan supporteb oleh semua klien utama)

pengguna2946342
sumber
4
Harap sertakan referensi untuk mendukung pernyataan Anda.
Max Leske
1
Saat saya membacanya, protokol Torrent UDP Tracker adalah biner, dan TIDAK diformat seperti HTTP sama sekali. xbtt.sourceforge.net/udp_tracker_protocol.html
Jesse Chisholm
1

UDP adalah protokol terbaik untuk streaming, karena tidak menuntut paket yang hilang seperti TCP. Dan jika tidak menuntut, alirannya jauh lebih cepat dan tanpa buffering.

Bahkan penundaan streaming lebih kecil dari TCP. Itu karena TCP (sebagai protokol yang jauh lebih aman) membuat permintaan untuk paket yang hilang, menimpa yang sudah ada.

Jadi TCP adalah protokol yang terlalu canggih untuk digunakan untuk streaming.

Pavel
sumber
3
ini tidak menjawab pertanyaan, Namun itu bisa menjadi alasan untuk sebuah jawaban.
Hawken
2
re: "protokol terbaik untuk streaming" mengingat "kecepatan potongan data individu" itu lebih penting daripada "semua data melewati". Jika aliran Anda tidak dapat dengan mudah pulih dari potongan yang hilang, maka Anda sebaiknya menggunakan TCP. Banyak protokol video keamanan memilih TCP karena alasan itu - keandalan lebih penting daripada kecepatan mentah.
Jesse Chisholm