UDP: mi ez, kapcsolat nélküli protokoll és hogyan működik

Szerző: IT Sectr Megjelenés: 2026-03-06 Olvasási idő: 8 perc

UDP (User Datagram Protocol) — kapcsolat nélküli adatátviteli protokoll, amely IP felett működik és minimális késleltetést biztosít a datagramok küldésekor. A TCP-vel ellentétben az UDP nem garantálja a kézbesítést, a csomagok sorrendjét vagy a duplikáció elleni védelmet. A IETF RFC 768 (2024) adatai szerint az UDP a világ internetes forgalmának több mint 40%-át dolgozza fel videohívásoknak, streamelésnek és DNS-lekérdezéseknek köszönhetően.

Főbb pontok

  • UDP — kapcsolat nélküli protokoll, amely kézbesítési visszaigazolás nélkül küld datagramokat
  • Minimális késleltetés a handshake, torlódásvezérlés és újraküldések hiánya miatt érhető el
  • Alkalmazzák videohívásokban, online játékokban, DNS-ben, DHCP-ben és folyamatos adatközvetítésben
  • Az UDP datagram fejléce mindössze 8 bájt, szemben a TCP 20–60 bájtjával
  • A csomagveszteséget alkalmazási szinten kompenzálják FEC, újraküldés vagy adatredundancia segítségével

Mi az UDP?

UDP (User Datagram Protocol) — a TCP/IP modell szállítási rétegének egyik kulcsfontosságú protokollja, amelyet David Reed fejlesztett ki 1980-ban. Minimális adatátviteli mechanizmust biztosít: az alkalmazás elküld egy datagramot, és a protokoll nem követi, hogy az eljutott-e a címzetthez.

Az UDP fejléc mindössze négy mezőből áll: forrásport, célport, hossz és ellenőrző összeg. Minden mező 2 bájtot foglal el, így a fejléc teljes mérete 8 bájt. Összehasonlításképpen: a TCP fejléc opciók nélkül 20 bájtot, opciókkal pedig akár 60 bájtot is elfoglalhat.

A protokoll nem támogatja a fragmentációt a saját szintjén — ha a datagram meghaladja az MTU-t (Maximum Transmission Unit), az IP szinten fragmentálódik. Egy fragmentum elvesztésekor a teljes datagram elvetésre kerül, mivel az UDP nem tudja kérni az egyes fragmentumok újraküldését. A fejlesztőknek ellenőrizniük kell a datagram méretét — mobil hálózatok esetén az MTU gyakran 1400 bájt, ezért a maximális méret nem haladhatja meg ezt az értéket.

Hogyan működik az UDP

Az UDP-t használó alkalmazás létrehoz egy SOCK_DGRAM típusú socketet, megadja a cél portot és IP-címet, majd elküldi a datagramot. A protokoll minimális fejlécet ad hozzá, és továbbítja a csomagot az IP rétegnek. A fogadó a saját portján figyel, és kinyeri az adatokat a beérkező datagramokból.

Az UDP nem végez torlódásvezérlést — az alkalmazás a hálózat által támogatott maximális sebességgel küldhet datagramokat. Ez a csatorna túlterheléséhez vezethet, de valós idejű forgatókönyvek esetén az ilyen agresszivitás indokolt: egy videohívásnál fontosabb az adatfolyam az esetleges veszteségekkel, mint az adatátvitel leállítása.

python
import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'Hello, UDP!', ('192.168.1.100', 8888))
sock.close()

A példában egy SOCK_DGRAM socket jön létre az UDP számára. A sendto metódus kapcsolat létrehozása nélkül küldi el a datagramot — elég ismerni a fogadó IP-címét és portját. A recvfrom metódus a szerver oldalon mind az adatokat, mind a feladó címét visszaadja a válaszhoz. Az UDP socketek mobilos platformokon hasonlóan konfigurálhatók, de további engedélyeket igényelnek: iOS-en hozzá kell adni az NSAppTransportSecurity-t a titkosítatlan UDP kapcsolatokhoz, Androidon pedig az INTERNET engedélyt a manifestben.

Az UDP előnyei és hátrányai

Az UDP választása olyan forgatókönyvekben indokolt, ahol a sebesség fontosabb a megbízhatóságnál. A protokoll nem veszteget időt kapcsolatépítésre, visszaigazolásokra és újraküldésekre — ez minimális késleltetést biztosít, de megköveteli a fejlesztőtől a veszteségek önálló kezelését.

ElőnyökHátrányok
Alacsony késleltetés — nincs handshakeNincs kézbesítési garancia
Kisebb fejléc — 8 bájtNincs torlódásvezérlés
Broadcast és multicast támogatásCsomagok duplikálódhatnak
Datagramok függetlensége — nincsenek sorokA datagram mérete korlátozott az MTU által

