UDP: ano ito, protocol na walang pag-setup ng koneksyon at paano ito gumagana

May-akda: IT Sectr Nai-publish: 2026-03-06 Oras ng pagbabasa: 8 min

UDP (User Datagram Protocol) — protocol ng pagpapadala ng data nang walang pag-setup ng koneksyon, gumagana sa ibabaw ng IP at nagbibigay ng minimal na pagkaantala sa pagpapadala ng mga datagram. Hindi tulad ng TCP, hindi ginagarantiya ng UDP ang paghahatid, pagkakasunud-sunod ng mga packet, o proteksyon mula sa pagdoble. Ayon sa datos ng IETF RFC 768 (2024), pinoproseso ng UDP ang higit sa 40% ng pandaigdigang trapiko sa internet dahil sa mga video call, streaming, at DNS query.

Mga pangunahing punto

  • UDP — protocol na walang pag-setup ng koneksyon, nagpapadala ng mga datagram nang walang kumpirmasyon ng paghahatid
  • Minimal na pagkaantala nakakamit dahil sa kawalan ng handshake, kontrol sa pagsisikip, at muling pagpapadala
  • Ginagamit sa mga video call, online na laro, DNS, DHCP, at streaming
  • Datagram ng UDP ay may header na 8 byte lamang kumpara sa 20–60 byte ng TCP
  • Pagkawala ng packet ay kinokompenza sa antas ng application sa pamamagitan ng FEC, retransmission, o redundancy ng data

Ano ang UDP?

UDP (User Datagram Protocol) — isa sa mga pangunahing protocol ng transport layer ng TCP/IP model, na binuo ni David Reed noong 1980. Nagbibigay ito ng minimal na mekanismo ng pagpapadala ng data: nagpapadala ang application ng datagram, at hindi sinusubaybayan ng protocol kung nakarating ito sa receiver.

Ang UDP header ay binubuo lamang ng apat na field: source port, destination port, length, at checksum. Bawat field ay 2 byte, kaya ang kabuuang sukat ng header ay 8 byte. Para sa paghahambing, ang TCP header na walang opsyon ay 20 byte, at may mga opsyon — hanggang 60 byte.

Hindi sinusuportahan ng protocol ang fragmentation sa sarili nitong antas — kung ang datagram ay lumampas sa MTU (Maximum Transmission Unit), ito ay finafragment sa antas ng IP. Kapag nawala ang isang fragment, itatapon ang buong datagram, dahil hindi maaaring humiling ang UDP ng muling pagpapadala ng mga indibidwal na fragment. Dapat kontrolin ng mga developer ang laki ng datagram — para sa mga mobile network, ang MTU ay madalas na 1400 byte, kaya ang maximum na laki ay hindi dapat lumampas sa halagang ito.

Paano gumagana ang UDP

Ang application na gumagamit ng UDP ay gumagawa ng socket na may uri na SOCK_DGRAM, tinutukoy ang port at IP address ng destination, at nagpapadala ng datagram. Nagdadagdag ang protocol ng minimal na header at ipinapasa ang packet sa IP layer. Ang receiver ay nakikinig sa kanyang port at kumukuha ng data mula sa mga datagram na dumarating.

Hindi nagsasagawa ang UDP ng kontrol sa pagsisikip — ang application ay maaaring magpadala ng mga datagram sa maximum na bilis na sinusuportahan ng network. Ito ay maaaring humantong sa pag-overload ng channel, ngunit sa mga real-time na senaryo, ang ganitong agresibidad ay makatwiran: para sa isang video call, ang daloy ng data na may posibleng pagkawala ay mas mahalaga kaysa sa paghinto ng transmission.

python
import socket

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

