HTTP, UDP kullanıyor mu?


103

Bu aptalca bir soru olabilir:

  • HTTP, Kullanıcı Datagram Protokolünü hiç kullanır mı?

Örneğin:

HTTP kullanarak MP3 veya video akışı yapılıyorsa, dahili olarak taşıma için UDP kullanıyor mu?


"Web" ile neyi kastediyorsunuz? Bir tarayıcı mı kullanmak istiyorsunuz? Veya genel internet üzerinden?
benc

Sormak istediğim şey, bir URL'de someserver / somemusic.mp3 gibi bir mp3 barındırıldığını söylemekti . Bu herhangi bir istemciye - tarayıcıya, cihaza vs. aktarılırsa, http bunu nasıl aktarır? Aşağıdaki cevapları doğru anlarsam, bu RTP'ye devredilir.
Sesh

Port 80 UDP ayrıca HTTP için ayrılmıştır ve bunu daha önce hiç görmediğim için eğlenceli buluyorum ve bunun için iyi bir kullanım olduğunu düşünemiyorum.
Joshua

1
Ayrılmıştır çünkü IANA komitesi sizin sahip olduğunuzdan daha esnek bir hayal gücüne sahiptir. ;-) Bunun iyi bir kullanım olabileceğini düşünüyorlar. Ayrıca, 80 numaralı bağlantı noktasını UDP / HTTP için ayırmamak, başka bir UDP protokolü için açık kalmasına neden olur ve bu da 80 numaralı bağlantı noktası hakkında konuşurken kafa karışıklığına neden olur.
Jesse Chisholm

Yanıtlar:


42

Tipik olarak hayır.

Akış nadiren HTTP'nin kendisi üzerinden kullanılır ve HTTP nadiren UDP üzerinden çalıştırılır. Bununla birlikte, RTP'ye bakın .

Örneğiniz gibi bir şey için (yorumda), kaynak için bir protokol göstermiyorsunuz. Bu protokol HTTP olsaydı, o zaman erişimi "akış" olarak adlandırmazdım; kelimenin bir anlamıyla bir ağ üzerinden seri olarak (muhtemelen büyük) bir kaynak gönderdiği için olsa bile. Tipik olarak, kaynak oynatılmadan önce yerel diske kaydedilir, bu nedenle ağ aktarımı genellikle "akış" ile kastedilen değildir.

Yorumcuların da belirttiği gibi, yine de HTTP üzerinden akış yapmak kesinlikle mümkündür ve bu bazıları tarafından yapılır.


16
Açıkçası yanlış, HTTP'de akışı engelleyen hiçbir şey yoktur; bu, özel bir protokolün olabileceği kadar verimli değildir. Parçalar kullanarak HTTP Dinamik Akışı: adobe.com/products/httpdynamicstreaming HTTP Sözde Akış: longtailvideo.com/support/jw-player/jw-player-for-flash-v5/…
Steve-o

14
http üzerinden youtube akışları.
hayır

6
@ snowcrash09 Kabul edildiği için kendim bile silemiyorum. Bu tuhaf. Yeniden yazdım, umarım artık daha az rahatsız edicidir.
gevşeyin

1
Sadece HTTP ve akış hakkında bilgiçlikçi olmakla birlikte - QuickTime videonun karanlık çağlarında server push, HTTP bağlantısının her biri HTTP isteğine bir MIME çok parçalı yanıtının ayrı bir parçası olarak MJPEG (birden çok JPEG görüntüsü) gönderdiği yer vardı. Her JPEG görüntüsü gelir ve ekranda öncekinin yerini alır. Ama haklısın @unwind, bu bugün nadiren yapılıyor çünkü RTP / RTSP daha iyi çalışıyor.
Jesse Chisholm

3
@nos Youtube akış yapmıyor. Tarayıcı, bir dosyayı bir önbelleğe indirir ve tamamen indirilmeden önce dosyadan oynatmaya başlar. Bu, akışı simüle etmesine rağmen, değildir.
SimonStiph

113

Gönderen RFC 2616 :

HTTP iletişimi genellikle TCP / IP bağlantıları üzerinden gerçekleşir. Varsayılan bağlantı noktası TCP 80'dir, ancak diğer bağlantı noktaları kullanılabilir. Bu, HTTP'nin İnternet'teki veya diğer ağlardaki diğer protokollerin üzerine uygulanmasını engellemez. HTTP yalnızca güvenilir bir aktarım olduğunu varsayar; bu tür garantiler sağlayan herhangi bir protokol kullanılabilir; HTTP / 1.1 talebinin ve yanıt yapılarının söz konusu protokolün taşıma veri birimleri ile eşleştirilmesi bu spesifikasyonun kapsamı dışındadır.

Yani açıkça söylemese de, UDP "güvenilir bir taşıma" olmadığı için kullanılmıyor.