Mobilalkalmazásokban az UDP-t olyan keretrendszereken keresztül használják, mint a WebRTC, amelyek az UDP fölé veszteségvezérlést, adaptív bitsebességet és jitter puffert adnak. Ez a sebesség előnyeit nyújtja a nyers protokoll hátrányai nélkül.

Az UDP másik fontos aspektusa a torlódásvezérlés hiánya. A TCP-ben a Slow Start és Congestion Avoidance algoritmusok csökkentik az átviteli sebességet csomagvesztés esetén, hogy ne terheljék túl a hálózatot. Az UDP nem rendelkezik ilyen mechanizmusokkal, ezért a fejlesztőknek saját sebességvezérlési stratégiákat kell implementálniuk — például adaptív bitsebességet videohívásokban vagy sebességkorlátozást játékszervereken a hálózati csatorna túlzott túlterhelésének megelőzésére.

Hol alkalmazzák az UDP-t

Az UDP nélkülözhetetlen olyan forgatókönyvekben, ahol a késleltetési tolerancia fontosabb, mint a csomagvesztési tolerancia. Vizsgáljuk meg a protokoll fő alkalmazási területeit a mobil- és webfejlesztésben.

Audio és video streaming

Az RTP és RTSP protokollok, amelyek az UDP felett működnek, valós idejű audio- és videófolyamok továbbítására szolgálnak. WebRTC — a böngészők és mobilalkalmazások videohívásainak szabványa — az UDP-t használja fő szállítási csatornaként a médiaadatokhoz, a TCP-t pedig a jelzéshez. Egyetlen csomag elvesztése egy 30 fps-es videóban észrevehetetlen a felhasználó számára, ellentétben az újraküldés késleltetésével, amely a kép észrevehető lefagyását okozza.

Online játékok

A többjátékos lövöldözős játékok és MOBA-k 50 ms-nál kisebb késleltetést igényelnek a megfelelő szinkronizációhoz. UDP gyorsabban továbbítja a játékosok pozícióit, lövéseit és eseményeit, mint a TCP, a csomagvesztést pedig egyszerűen figyelmen kívül hagyják — a következő frissítés 16–33 ms múlva érkezik. A népszerű játékmotorok, beleértve az Unity-t és az Unreal Engine-t, az UDP-t saját szállítási rétegeiken keresztül használják, megbízhatóságot adva a kritikus eseményekhez alkalmazási szintű visszaigazolásokkal.

DNS és DHCP

A DNS-lekérdezések az UDP-t használják a 53-as porton, mivel minden lekérdezés egy kis datagram (általában 512 bájtig). Ha nem érkezik válasz, az ügyfél egyszerűen megismétli a lekérdezést időtúllépés után, ami gyorsabb, mint egy TCP-kapcsolat létrehozása a háromlépéses kézfogással. DHCP szintén UDP felett működik, mivel az ügyfélnek még nincs IP-címe, és nem tud TCP-kapcsolatot létesíteni, a broadcast UDP-csomagok pedig lehetővé teszik a DHCP-szerver megtalálását a helyi hálózaton.

Az UDP és TCP összehasonlítása

Az UDP és TCP közötti választás kompromisszum a sebesség és a megbízhatóság között. Minden protokoll optimális a saját feladatköréhez, és különbségeik megértése segít a helyes architekturális döntések meghozatalában a mobilalkalmazások hálózati interakcióinak tervezésekor.

SzempontUDPTCP
Kapcsolat létesítéseNem szükségesHáromlépéses kézfogás
Fejléc8 bájt20–60 bájt
Kézbesítési garanciaNemIgen, visszaigazolással
SorrendezésNemIgen
TorlódásvezérlésNemIgen (AIMD, Slow Start)
AlkalmazásStreaming, játékok, DNSWeb, e-mail, fájlok, API

Mobil projektekben gyakran hibrid megközelítést alkalmaznak: TCP a megbízható kérésekhez (hitelesítés, adatbetöltés) és UDP a médiafolyamokhoz. QUIC — a modern Google protokoll, amely UDP felett működik — egyesíti az UDP sebességét a TCP megbízhatóságával, és már használatos a HTTP/3-ban.

UDP kód példa