Sa halimbawa, gumagawa ng socket na SOCK_DGRAM para sa UDP. Ang pamamaraang sendto ay nagpapadala ng datagram nang walang pag-setup ng koneksyon — sapat na malaman ang IP at port ng receiver. Ang pamamaraang recvfrom sa bahagi ng server ay nagbabalik ng data at address ng sender para sa tugon. Ang mga UDP socket sa mga mobile platform ay naka-configure nang pareho, ngunit nangangailangan ng karagdagang pahintulot: sa iOS kailangan idagdag ang NSAppTransportSecurity para sa mga hindi naka-encrypt na UDP connection, at sa Android — ang pahintulot na INTERNET sa manifest.

Mga kalamangan at kahinaan ng UDP

Ang pagpili ng UDP ay makatwiran sa mga senaryo kung saan ang bilis ay mas mahalaga kaysa sa pagiging maaasahan. Hindi nag-aaksaya ng oras ang protocol sa pag-setup ng koneksyon, mga kumpirmasyon, at muling pagpapadala — ito ay nagbibigay ng minimal na pagkaantala, ngunit nangangailangan ng developer na independiyenteng pangasiwaan ang mga pagkawala.

Mga kalamanganMga kahinaan
Mababang pagkaantala — walang handshakeWalang garantiya ng paghahatid
Mas maliit na header — 8 byteWalang kontrol sa pagsisikip
Suporta sa broadcast at multicastPosibleng mga duplicate ng packet
Kalayaan ng mga datagram — walang pilaLimitado ng MTU ang laki ng datagram

Sa mga mobile application, ang UDP ay ginagamit sa pamamagitan ng mga framework tulad ng WebRTC, na nagdaragdag sa ibabaw ng UDP ng kontrol sa pagkawala, adaptive bitrate, at jitter buffer. Ito ay nagbibigay ng mga bentahe ng bilis nang walang mga kahinaan ng raw protocol.

Ang isa pang mahalagang aspeto ng UDP ay ang kawalan ng kontrol sa pagsisikip. Sa TCP, binabawasan ng mga algorithm na Slow Start at Congestion Avoidance ang bilis ng transmission kapag nawala ang packet upang hindi ma-overload ang network. Walang ganitong mekanismo ang UDP, kaya dapat ipatupad ng mga developer ang kanilang sariling mga estratehiya sa pagkontrol ng bilis — halimbawa, adaptive bitrate sa mga video call o rate limiting sa mga game server upang maiwasan ang labis na pag-overload ng channel ng network.

Saan ginagamit ang UDP

Ang UDP ay kailangang-kailangan sa mga senaryo kung saan ang tolerance sa pagkaantala ay mas mahalaga kaysa sa tolerance sa pagkawala ng packet. Tingnan natin ang mga pangunahing lugar ng aplikasyon ng protocol sa mobile at web development.

Streaming ng audio at video

Ang mga protocol na RTP at RTSP, na gumagana sa ibabaw ng UDP, ay ginagamit para sa pagpapadala ng mga audio at video stream sa real-time. WebRTC — ang pamantayan para sa mga video call sa mga browser at mobile application — ay gumagamit ng UDP bilang pangunahing transport para sa data ng media at TCP para sa signaling. Ang pagkawala ng isang packet sa isang 30 fps video ay hindi napapansin ng user, hindi tulad ng pagkaantala ng muling pagpapadala na nagdudulot ng kapansin-pansing pag-freeze ng larawan.

Mga online na laro

Ang mga multiplayer shooter at MOBA ay nangangailangan ng pagkaantala na mas mababa sa 50 ms para sa tamang synchronization. UDP ay nagpapadala ng mga posisyon ng manlalaro, putok, at mga kaganapan nang mas mabilis kaysa sa TCP, at ang pagkawala ng packet ay binabalewala lamang — ang susunod na update ay darating sa loob ng 16–33 ms. Ang mga sikat na game engine, kabilang ang Unity at Unreal Engine, ay gumagamit ng UDP sa pamamagitan ng kanilang sariling transport layer na may pagdaragdag ng pagiging maaasahan para sa mga kritikal na kaganapan sa pamamagitan ng mga kumpirmasyon sa antas ng application.

