UDP nedir ne değildir?

1 minute read

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.

A UDP Datagram

  • 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:

  1. SYN
  2. ACK+SYN
  3. ACK

TCP Handshake

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