Vizsgáljuk meg egy egyszerű UDP szervert Pythonban, amely üzeneteket fogad az ügyfelektől és válaszokat küld. A szerver a 8888-as porton figyel, és a beérkező datagramokat egy végtelen ciklusban dolgozza fel.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('UDP szerver elindult a 8888-as porton')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Fogadva erről: {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

A szerver létrehoz egy UDP socketet, bindol a 8888-as porthoz, és várja a beérkező datagramokat. recvfrom visszaadja az adatokat és az ügyfél címét, lehetővé téve a választ sendto segítségével. A TCP-vel ellentétben a szerver nem tárolja a kapcsolat állapotát — minden datagram függetlenül kerül feldolgozásra. Ez skálázhatóvá teszi az UDP szervereket: egyetlen szerver milliónyi ügyfelet képes kiszolgálni anélkül, hogy memóriát foglalna minden egyes kapcsolathoz, ami fontos a DNS szerverek és játék matchmaking rendszerek számára.

Mobilfejlesztésben az UDP-t gyakran magas szintű könyvtárakon keresztül használják. Például a CocoaAsyncSocket iOS-hez UDP socketeket biztosít delegáltakkal és GCD-vel az aszinkron eseményfeldolgozáshoz. Androidon a DatagramSocket osztály a szabványos java.net könyvtár része, és nem igényel további függőségeket. A Flutter számára létezik az udp csomag, amely egyszerű felületet biztosít datagramok küldéséhez és fogadásához natív socketek konfigurálása nélkül.

Fontos megjegyezni, hogy sok mobil hálózat és vállalati tűzfal blokkolja az UDP forgalmat, különösen az 1024 feletti portokon. Ha alkalmazása UDP-t használ, gondoskodni kell TCP-re való visszaesésről vagy a protokoll elérhetőségének ellenőrzéséről STUN szervereken keresztül, ahogyan a WebRTC teszi. iOS-en a rendszer Network.framework keretrendszere NWConnection-nel támogatja mind a TCP-t, mind az UDP-t, automatikusan kiválasztva az optimális protokollt az elérhetőség alapján. Valós idejű alkalmazásokhoz adaptív bitsebesség bevezetése is ajánlott, amely csökkenti a folyam minőségét csomagvesztés esetén, biztosítva a lejátszás folytonosságát még instabil, magas hibaszintű csatornákon is.

Gyakran ismételt kérdések

Miben különbözik az UDP a TCP-től?

Az UDP nem hoz létre kapcsolatot és nem garantálja a csomagok kézbesítését, ami gyorsabbá teszi a TCP-nél. UDP fejléc — 8 bájt szemben a TCP 20–60 bájtjával. UDP streaminghez és játékokhoz alkalmas, TCP — webes kérésekhez és fájlátvitelhez.

Mi az a datagram az UDP-ben?

A datagram — egy független adatcsomag UDP fejléccel (forrásport, célport, hossz, ellenőrző összeg). Minden datagram függetlenül kerül feldolgozásra, kapcsolat nélkül az előzőekkel. A datagram mérete korlátozott a hálózat MTU-ja által, és specifikáció szerint akár 65507 bájt is lehet.

Hogyan biztosítható a megbízhatóság UDP használata esetén?

Az UDP nem biztosít megbízhatóságot a szállítási rétegben — azt az alkalmazás implementálja. A fejlesztők sorszámokat, ellenőrző összegeket, ismételt kéréseket és hibajavítást adnak hozzá. FEC (Forward Error Correction) lehetővé teszi az elveszett csomagok helyreállítását újraküldés nélkül.

Mikor nem szabad UDP-t használni?

Az UDP nem alkalmas olyan forgatókönyvekhez, ahol az adatintegritás kritikus: fájlátvitel, banki tranzakciók, REST-API. Ezekben az esetekben a TCP garantálja, hogy minden bájt a megfelelő sorrendben érkezik meg. Az UDP instabil, magas veszteségi szintű csatornákon sem ajánlott.

Mi az a QUIC és hogyan kapcsolódik az UDP-hez?

A QUIC — egy szállítási protokoll, amely UDP felett működik, a Google fejlesztette és az IETF szabványosította RFC 9000-ként. Egyesíti az UDP sebességét a TCP megbízhatóságával, támogatja a blokkolás nélküli multiplexelést és a beépített titkosítást. HTTP/3 a QUIC-et használja szállítási rétegként.

Összefoglalás

  • UDP — kapcsolat nélküli protokoll minimális késleltetéssel és 8 bájtos fejléccel
  • Nem garantálja a kézbesítést, a csomagok sorrendjét vagy a duplikáció elleni védelmet
  • Alkalmazzák videohívásokban, online játékokban, DNS-ben, DHCP-ben és streamelésben
  • Az UDP vagy TCP választása a sebesség és megbízhatóság egyensúlyától függ az adott forgatókönyvben
  • Csomagveszteség kompenzálása alkalmazási szinten FEC, ismételt kérések vagy redundancia segítségével
  • QUIC UDP felett egyesíti az UDP sebességét a TCP megbízhatóságával a HTTP/3 protokollban
  • Fejlesztők ellenőrizniük kell a datagram méretét és visszaesést kell biztosítaniuk TCP-re, ha az UDP blokkolva vagy szűrve van a hálózatban

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is