UDP
İnternet iletişim kuralları dizisi OSI modeli | ||
Katman | İletişim kuralları | |
7. | Uygulama katmanı | HTTP, DNS, SMTP, FTP, TFTP, UUCP, NNTP, SSL, SSH, IRC, SNMP, SIP, RTP, Telnet, ... |
6. | Sunum katmanı | ISO 8822, ISO 8823, ISO 8824, ITU-T T.73, ITU-T X.409, ... |
5. | Oturum katmanı | NFS, SMB, ISO 8326, ISO 8327, ITU-T T.6299, ... |
4. | Ulaşım katmanı | TCP, UDP, SCTP, DCCP, ... |
3. | Ağ katmanı | IP, IPv4, IPv6, ICMP, ARP, İnternet Grup Yönetim Protokolü, IPX,... |
2. | Veri bağlantısı katmanı | Ethernet, HDLC, Wi-Fi, Token ring, FDDI, PPP, L2TP... |
1. | Donanım katmanı | ISDN, RS-232, EIA-422, RS-449, EIA-485, ... |
UDP (User Datagram Protocol - Kullanıcı Veribloğu İletişim Kuralları), TCP/IP protokol takımının iki aktarım katmanı protokolünden birisidir. Verileri bağlantı kurmadan yollar. ⓘ
Gelişmiş bilgisayar ağlarında paket anahtarlı bilgisayar iletişiminde bir datagram modu oluşturabilmek için UDP protokolü yazılmıştır. Bu protokol minimum protokol mekanizmasıyla bir uygulama programından diğerine mesaj göndermek için bir prosedür içerir. Bu protokol 'transaction' yönlendirmelidir. Paketin teslim garantisini isteyen uygulamalar TCP protokolünü kullanır. ⓘ
- Geniş alan ağlarında (WAN) ses ve görüntü aktarımı gibi gerçek zamanlı veri aktarımlarında UDP kullanılır.
- UDP bağlantı kurulum işlemlerini, akış kontrolü ve tekrar iletim işlemlerini yapmayarak veri iletim süresini en aza indirir.
- UDP ve TCP aynı iletişim yolunu kullandıklarında UDP ile yapılan gerçek zamanlı veri transferinin servis kalitesi TCP'nin oluşturduğu yüksek veri trafiği nedeniyle azalır. ⓘ
UDP'yi kullanan protokollerden bazıları DNS, TFTP, ve SNMP protokolleridir. Uygulama programcıları birçok zaman UDP'yi TCP'ye tercih eder, zira UDP ağ üzerinde fazla bant genişliği kaplamaz. ⓘ
UDP güvenilir olmayan bir aktarım protokolüdür. Ağ üzerinden paketi gönderir ama gidip gitmediğini takip etmez ve paketin yerine ulaşıp ulaşmayacağına onay verme yetkisi yoktur. UDP üzerinden güvenilir şekilde veri göndermek isteyen bir uygulama bunu kendi yöntemleriyle yapmak zorundadır. ⓘ
UDP, minimum protokol mekanizmasına sahip basit bir bağlantısız iletişim modeli kullanır. UDP, veri bütünlüğü için sağlama toplamları ve datagramın kaynağındaki ve hedefindeki farklı işlevleri adreslemek için bağlantı noktası numaraları sağlar. El sıkışma diyalogları yoktur ve bu nedenle kullanıcının programını altta yatan ağın herhangi bir güvenilmezliğine maruz bırakır; teslimat, sıralama veya yineleme koruması garantisi yoktur. Ağ arayüzü düzeyinde hata düzeltme olanaklarına ihtiyaç duyulursa, bir uygulama bunun yerine bu amaç için tasarlanmış olan İletim Kontrol Protokolü (TCP) veya Akış Kontrol İletim Protokolü (SCTP) kullanabilir. ⓘ
UDP, hata denetimi ve düzeltmesinin gerekli olmadığı veya uygulamada gerçekleştirildiği amaçlar için uygundur; UDP, protokol yığınında bu tür işlemlerin ek yükünü önler. Zamana duyarlı uygulamalar genellikle UDP kullanır çünkü gerçek zamanlı bir sistemde bir seçenek olmayabilecek yeniden iletim nedeniyle geciken paketleri beklemek yerine paketleri bırakmak tercih edilir. ⓘ
Protokol 1980 yılında David P. Reed tarafından tasarlanmış ve RFC 768'de resmi olarak tanımlanmıştır. ⓘ
Öznitelikler
UDP, RFC 768'de belgelenen basit bir mesaj odaklı aktarım katmanı protokolüdür. UDP, başlık ve yükün bütünlük doğrulamasını (sağlama toplamı yoluyla) sağlamasına rağmen, mesaj teslimi için üst katman protokolüne hiçbir garanti sağlamaz ve UDP katmanı, gönderildikten sonra UDP mesajlarının hiçbir durumunu saklamaz. Bu nedenle UDP bazen Güvenilmez Datagram Protokolü olarak adlandırılır. İletim güvenilirliği isteniyorsa, kullanıcının uygulamasında uygulanmalıdır. ⓘ
UDP'nin bazı özellikleri onu özellikle belirli uygulamalar için uygun hale getirir.
- İşlem odaklıdır, Alan Adı Sistemi veya Ağ Zaman Protokolü gibi basit sorgu-yanıt protokolleri için uygundur.
- IP tünelleme veya uzaktan yordam çağrısı ve Ağ Dosya Sistemi gibi diğer protokolleri modellemeye uygun datagramlar sağlar.
- Basittir, DHCP ve Trivial File Transfer Protocol gibi tam bir protokol yığını olmadan önyükleme veya diğer amaçlar için uygundur.
- Durumsuzdur, IPTV gibi akışlı medya uygulamalarında olduğu gibi çok sayıda istemci için uygundur.
- Yeniden iletim gecikmelerinin olmaması, IP üzerinden Ses, çevrimiçi oyunlar ve Gerçek Zamanlı Akış Protokolü kullanan birçok protokol gibi gerçek zamanlı uygulamalar için uygun olmasını sağlar.
- Çoklu yayını desteklediğinden, birçok hizmet keşfi türünde olduğu gibi yayın bilgileri ve Hassas Zaman Protokolü ve Yönlendirme Bilgi Protokolü gibi paylaşılan bilgiler için uygundur. ⓘ
Bağlantı Noktaları
Uygulamalar, ana bilgisayardan ana bilgisayara iletişim kurmak için datagram soketlerini kullanabilir. Bir uygulama, bir IP adresi ve bir bağlantı noktasının birleşimi olan veri iletiminin son noktasına bir soket bağlar. Bu şekilde, UDP uygulama çoğullaması sağlar. Bir bağlantı noktası, 0 ile 65535 arasında bağlantı noktası numaralarına izin veren 16 bitlik bir tamsayı değeri olan bağlantı noktası numarasıyla tanımlanan bir yazılım yapısıdır. Port 0 ayrılmıştır ancak gönderen süreç yanıt olarak mesaj beklemiyorsa izin verilen bir kaynak port değeridir. ⓘ
İnternet Atanmış Numaralar Kurumu (IANA) bağlantı noktası numaralarını üç aralığa ayırmıştır. 0 ile 1023 arasındaki bağlantı noktası numaraları yaygın, iyi bilinen hizmetler için kullanılır. Unix benzeri işletim sistemlerinde, bu bağlantı noktalarından birini kullanmak süper kullanıcı işletim izni gerektirir. 1024 ile 49151 arasındaki bağlantı noktası numaraları IANA'ya kayıtlı hizmetler için kullanılan kayıtlı bağlantı noktalarıdır. 49152 ile 65535 arasındaki bağlantı noktaları, herhangi bir hizmet için resmi olarak belirlenmemiş dinamik bağlantı noktalarıdır ve herhangi bir amaç için kullanılabilir. Bunlar, ana bilgisayarda çalışan yazılımın gerektiğinde dinamik olarak iletişim uç noktaları oluşturmak için kullanabileceği geçici bağlantı noktaları olarak da kullanılabilir. ⓘ
UDP datagram yapısı
Ofsetler | Oktet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Kaynak liman | Hedef bağlantı noktası | ||||||||||||||||||||||||||||||
4 | 32 | Uzunluk | Checksum |
Bir UDP datagramı, bir datagram başlığı ve bir veri bölümünden oluşur. UDP datagram başlığı, her biri 2 bayt (16 bit) olan 4 alandan oluşur. Veri bölümü başlığı takip eder ve uygulama için taşınan yük verisidir. ⓘ
Sağlama toplamı ve kaynak bağlantı noktası alanlarının kullanımı IPv4'te isteğe bağlıdır (tabloda pembe arka plan). IPv6'da yalnızca kaynak bağlantı noktası alanı isteğe bağlıdır. ⓘ
- Kaynak bağlantı noktası numarası
- Bu alan, kullanıldığında gönderenin bağlantı noktasını tanımlar ve gerektiğinde yanıtlanacak bağlantı noktası olarak varsayılmalıdır. Kullanılmadığı takdirde sıfır olmalıdır. Kaynak ana bilgisayar istemci ise, bağlantı noktası numarasının geçici bir bağlantı noktası numarası olması muhtemeldir. Kaynak ana bilgisayar sunucuysa, bağlantı noktası numarasının iyi bilinen bir bağlantı noktası numarası olması muhtemeldir.
- Hedef bağlantı noktası numarası
- Bu alan alıcının bağlantı noktasını tanımlar ve gereklidir. Kaynak bağlantı noktası numarasına benzer şekilde, istemci hedef ana bilgisayar ise bağlantı noktası numarası büyük olasılıkla geçici bir bağlantı noktası numarası olacaktır ve hedef ana bilgisayar sunucu ise bağlantı noktası numarası büyük olasılıkla iyi bilinen bir bağlantı noktası numarası olacaktır.
- Uzunluk
- Bu alan, UDP başlığının ve UDP verilerinin bayt cinsinden uzunluğunu belirtir. Minimum uzunluk, başlığın uzunluğu olan 8 bayttır. Alan boyutu, bir UDP datagramı için 65.535 baytlık (8 baytlık başlık + 65.527 baytlık veri) teorik bir sınır belirler. Ancak, temel IPv4 protokolü tarafından uygulanan veri uzunluğu için gerçek sınır 65.507 bayttır (65.535 bayt - 8 bayt UDP başlığı - 20 bayt IP başlığı).
- IPv6 jumbogramlarını kullanarak 65.535 bayttan daha büyük boyutta UDP datagramlarına sahip olmak mümkündür. RFC 2675, UDP başlığı artı UDP verisinin uzunluğu 65.535'ten büyükse uzunluk alanının sıfıra ayarlanacağını belirtir.
- Checksum
- Sağlama toplamı alanı, başlık ve verinin hata denetimi için kullanılabilir. Bu alan IPv4'te isteğe bağlıdır ve IPv6'da zorunludur. Alan kullanılmazsa tüm sıfırları taşır. ⓘ
Sağlama toplamı hesaplama
Sağlama toplamını hesaplamak için kullanılan yöntem RFC 768'de tanımlanmıştır ve verimli hesaplama RFC 1071'de tartışılmıştır:
Sağlama toplamı, IP başlığından, UDP başlığından ve veriden gelen bilgilerin sözde başlığının bire tümleyen toplamının 16 bitlik bire tümleyenidir ve iki sekizlinin katlarını oluşturmak için (gerekirse) sonunda sıfır sekizliyle doldurulur. ⓘ
Başka bir deyişle, tüm 16 bitlik sözcükler bire tümleyen aritmetiği kullanılarak toplanır. 16 bitlik değerler toplanır. Her toplamada, bir carry-out (17. bit) üretilirse, bu 17. carry bitini döndürün ve devam eden toplamın en az anlamlı bitine ekleyin. Son olarak, UDP sağlama toplamı alanının değerini elde etmek için toplam bire tamamlanır. ⓘ
Sağlama toplamı hesaplaması sıfır değeriyle sonuçlanırsa (tüm 16 bit 0), sıfır değerli bir sağlama toplamı hiçbir sağlama toplamının hesaplanmadığını gösterdiğinden, birin tümleyeni (tüm 1'ler) olarak gönderilmelidir. Bu durumda, alıcıda herhangi bir özel işleme gerek yoktur, çünkü 1'in tümleyen aritmetiğinde tüm 0'lar ve tüm 1'ler sıfıra eşittir. ⓘ
IPv4 ve IPv6 arasındaki farklar, sağlama toplamını hesaplamak için kullanılan sözde başlıktadır ve IPv6'da sağlama toplamı isteğe bağlı değildir. ⓘ
IPv4 sözde başlığı
UDP IPv4 üzerinden çalıştığında, sağlama toplamı gerçek IPv4 başlığındaki bilgilerin bazılarını içeren bir "sözde başlık" kullanılarak hesaplanır. Sözde başlık, bir IP paketini göndermek için kullanılan gerçek IPv4 başlığı değildir, yalnızca sağlama toplamı hesaplaması için kullanılır. ⓘ
Ofsetler | Oktet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Kaynak IPv4 Adresi | |||||||||||||||||||||||||||||||
4 | 32 | Hedef IPv4 Adresi | |||||||||||||||||||||||||||||||
8 | 64 | Zeroes | Protokol | UDP Uzunluğu | |||||||||||||||||||||||||||||
12 | 96 | Kaynak Liman | Hedef Liman | ||||||||||||||||||||||||||||||
16 | 128 | UDP Uzunluğu | Checksum | ||||||||||||||||||||||||||||||
20 | 160+ | Veri |
Kaynak ve hedef adresler IPv4 başlığındaki adreslerdir. Protokol, UDP protokolüdür (bkz. IP protokol numaraları listesi): 17 (0x11). UDP uzunluk alanı, UDP başlığının ve verisinin uzunluğudur. Veri alanı iletilen veri anlamına gelir. ⓘ
UDP sağlama toplamı hesaplaması IPv4 için isteğe bağlıdır. Sağlama toplamı kullanılmazsa sıfır değerine ayarlanmalıdır. ⓘ
IPv6 sözde başlığı
UDP IPv6 üzerinden çalıştığında, sağlama toplamı zorunludur. Bunu hesaplamak için kullanılan yöntem RFC 2460'da belgelendiği gibi değiştirilmiştir:
Sağlama toplamı hesaplamasında IP başlığındaki adresleri içeren herhangi bir aktarım veya diğer üst katman protokolü, IPv6 üzerinden kullanım için 128 bit IPv6 adreslerini içerecek şekilde değiştirilmelidir. ⓘ
Sağlama toplamı hesaplanırken, yine gerçek IPv6 başlığını taklit eden bir sözde başlık kullanılır:
Ofsetler | Oktet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Oktet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Kaynak IPv6 Adresi | |||||||||||||||||||||||||||||||
4 | 32 | ||||||||||||||||||||||||||||||||
8 | 64 | ||||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
16 | 128 | Hedef IPv6 Adresi | |||||||||||||||||||||||||||||||
20 | 160 | ||||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 | UDP Uzunluğu | |||||||||||||||||||||||||||||||
36 | 288 | Zeroes | Sonraki Başlık = Protokol | ||||||||||||||||||||||||||||||
40 | 320 | Kaynak Liman | Hedef Liman | ||||||||||||||||||||||||||||||
44 | 352 | Uzunluk | Checksum | ||||||||||||||||||||||||||||||
48 | 384+ | Veri |
Kaynak adresi IPv6 başlığındaki adrestir. Hedef adres son hedeftir; IPv6 paketi bir Yönlendirme başlığı içermiyorsa, bu IPv6 başlığındaki hedef adres olacaktır; aksi takdirde, kaynak düğümde Yönlendirme başlığının son öğesindeki adres olacaktır ve alıcı düğümde IPv6 başlığındaki hedef adres olacaktır. Sonraki Başlık alanının değeri UDP için protokol değeridir: 17. UDP uzunluğu alanı UDP başlığının ve verisinin uzunluğudur. ⓘ
Güvenilirlik ve tıkanıklık kontrolü
Güvenilirlikten yoksun olan UDP uygulamaları bazı paket kayıpları, yeniden sıralama, hatalar veya yinelemelerle karşılaşabilir. UDP kullanılıyorsa, son kullanıcı uygulamaları mesajın alındığına dair gerçek zamanlı onay gibi gerekli el sıkışmayı sağlamalıdır. TFTP gibi uygulamalar, gerektiğinde uygulama katmanına ilkel güvenilirlik mekanizmaları ekleyebilir. Eğer bir uygulama yüksek derecede güvenilirlik gerektiriyorsa, bunun yerine İletim Kontrol Protokolü gibi bir protokol kullanılabilir. ⓘ
Çoğu zaman, UDP uygulamaları güvenilirlik mekanizmaları kullanmaz ve hatta bunlar tarafından engellenebilir. Medya akışı, gerçek zamanlı çok oyunculu oyunlar ve IP üzerinden ses (VoIP) genellikle UDP kullanan uygulamalara örnektir. Bu özel uygulamalarda, paket kaybı genellikle ölümcül bir sorun değildir. Örneğin VoIP'de, gecikme ve titreşim birincil endişelerdir. TCP kullanımı, herhangi bir paketin kaybolması durumunda, TCP eksik verilerin yeniden gönderilmesini talep ederken uygulamaya sonraki verileri sağlamadığından titremeye neden olur. ⓘ
Uygulamalar
Alan Adı Sistemi (DNS), Basit Ağ Yönetim Protokolü (SNMP), Yönlendirme Bilgi Protokolü (RIP) ve Dinamik Ana Bilgisayar Yapılandırma Protokolü (DHCP) dahil olmak üzere çok sayıda önemli İnternet uygulaması UDP kullanır. ⓘ
Ses ve video trafiği genellikle UDP kullanılarak iletilir. Gerçek zamanlı video ve ses akışı protokolleri ara sıra kaybolan paketlerin üstesinden gelecek şekilde tasarlanmıştır, bu nedenle kaybolan paketlerin yeniden iletilmesi durumunda büyük gecikmeler yerine kalitede yalnızca hafif bir bozulma meydana gelir. Hem TCP hem de UDP aynı ağ üzerinden çalıştığından, 2000'lerin ortalarında birkaç işletme, bu gerçek zamanlı uygulamalardan gelen artan UDP trafiğinin, satış noktası, muhasebe ve veritabanı sistemleri gibi TCP kullanan uygulamaların performansını biraz engellediğini keşfetti (TCP paket kaybını tespit ettiğinde, veri hızı kullanımını azaltacaktır). ⓘ
OpenVPN gibi bazı VPN sistemleri UDP kullanabilir ve güvenilir bağlantılar uygularken uygulama düzeyinde hata denetimi gerçekleştirebilir. ⓘ
QUIC, UDP üzerine inşa edilmiş bir aktarım protokolüdür. QUIC güvenilir ve güvenli bir bağlantı sağlar. HTTP/3, güvenilirliği ve güvenliği sağlamak için sırasıyla TCP ve TLS'nin bir kombinasyonunu kullanan HTTPS'nin önceki sürümlerinin aksine QUIC kullanır. Bu, HTTP/3'ün bir bağlantı kurmak için TCP ve TLS için iki ayrı el sıkışma yerine tek bir el sıkışma kullandığı anlamına gelir, bu da bir bağlantı kurmak için toplam sürenin azaldığı anlamına gelir. ⓘ
UDP ve TCP Karşılaştırması
İletim Kontrol Protokolü bağlantı odaklı bir protokoldür ve uçtan uca iletişim kurmak için el sıkışma gerektirir. Bir bağlantı kurulduktan sonra, kullanıcı verileri bağlantı üzerinden çift yönlü olarak gönderilebilir.
- Güvenilir - TCP mesaj onayını, yeniden iletimi ve zaman aşımlarını yönetir. Mesajı iletmek için birden fazla deneme yapılır. Yol boyunca veri kaybolursa, veri yeniden gönderilir. TCP'de ya hiç kayıp veri olmaz ya da birden fazla zaman aşımı olması durumunda bağlantı kesilir.
- Sıralı - Bir bağlantı üzerinden sırayla iki mesaj gönderilirse, alıcı uygulamaya ilk mesaj ulaşır. Veri segmentleri yanlış sırayla geldiğinde, TCP, tüm veriler düzgün bir şekilde yeniden sıralanıp uygulamaya teslim edilene kadar sıra dışı verileri arabelleğe alır.
- Heavyweight - TCP, herhangi bir kullanıcı verisi gönderilmeden önce bir soket bağlantısı kurmak için üç paket gerektirir. TCP güvenilirlik ve tıkanıklık kontrolünü ele alır.
- Akış - Veri bir bayt akışı olarak okunur, mesaj (segment) sınırlarını işaret etmek için ayırt edici göstergeler iletilmez. ⓘ
Kullanıcı Datagram Protokolü daha basit mesaj tabanlı bağlantısız bir protokoldür. Bağlantısız protokoller özel bir uçtan uca bağlantı kurmaz. İletişim, alıcının hazır olup olmadığını veya durumunu doğrulamadan kaynaktan hedefe tek yönde bilgi ileterek sağlanır.
- Güvenilmez - Bir UDP mesajı gönderildiğinde, hedefine ulaşıp ulaşmayacağı bilinemez; yol boyunca kaybolabilir. Onay, yeniden iletim veya zaman aşımı kavramı yoktur.
- Sıralı değil - Aynı alıcıya iki mesaj gönderilirse, bunların varış sırası garanti edilemez.
- Hafif - Mesajların sıralanması, bağlantıların izlenmesi vb. yoktur. IP'nin üzerine tasarlanmış çok basit bir taşıma katmanıdır.
- Datagramlar - Paketler ayrı ayrı gönderilir ve varışta bütünlük açısından kontrol edilir. Paketler, alındıklarında onurlandırılan belirli sınırlara sahiptir; alıcı soketindeki bir okuma işlemi, orijinal olarak gönderildiği gibi tüm bir mesajı verecektir.
- Tıkanıklık kontrolü yok - UDP'nin kendisi tıkanıklığı önlemez. Tıkanıklık kontrol önlemleri uygulama düzeyinde veya ağda uygulanmalıdır.
- Yayınlar - bağlantısız olduğu için UDP yayın yapabilir - gönderilen paketler alt ağdaki tüm cihazlar tarafından alınabilecek şekilde adreslenebilir.
- Çoklu yayın - tek bir datagram paketinin bir grup aboneye tekrarlanmadan otomatik olarak yönlendirilebildiği çoklu yayın çalışma modu desteklenir. ⓘ