DNS at DHCP

Ang mga DNS query ay gumagamit ng UDP sa port 53, dahil ang bawat query ay isang maliit na datagram (karaniwang hanggang 512 byte). Kung hindi dumating ang tugon, uulitin lamang ng client ang query pagkatapos ng timeout, na mas mabilis kaysa sa pag-setup ng TCP connection na may tatlong-hakbang na handshake. DHCP ay gumagana rin sa ibabaw ng UDP, dahil ang client ay wala pang IP address at hindi maaaring mag-setup ng TCP connection, at ang mga broadcast UDP packet ay nagpapahintulot na mahanap ang DHCP server sa lokal na network.

Paghahambing ng UDP at TCP

Ang pagpili sa pagitan ng UDP at TCP ay isang kompromiso sa pagitan ng bilis at pagiging maaasahan. Ang bawat protocol ay optimal para sa sarili nitong klase ng mga gawain, at ang pag-unawa sa kanilang mga pagkakaiba ay tumutulong sa paggawa ng tamang mga desisyon sa arkitektura kapag nagdidisenyo ng network interaction sa mga mobile application.

KategoryaUDPTCP
Pag-setup ng koneksyonHindi kinakailanganTatlong-hakbang na handshake
Header8 byte20–60 byte
Garantiya ng paghahatidHindiOo, may kumpirmasyon
Pag-orderHindiOo
Kontrol sa pagsisikipHindiOo (AIMD, Slow Start)
GamitStreaming, laro, DNSWeb, email, file, API

Sa mga mobile project, madalas ginagamit ang hybrid approach: TCP para sa maaasahang mga kahilingan (awtorisasyon, pag-load ng data) at UDP para sa mga media stream. QUIC — ang modernong Google protocol na gumagana sa ibabaw ng UDP — ay pinagsasama ang bilis ng UDP sa pagiging maaasahan ng TCP at ginagamit na sa HTTP/3.

Halimbawa ng UDP code

Tingnan natin ang isang simpleng UDP server sa Python na tumatanggap ng mga mensahe mula sa mga client at nagpapadala ng tugon. Ang server ay nakikinig sa port 8888 at nagpoproseso ng mga dumarating na datagram sa isang walang-hanggang loop.

python
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('0.0.0.0', 8888))
print('UDP server ay pinatakbo sa port 8888')

while True:
    data, addr = server.recvfrom(1024)
    print(f'Natanggap mula sa {addr}: {data.decode()}')
    server.sendto(b'OK', addr)

Ang server ay gumagawa ng UDP socket, nagbibigkis sa port 8888, at naghihintay ng mga dumarating na datagram. recvfrom ay nagbabalik ng data at address ng client, na nagpapahintulot na tumugon sa pamamagitan ng sendto. Hindi tulad ng TCP, hindi iniimbak ng server ang estado ng koneksyon — bawat datagram ay pinoproseso nang independiyente. Ginagawa nitong scalable ang mga UDP server: isang server ay maaaring magproseso ng milyun-milyong client nang hindi naglalaan ng memory para sa bawat indibidwal na koneksyon, na mahalaga para sa mga DNS server at game matchmaking system.

Sa mobile development, ang UDP ay madalas na ginagamit sa pamamagitan ng mga high-level na library. Halimbawa, CocoaAsyncSocket para sa iOS ay nagbibigay ng mga UDP socket na may mga delegate at GCD para sa asynchronous na pagproseso ng mga kaganapan. Sa Android, ang klase na DatagramSocket ay bahagi ng standard na java.net library at hindi nangangailangan ng karagdagang dependencies. Para sa Flutter, mayroong udp package na nagbibigay ng simpleng interface para sa pagpapadala at pagtanggap ng mga datagram nang hindi kino-configure ang mga native socket.