DÜZENLEME - daha yakın zamanlarda, QUIC protokolü (daha kesin olarak bir sözde aktarım veya bir oturum katmanı protokolüdür) HTTP / 2.0 trafiğini taşımak için UDP kullanır ve Google'ın trafiğinin çoğu zaten bu protokolü kullanır. Şu anda HTTP / 3 olarak standardizasyona doğru ilerliyor .


TCP olmayan bağlantıları kabul edecek şekilde yapılandırılabilen herhangi bir web sunucusu var mı?
Spidey

1
TCP yerine SCTP protokolünü kullanmak için pel.cis.udel.edu burada apache'de bir değişiklik var .
hayır

@nos Yup ve Google'da da SPDY var. Her ikisi de güvenilir taşıma mekanizmalarıdır.
Alnitak

5
@Alnitak SPDY, bir taşıma katmanı protokolü değil, bir uygulama katmanı protokolüdür.
Walking Wiki

@WalkingWiki elbette haklısınız - bu bağlamda SPDY, TCP'nin değil, HTTP'nin yerini alıyor.
Alnitak

36

Belki biraz trivia, ancak UPnP, cihaz keşfi için UDP üzerinden HTTP formatlı mesajları kullanacaktır.


4
Daha spesifik olmak gerekirse, UPnP'nin UDP ve HTTP benzeri mesajlar kullanan kısmına SSDP (Basit Hizmet Bulma Protokolü) denir. Mesaj yapısı aynı, ancak METHODset farklı. Bundan sonra UPnP, yaptığı işin geri kalanı için diğer protokolleri (ve genellikle TCP'yi) kullanır.
Jesse Chisholm

20

Evet, HTTP, bir uygulama protokolü olarak, UDP aktarım protokolü üzerinden aktarılabilir. HTTP verilerini aktarmak ve son kullanıcıya yayınlamak için UDP ve temel bir protokol kullanan hizmetlerden bazıları şunlardır:

  • XMPP'nin Jingle Raw UDP Taşıma Yöntemi
  • UDP protokolünün bir üst kümesi olan UDT --- UDP tabanlı Veri Aktarım Protokolünü kullanan hizmetler için bir sayı.
  • Yukarıda bahsedilen XMPP ve diğer uygulama protokollerinin yanı sıra HTTP'yi kapsülleyen Taşıma Katmanı Güvenliği (TLS) protokolü, taşıma katmanında UDP kullanan bir uygulamaya sahiptir; bu uygulamaya Datagram Taşıma Katmanı Güvenliği (DTLS) denir.
  • GNUTella'daki push bildirimleri, UDP aktarımı üzerinden gönderilen HTTP istekleridir.

Bu makale, UDP ve onun güvenilir üst kümesi olan RUDP üzerinden akış hakkında daha fazla ayrıntı içerir: Güvenilir UDP (RUDP): Bir Sonraki Büyük Akış Protokolü?


1
Başka bir soru: büyük web tarayıcıları, web sayfalarını UDP üzerinden HTTP'yi destekliyor mu?
user2284570

evet çünkü HTTP uygulama katmanında ve UDP taşıma katmanında. tarayıcılar TCP veya UDP paketleri yazmaz. IP paketleri de yazmazlar. Bunlar işletim sistemi ve sürücüler tarafından ele alınır. Ethernet katmanı o kadar düşüktür ki bu noktada MAC'a yakın bir çip içinde olabilir.
yan bellavance

@yanbellavance bu tamamen yanlış. Tarayıcılar ve web sunucuları gerçekten üretemeyen iken ham (bu konuda ne de UDP olanlar) TCP çerçeveleri onlar do kullanımına taşıma seçmek zorunda ve normal HTTP TCP hep olduğunu. Ancak daha yeni QUIC sözde protokolü UDP kullanır.
Alnitak

18

Elbette, TCP üzerinden iletilmesi gerekmiyor. Uydu TV Yayını endüstrisinde kullanmak için UDP'nin üzerine HTTP uyguladım.


6

QUIC ile bu konuda biraz değişiklik olabilir

QUIC (Hızlı UDP İnternet Bağlantıları, hızlı olarak telaffuz edilir), Google tarafından geliştirilen ve 2013'te uygulanan deneysel bir aktarım katmanı ağ protokolüdür. QUIC, Kullanıcı Datagram Protokolü (UDP) üzerinden iki uç nokta arasında bir dizi çoklanmış bağlantıyı destekler ve güvenlik koruması sağlamak için tasarlanmıştır TLS / SSL'ye eşdeğer, düşük bağlantı ve aktarım gecikmesi ve tıkanıklığı önlemek için her yönde bant genişliği tahmini. QUIC'in ana hedefi, şu anda TCP kullanan bağlantı odaklı web uygulamalarını optimize etmektir.


4

HTTP üzerinden olması gerekmeyen bir mp3 veya video akışı yapıyorsanız, aslında olsaydı şaşırırdım. Muhtemelen TCP üzerinden başka bir protokol olabilir, ancak UDP üzerinden akış yapamamanız için hiçbir neden göremiyorum.

