UDP nedir ne değildir?
UDP - User Datagram Protocol
Datagram nedir?
Şimdiye kadar datagram’ın ne olduğunu soran bile duymadım ama yine de tanımlayalım. RFC 1594‘e göre Datagram:
Datagram A self-contained, independent entity of data carrying sufficient information to be routed from the source to the destination computer without reliance on earlier exchanges between this source and destination computer and the transporting network.
Yani iki temel özelliğe sahip veri bloklarından bahsediyoruz:
- Başlangıç noktasından hedefe route edilebilmesi için bir öncül mesajlaşmaya gereksinim duymayacak.
- Bu aktarımın sağlanabilmesi için tüm bilgileri kendi üzerinde bulundurur olacak.
UDP nedir?
UDP düşük gecikme ve kayıp toleransı amacıyla oluşturulmuş bir transport layer protokolüdür. Bir mesaj göndermek istiyorsanız gönderirsiniz. Karşı taraftan bu mesaj ile ne yaptığı UDP için önemli değildir. Yanıt beklemez, tekrar gönderimler UDP protokolüne ait değildir.
- UDP protokol numarası: 17
- UDP header boyutu:
- Source port 2 byte = 16 bit = 2**16 = 65536 port
- Destination port 2 byte = 16 bit = 2**16 = 65536 port
- Length 2 byte = 16 bit
- Checksum 2 byte = 16 bit
- Toplam 8 byte = 32 bit
UDP ile TCP farkları
UDP’nin aksine, TCP’de bilginin iletilebilmei için 3-way handshake gerekir:
- SYN
- ACK+SYN
- ACK
TCP’de retransmission -yeniden gönderim- protokol içinde mevcut. Bu sayede verinin karşı uca iletildiğinden emin olunabiliyor. UDP’de bu şekilde bir yaklaşım bulunmamakta.
Mesajların sırası bozulmaz. Transmisyon esnasında sırası değişse bile TCP buffer bunu tekrar düzenler. Oysa UDP’de bu şekilde bir sıralama yapacak bir header yoktur.
Neden UDP tercih edilir?
UDP IP katmanının üzerinde yer alan hafif bir transport katmanı öğesidir. Sıralama, teyit etme, stream oluşturma gibi yükümlülükleri olmadığı için hızlı çalışır. Özellikle kaybın gecikmeye tercih edildiği durumlarda kullanılır. Mesela ses trafiği. Ses trafiğinde kaybolan birkaç paketin tüm trafiği bekletmesini istemezsiniz.
UDP kullanan başlıca servisler / uygulamalar
Akla ilk gelenler:
- DNS
- DHCP
- RTP
- SIP
- SNMP
UDP gönderen bir script
import socket
UDP_IP = "127.0.0.1" #Hedef IP
UDP_PORT = 5005 #Hedef port
MESSAGE = b"Merhabalaaar"
print("message:", MESSAGE)
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
Leave a comment