Mahalagang tandaan na maraming mobile network at corporate firewall ang humaharang sa UDP traffic, lalo na sa mga port na higit sa 1024. Kung ang iyong application ay gumagamit ng UDP, kailangan magbigay ng fallback sa TCP o pagsuri ng availability ng protocol sa pamamagitan ng mga STUN server, tulad ng ginagawa ng WebRTC. Sa iOS, ang system framework na Network.framework na may NWConnection ay sumusuporta sa parehong TCP at UDP, awtomatikong pumipili ng optimal na protocol batay sa availability. Para sa mga real-time application, inirerekomenda rin na ipatupad ang adaptive bitrate, na nagbabawas ng kalidad ng stream kapag nawala ang packet, na tinitiyak ang pagpapatuloy ng pag-play kahit sa mga hindi matatag na channel na may mataas na antas ng error.

Mga madalas itanong

Paano naiiba ang UDP sa TCP?

Ang UDP ay hindi nagse-setup ng koneksyon at hindi ginagarantiya ang paghahatid ng mga packet, na ginagawang mas mabilis ito kaysa sa TCP. UDP header — 8 byte kumpara sa 20–60 byte ng TCP. UDP ay angkop para sa streaming at laro, TCP — para sa web request at paglilipat ng file.

Ano ang datagram sa UDP?

Ang datagram — isang independiyenteng packet ng data na may UDP header (source port, destination port, length, checksum). Bawat datagram ay pinoproseso nang independiyente, walang kaugnayan sa mga nauna. Ang laki ng datagram ay limitado ng MTU ng network at ayon sa detalye — hanggang 65507 byte.

Paano tinitiyak ang pagiging maaasahan kapag gumagamit ng UDP?

Ang UDP ay hindi nagbibigay ng pagiging maaasahan sa transport layer — ito ay ipinapatupad ng application. Nagdaragdag ang mga developer ng mga sequence number, checksum, muling kahilingan, at pagwawasto ng error. FEC (Forward Error Correction) ay nagpapahintulot na mabawi ang mga nawalang packet nang walang muling pagpapadala.

Kailan hindi dapat gamitin ang UDP?

Ang UDP ay hindi angkop para sa mga senaryo kung saan kritikal ang integridad ng data: paglilipat ng file, transaksyon sa bangko, REST-API. Sa mga kasong ito, TCP ay ginagarantiya na ang bawat byte ay darating sa tamang pagkakasunud-sunod. Ang UDP ay hindi rin inirerekomenda sa mga hindi matatag na channel na may mataas na antas ng pagkawala.

Ano ang QUIC at paano ito nauugnay sa UDP?

Ang QUIC — isang transport protocol na gumagana sa ibabaw ng UDP, binuo ng Google at na-standardize ng IETF bilang RFC 9000. Pinagsasama nito ang bilis ng UDP sa pagiging maaasahan ng TCP, sumusuporta sa multiplexing nang walang pagbara at built-in na encryption. HTTP/3 ay gumagamit ng QUIC bilang transport layer.

Buod

  • UDP — protocol na walang pag-setup ng koneksyon na may minimal na pagkaantala at header na 8 byte
  • Hindi ginagarantiya ang paghahatid, pagkakasunud-sunod ng packet, o proteksyon mula sa pagdoble
  • Ginagamit sa mga video call, online na laro, DNS, DHCP, at streaming
  • Pagpili ng UDP o TCP ay depende sa balanse ng bilis at pagiging maaasahan sa partikular na senaryo
  • Pagkawala ng packet ay kinokompenza sa antas ng application sa pamamagitan ng FEC, muling kahilingan, o redundancy
  • QUIC sa ibabaw ng UDP ay pinagsasama ang bilis ng UDP sa pagiging maaasahan ng TCP sa protocol na HTTP/3
  • Mga developer ay dapat kontrolin ang laki ng datagram at magbigay ng fallback sa TCP kapag ang UDP ay hinarang o na-filter sa network

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din