Bunu yaparsanız, verilerinizin diğer uca ulaşacağına dair hiçbir kesinlik olmadığını hesaba katmanız gerekir, ancak UDP hakkında bilgi sahibi olduğunuza bakabilirim.

Sorunuza cevap vermek gerekirse, Hayır, HTTP UDP KULLANMAZ. Yine de bahsettiğiniz şey için, mp3 / video akışı UDP üzerinden OLABİLİR ve bence asla HTTP üzerinden gerçekleşmemelidir.


1
HTTP üzerinden "akış" genellikle (en doğru olarak düşündüğüm şey) "sözde akış" olarak adlandırılır - HTTP üzerinden düzenlenmiş bir veri bit hızı. Bizim dünyamızda olduğu gibi, pazarlama türleri terminolojiyi kötüye kullandı ve bizim gibi ayrıntıları kavrayan, ayrıntılara önem veren insanları bıraktı.
Stu Thompson

4

Teoride evet, http için UDP kullanmak mümkündür, ancak bu sorunlu olabilir. Örneğin, örneğinizde bir mp3 veya video akışı yapıldığını varsayalım, sıralama sorunu olacaktır ve UDP bağlantı odaklı olmadığından yeniden iletim mekanizması olmadığı için bazı bitler kaybolabilir.


1
Eh söz: UDP is not connection oriented there is no retransmit mechanism.
ivanleoncz

4

Sanırım bazı cevaplarda önemli bir nokta eksik. UDP ve TCP arasındaki seçim gerektiğini değil (örneğin, ses veya video) veya uygulama transferi ( "akış") tamamlanmadan önce çalmaya başlar olsun verilerin türüne göre, ama öyle olmadığını edilmesi gerçek zamanlı . Gerçek zamanlı veriler (tanım gereği) gecikmeye duyarlıdır, bu nedenle genellikle en iyi RTP / UDP (UDP üzerinden Gerçek Zamanlı Protokol) üzerinden gönderilir.

Gecikme, ses ve / veya video olsa bile, bir dosyadan depolanan verilerle ilgili bir sorun değildir, bu nedenle muhtemelen en iyi TCP üzerinden gönderilir, böylece herhangi bir paket kaybı düzeltilebilir. Gönderici önceden okuyabilir ve ağ borusunu dolu tutabilir ve alıcı da çok sayıda oynatma arabelleği kullanabilir, böylece ara sıra TCP yeniden iletimi veya anlık ağ yavaşlamasıyla kesintiye uğramaz. Sınırlayıcı durum, oynatma başlamadan önce tüm kaydın aktarıldığı durumdur. Bu, herhangi bir oynatma durması riskini ortadan kaldırır, ancak genellikle pratik değildir.

Gerçek zamanlı veriler için TCP ile ilgili sorun, yeniden iletimler değildir, çünkü TCP, boruyu gecikmeye bakılmaksızın olabildiğince verimli bir şekilde kullanmaya çalışır. UDP, uygulama paketi sınırlarını korur ve dahili depolaması yoktur, bu nedenle herhangi bir gecikmeye neden olmaz.


3

Cevap: evet

Nedeni: OSI modeline bakın.

Açıklama:

HTTP, UDP kullanan bir protokolle kapsüllenebilen ve muhtemelen TCP'den daha hızlı güvenilir iletişim sağlayan bir uygulama katmanı protokolüdür. Sunucu arka plan programı ve istemcinin bu yeni protokolü desteklemesi gerektiği açıktır. Quake 2 protokolü, UDP'nin, akış kontrolünü güvence altına alan yapılandırılmış bir iletişim sistemi için bir temel sağlamak üzere TCP üzerinden kullanılabileceğini kanıtlar (örn. Yığın kimlikleri).


1
Bu seviyede sahip olmanız gerekenden daha fazla bilgi olmadan TCP'yi elle yenemezsiniz.
Joshua

1
"UDP, TCP üzerinden kullanılabilir". İkisi de taşıma katmanı protokolü, yani biri ya da diğeri.
opyate




1

UDP, akış için en iyi protokoldür çünkü TCP gibi eksik paketler için talepte bulunmaz. Ve talepte bulunmazsa, akış çok daha hızlı ve herhangi bir tamponlama olmadan gerçekleşir.

Akış gecikmesi bile TCP'den daha azdır. Bunun nedeni, TCP'nin (çok daha güvenli bir protokol olarak) mevcut paketlerin üzerine yazarak eksik paketleri talep etmesidir.

Dolayısıyla TCP, akış için kullanılamayacak kadar gelişmiş bir protokoldür.


3
bu soruya cevap vermiyor, ancak bir cevap için gerekçe olabilir.
Hawken

2
re: "tek tek veri parçalarının hızının" "aktarılan tüm verilerden" daha önemli olduğu göz önüne alındığında "akış için en iyi protokol". Akışınız eksik parçalardan kolayca kurtulamıyorsa, TCP ile devam etseniz iyi olur. Birçok güvenlik video protokolü bu nedenle TCP'yi seçer - güvenilirlik ham hızdan daha önemlidir.
Jesse Chisholm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.