Pilihan yang manakah mencirikan protokol UDP dengan betul. Apakah maksud TCP dan UDP? Di mana untuk melihat semua tetapan rangkaian

Protokol lapisan pengangkutan, seterusnya dalam hierarki kepada IP, digunakan untuk memindahkan data antara proses aplikasi yang berjalan pada nod rangkaian. Paket data yang diterima dari satu komputer ke komputer lain melalui Internet mesti dipindahkan ke proses pengendali, dan tepat untuk tujuan tertentu. Lapisan pengangkutan bertanggungjawab untuk ini. Pada tahap ini terdapat dua protokol utama - TCP dan UDP.

Apakah maksud TCP dan UDP?

TCPprotokol pengangkutan penghantaran data dalam rangkaian TCP/IP, yang pra-mewujudkan sambungan ke rangkaian.
UDP– protokol pengangkutan yang menghantar mesej datagram tanpa perlu membuat sambungan pada rangkaian IP.

Perbezaan antara protokol TCP dan UDP

Perbezaan antara protokol TCP dan UDP ialah apa yang dipanggil "jaminan penghantaran". TCP memerlukan respons daripada pelanggan yang menerima paket data, pengesahan penghantaran, dan untuk ini ia memerlukan sambungan yang telah ditetapkan. Juga protokol TCP dianggap boleh dipercayai, manakala UDP telah menerima nama "protokol datagram yang tidak boleh dipercayai." TCP menghapuskan kehilangan data, penduaan dan pencampuran paket, dan kelewatan. UDP membenarkan semua ini, dan tidak memerlukan sambungan untuk berfungsi. Proses yang menerima data melalui UDP mesti sesuai dengan apa yang mereka terima, walaupun dengan kerugian. TCP mengawal kesesakan sambungan, UDP tidak mengawal apa-apa selain integriti datagram yang diterima.
Sebaliknya, disebabkan sikap sewenang-wenang dan kekurangan kawalan ini, UDP menghantar paket data (datagram) dengan lebih pantas, oleh itu untuk aplikasi yang direka untuk lebar jalur yang tinggi dan pertukaran pantas,UDP boleh dianggap sebagai protokol optimum. Ini termasuk permainan rangkaian dan penyemak imbas, serta penstriman program menonton video dan aplikasi untuk komunikasi video (atau suara): kehilangan pakej, lengkap atau separa, tidak mengubah apa-apa, tidak perlu mengulangi permintaan, tetapi muat turun adalah lebih pantas. Protokol TCP, yang lebih dipercayai, berjaya digunakan walaupun dalam program mel, membolehkan anda mengawal bukan sahaja trafik, tetapi juga panjang mesej dan kelajuan pertukaran trafik.

TheDifference.ru menentukan bahawa perbezaan antara TCP dan UDP adalah seperti berikut:

TCP menjamin penghantaran paket data dalam bentuk yang tidak berubah, urutan dan tanpa kehilangan, UDP tidak menjamin apa-apa.
TCP memerlukan lebih awal sambungan yang telah ditetapkan, sambungan UDP tidak diperlukan.
UDP menyediakan lebih banyak lagi kelajuan tinggi penghantaran data.
TCP lebih dipercayai dan mengawal proses pertukaran data.
UDP lebih disukai untuk program yang dimainkan penstriman video, videofoni dan telefoni, permainan rangkaian.

Saya sangat menyukai keseluruhan siri artikel, ditambah pula saya sentiasa mahu mencuba diri saya sebagai penterjemah. Mungkin artikel itu kelihatan terlalu jelas kepada pemaju yang berpengalaman, tetapi nampaknya saya akan berguna dalam apa jua keadaan.

Helo, nama saya Glenn Fiedler dan saya mengalu-alukan anda ke artikel pertama dalam buku dalam talian saya, Pengaturcaraan Rangkaian untuk Pembangun Permainan.

Dalam artikel ini, kita akan bermula dengan aspek paling asas pengaturcaraan rangkaian - menerima dan menghantar data melalui rangkaian. Menerima dan menghantar data adalah yang utama dan paling banyak bahagian mudah daripada keseluruhan rangkaian tugas yang ditangani oleh pengaturcara rangkaian, tetapi selalunya sukar untuk menentukan cara yang terbaik untuk dilalui. Beri perhatian secukupnya pada bahagian ini - jika anda mengalami salah faham, ia boleh membawa kepada akibat buruk untuk permainan berbilang pemain anda nanti!

Anda berkemungkinan besar telah mendengar sesuatu tentang soket, dan anda mungkin tahu bahawa ia datang dalam dua jenis utama - TCP dan UDP. Perkara pertama yang anda perlu tentukan semasa membangunkan permainan berbilang pemain ialah jenis soket yang hendak digunakan - TCP, UDP, atau kedua-duanya?

Pilihan jenis soket bergantung sepenuhnya pada genre permainan yang anda sedang bangunkan. Dalam siri artikel ini, saya akan menganggap bahawa anda sedang menulis permainan aksi - seperti Halo, Battlefield 1942, Quake, Unreal, CounterStrike, Team Fortress, dll.

Sekarang kita akan melihat lebih dekat pada sifat setiap jenis soket (dengan mengambil kira hakikat bahawa kita sedang membangunkan permainan gaya aksi), dan pergi sedikit lebih mendalam ke dalam butiran cara Internet berfungsi. Selepas ulasan terperinci pilihan yang betul akan menjadi jelas!

TCP bermaksud "protokol kawalan penghantaran" dan IP bermaksud "protokol internet". Bersama-sama mereka menyokong hampir semua perkara yang anda lakukan dalam talian, daripada penyemakan imbas web kepada IRC dan komunikasi e-mel - semuanya berjalan pada TCP/IP.

Jika anda pernah menggunakan soket TCP, maka anda harus tahu bahawa TCP ialah protokol yang menggunakan prinsip sambungan yang boleh dipercayai. Ini bermakna anda mewujudkan sambungan antara dua komputer, dan kemudian menghantar data antara mereka, sama seperti anda menulis maklumat ke fail pada satu komputer dan membacanya dari fail yang sama pada yang lain.

Dalam kes ini, sambungan dianggap boleh dipercayai dan konsisten - iaitu, semua maklumat yang anda hantar dijamin akan sampai kepada penerima dalam susunan yang sama semasa ia dihantar. Juga sambungan TCP boleh dianggap sebagai aliran data yang berterusan - protokol itu sendiri menguruskan pemecahan data ke dalam paket dan menghantarnya melalui rangkaian.

Sekali lagi - semuanya semudah kemasukan biasa atau membaca daripada fail. Watson asas!

Tetapi kemudahan penggunaan ini sama sekali berbeza daripada apa yang sebenarnya berlaku "di bawah hud", pada tahap yang lebih rendah - tahap protokol IP.

Pada tahap ini tiada konsep sambungan - sebaliknya paket individu dihantar dari satu komputer ke komputer yang lain. Anda boleh menganggap proses ini sebagai menghantar nota dari seorang kepada yang lain dalam bilik yang penuh dengan orang: akhirnya nota itu sampai kepada orang yang betul, tetapi pada masa yang sama melalui banyak tangan.

Walau bagaimanapun, tiada jaminan bahawa nota itu akan sampai kepada penerima. Pengirim hanya menghantar nota dengan harapan ia akan tiba, tetapi tidak tahu sama ada mesej telah tiba atau tidak - sehingga penerima memutuskan untuk menulis semula.
Sememangnya, pada hakikatnya segala-galanya sedikit lebih rumit, kerana komputer penghantar tidak mengetahui urutan tepat komputer di rangkaian yang melaluinya paket mesti dihantar supaya ia tiba secepat mungkin. Kadangkala IP menghantar berbilang salinan paket yang sama, yang mungkin mengambil laluan berbeza untuk sampai ke destinasi - dan mungkin tiba pada masa yang berbeza.

Bagaimana jika kita ingin memindahkan maklumat antara komputer bukan dalam gaya baca/tulis fail, tetapi secara terus menghantar dan menerima paket individu?

Nah, kita boleh melakukan ini menggunakan UDP. UDP bermaksud "protokol datagram pengguna" dan ia berjalan di atas IP (seperti TCP), tetapi bukannya menambah satu tan fungsi ia hanyalah tambahan kecil kepada IP.

Menggunakan UDP, kami boleh menghantar paket ke alamat IP tertentu (contohnya, 112.140.20.10) dan port (contohnya, 52423), dan ia akan dihantar dari komputer ke komputer sehingga ia sampai ke destinasinya (atau tersesat sepanjang cara).

Pada masa yang sama, di bahagian penerima kami hanya duduk dan menunggu, mendengar port tertentu (52423 dalam kes kami), dan apabila paket tiba dari seseorang (ingat bahawa tiada sambungan digunakan), kami menerima pemberitahuan tentang ini dengan alamat dan port komputer penghantar, saiz paket, dan selepas itu kita boleh membaca data dari paket ini.

Protokol UDP tidak menjamin penghantaran data. Dalam amalan, kebanyakan paket, sudah tentu, tiba, tetapi selalu ada kerugian kira-kira 1-5%, dan kadang-kadang terdapat tempoh masa di mana paket tidak tiba sama sekali (ingat bahawa antara pengirim dan penerima mungkin ada. beribu-ribu komputer, pada mana-mana komputer yang mungkin gagal atau rosak).

Juga, UDP tidak menjamin susunan paket dihantar. Anda boleh menghantar lima paket mengikut urutan - 1, 2, 3, 4, 5 - tetapi ia mungkin tiba dalam susunan yang sama sekali berbeza - contohnya, 3, 1, 2, 5, 4. Sekali lagi, dalam praktiknya, kemungkinan besar ia akan tiba dalam susunan yang betul pada kebanyakan masa, tetapi anda tidak boleh bergantung pada itu!

Akhir sekali, walaupun UDP tidak menambah banyak IP, ia menjamin satu perkara. Jika anda memajukan paket, ia sama ada akan sampai sepenuhnya atau tidak sama sekali. Jadi, jika anda menghantar paket 256 bait ke komputer lain, maka ia tidak boleh menerima hanya 100 bait pertama daripada paket - ia mesti menerima semua 256 bait. Ini adalah satu-satunya perkara yang dijamin oleh protokol UDP - segala-galanya terletak di bahu anda.

Jadi kita perlu membuat keputusan - patutkah kita menggunakan soket TCP atau UDP? Mari kita lihat sifat mereka:

  • Menggunakan prinsip sambungan
  • Menjamin penghantaran dan pemulihan
  • Secara automatik membahagikan maklumat ke dalam paket
  • Memastikan data tidak dihantar terlalu intensif (kawalan aliran data)
  • Mudah digunakan - seperti menulis/membaca daripada fail
UDP:
  • Tidak menggunakan prinsip sambungan - anda perlu melaksanakannya secara manual
  • Tidak menjamin penghantaran dan pesanan penghantaran pakej - ia mungkin tiba dalam susunan yang salah, dengan pendua, atau tidak tiba langsung!
  • Anda perlu membahagikan data secara manual ke dalam paket dan menghantarnya
  • Anda perlu berhati-hati untuk tidak menghantar data terlalu intensif
  • Jika paket hilang, anda perlu menjejakinya dan, jika perlu, hantar semula
Dengan senarai sedemikian, penyelesaiannya nampak jelas - TCP melaksanakan semua fungsi yang kami perlukan dan lebih mudah digunakan, manakala menggunakan UDP menjanjikan buasir dengan menulis segala-galanya secara manual, dari awal. Jadi kita menggunakan TCP, bukan?

Tetapi tidak.

Menggunakan TCP mungkin kesilapan yang paling teruk, yang boleh dicapai apabila membangunkan permainan berbilang pemain. Untuk memahami sebabnya, mari lihat perkara yang menjadikan TCP begitu mudah untuk digunakan!

Cara TCP berfungsi
TCP dan UDP kedua-duanya berfungsi di atas IP, tetapi sebenarnya mereka berbeza sama sekali. UDP berkelakuan sangat serupa dengan IP, manakala TCP mengasingkan pengguna daripada semua isu paket, menjadikan interaksi serupa dengan membaca/menulis pada fail.

Jadi bagaimana dia melakukannya?

Pertama, TCP menggunakan abstraksi aliran data - anda hanya boleh menulis bait data ke aliran itu dan TCP akan memastikan ia sampai ke destinasinya. Oleh kerana IP menghantar data dalam paket dan TCP berjalan di atas IP, TCP mesti memecahkan aliran input pengguna ke dalam paket individu. Jadi, di dalam TCP, beberapa logik mengumpul data ke dalam baris gilir, dan apabila ia mencukupi, ia membentuk satu paket dan menghantarnya ke destinasi.

Tingkah laku ini boleh menjadi masalah untuk permainan berbilang pemain kami jika kami perlu memindahkan paket yang sangat kecil. Ia mungkin berlaku bahawa TCP memutuskan untuk tidak menghantar data kami sehingga ia telah terkumpul cukup untuk membentuk satu paket dengan saiz tertentu (katakan, lebih daripada seratus bait). Dan ini - masalah besar, kerana adalah perlu untuk memindahkan data daripada klien (ketukan kekunci pemain) ke pelayan secepat mungkin, dan jika terdapat kelewatan akibat penimbalan data oleh protokol, maka permainan tidak akan menjadi yang paling menyenangkan untuk pemain di pihak pelanggan. Dalam kes ini, mengemas kini objek permainan akan berlaku dengan kelewatan dan jarang - sedangkan kita perlu mengemas kini objek tepat pada masanya dan kerap.

TCP mempunyai pilihan untuk membetulkannya - "TCP_NODELAY". Ia memberitahu protokol untuk tidak menunggu data terkumpul dalam baris gilir penghantaran, tetapi menghantarnya dengan segera.

Malangnya, walaupun dengan pilihan ini dipasang, TCP mempunyai banyak masalah apabila digunakan dalam permainan rangkaian.

Punca semua masalah terletak pada cara TCP mengendalikan paket yang hilang atau tidak mengikut pesanan, mewujudkan ilusi sambungan yang boleh dipercayai dan konsisten.

Cara TCP memastikan kebolehpercayaan sambungan
Pada penghantaran TCP memecahkan aliran data ke dalam paket individu, menghantarnya melalui rangkaian menggunakan protokol IP yang tidak boleh dipercayai, dan kemudian membina semulanya daripada komputer penerima menerima paket aliran asal.

Tetapi apa yang berlaku jika salah satu paket tidak sampai? Atau jika bungkusan tiba dalam keadaan tidak teratur, atau dengan pendua?

Tanpa terlalu terperinci Operasi TCP(dan ini adalah topik yang sangat kompleks - anda boleh membacanya dalam TCP/IP Illustrated), prosesnya kelihatan seperti ini: TCP menghantar paket, menentukan bahawa paket tidak sampai dan menghantar semula paket yang sama kepada penerima. Paket pendua dihapuskan di pihak penerima, dan paket yang tiba di luar pesanan disusun semula supaya semuanya seperti yang sepatutnya - boleh dipercayai dan teratur.

Masalahnya ialah apabila TCP "menyegerakkan" aliran data dengan cara ini, jika paket hilang, penghantaran berhenti sehingga paket yang hilang dihantar semula (dan diterima oleh destinasi). Jika data baharu tiba semasa menunggu, ia akan beratur dan anda tidak akan dapat membacanya sehingga paket yang hilang tiba. Berapa lama masa yang diambil untuk menghantar semula pakej? Ia mengambil sekurang-kurangnya masa pergi balik paket (apabila TCP menentukan paket yang hendak dihantar semula), ditambah masa untuk menghantar semula paket yang hilang. Jadi jika ping antara komputer ialah 125ms, penghantaran semula paket akan mengambil masa kira-kira satu perlima saat, dan dalam kes yang paling teruk - sehingga setengah saat (bayangkan jika tiba-tiba paket yang baru dihantar juga hilang). Veselukha!

Mengapa anda tidak boleh menggunakan TCP untuk permainan berbilang pemain
Masalah dengan menggunakan TCP dalam permainan dalam talian ialah, tidak seperti pelayar, E-mel dan aplikasi lain, permainan bergantung pada interaksi masa nyata. Untuk banyak aspek permainan, seperti kekunci yang ditekan oleh pengguna dan kedudukan pemain dalam permainan, tidak kira apa yang berlaku sesaat lalu, tetapi hanya keadaan terkini. dunia permainan.

Mari lihat contoh mudah permainan berbilang pemain, seperti penembak 3D. Bahagian rangkaian permainan dibina dengan sangat mudah: setiap lelaran kitaran permainan, pelanggan menghantar kepada pelayan penerangan tentang semua tindakan pemain (kekunci ditekan, kedudukan tetikus, dll.), dan setiap lelaran pelayan memproses data ini , mengemas kini model dunia permainan dan menghantar semula yang semasa ke kedudukan pelanggan objek dunia supaya ia melukis bingkai baharu untuk pemain.

Jadi, dalam permainan kami, jika paket hilang semasa dihantar melalui rangkaian, permainan berhenti dan menunggu sehingga paket dihantar semula. Di sisi klien, objek permainan membeku, dan pada pelayan, pemain juga tidak boleh bergerak atau menembak kerana pelayan tidak dapat menerima paket baru. Apabila paket yang hilang akhirnya tiba, ia mengandungi maklumat lapuk yang tidak lagi relevan. Di samping itu, selepas ini, semua paket yang telah terkumpul dalam baris gilir semasa masa menunggu juga tiba, dan mereka semua perlu diproses dalam satu lelaran gelung. Kekeliruan lengkap!

Malangnya, tiada cara untuk mengubah tingkah laku TCP ini, dan tidak perlu, kerana ini adalah maksud TCP. Ini adalah satu keperluan untuk menjadikan penghantaran data melalui Internet sebagai aliran data yang boleh dipercayai dan konsisten.
Tetapi kami tidak memerlukan aliran data yang boleh dipercayai dan konsisten.

Kami memerlukan data untuk dihantar dari klien ke pelayan secepat mungkin, dan kami tidak mahu menunggu data dihantar semula.
Inilah sebabnya anda tidak boleh menggunakan TCP untuk permainan berbilang pemain.

Tapi tunggu! Mengapa saya tidak boleh menggunakan kedua-dua UDP dan TCP bersama-sama?

Untuk data permainan masa nyata, seperti klik pengguna dan keadaan dunia permainan, hanya data terkini yang penting, tetapi untuk jenis data lain, seperti set arahan yang dihantar dari satu komputer ke komputer lain, kebolehpercayaan dan ketekalan saluran boleh menjadi sangat penting.

Sudah tentu, sangat menarik untuk menggunakan UDP untuk input pengguna dan data keadaan dunia, dan TCP untuk data yang mesti dijamin untuk dihantar. Anda mungkin berfikir bahawa anda boleh membuat berbilang "benang" perintah - contohnya, satu untuk memuatkan tahap, satu lagi untuk arahan AI. Anda berfikir, "Saya tidak memerlukan pasukan AI menunggu dalam barisan jika paket data untuk memuatkan tahap hilang, kerana mereka tidak berkaitan sama sekali!" DALAM dalam kes ini anda betul dan anda boleh membuat keputusan untuk mencipta dengan soket TCP untuk setiap aliran arahan.

Pada pandangan pertama, ini idea bernas. Tetapi masalahnya ialah kerana TCP dan UDP kedua-duanya berjalan di atas IP, paket kedua-dua protokol akan mempengaruhi satu sama lain - sudah berada di peringkat IP. Sejauh mana kesan ini akan nyata adalah persoalan yang sangat kompleks, dan ia berkaitan dengan mekanisme kebolehpercayaan dalam TCP. Tetapi, dalam apa jua keadaan, ambil perhatian bahawa menggunakan TCP biasanya membawa kepada peningkatan kehilangan paket UDP. Jika anda ingin mengetahui lebih lanjut tentang ini, anda boleh membaca

Protokol lapisan pengangkutan, seterusnya dalam hierarki kepada IP, digunakan untuk memindahkan data antara proses aplikasi yang berjalan pada nod rangkaian. Paket data yang diterima dari satu komputer ke komputer lain melalui Internet mesti dipindahkan ke proses pengendali, dan tepat untuk tujuan tertentu. Lapisan pengangkutan bertanggungjawab untuk ini. Terdapat dua protokol utama pada lapisan ini - TCP dan UDP.

Definisi

TCP— protokol pengangkutan untuk pemindahan data dalam rangkaian TCP/IP, yang pada awalnya mewujudkan sambungan ke rangkaian.

UDP- protokol pengangkutan yang menghantar mesej datagram tanpa perlu membuat sambungan pada rangkaian IP.

Perbandingan

Perbezaan antara protokol TCP dan UDP ialah apa yang dipanggil "jaminan penghantaran". TCP memerlukan respons daripada klien yang menerima paket data, pengesahan penghantaran, dan untuk ini ia memerlukan sambungan yang telah ditetapkan. Juga, protokol TCP dianggap boleh dipercayai, manakala UDP telah menerima nama "protokol datagram yang tidak boleh dipercayai." TCP menghapuskan kehilangan data, penduaan dan pencampuran paket, dan kelewatan. UDP membenarkan semua ini, dan tidak memerlukan sambungan untuk berfungsi. Proses yang menerima data melalui UDP mesti sesuai dengan apa yang mereka terima, walaupun dengan kerugian. TCP mengawal kesesakan sambungan, UDP tidak mengawal apa-apa selain integriti datagram yang diterima.

Sebaliknya, disebabkan sikap sewenang-wenang dan kekurangan kawalan sedemikian, UDP menghantar paket data (datagram) dengan lebih pantas, oleh itu untuk aplikasi yang direka bentuk untuk pemprosesan tinggi dan pertukaran pantas, UDP boleh dianggap sebagai protokol yang optimum. Ini termasuk permainan rangkaian dan penyemak imbas, serta penstriman program menonton video dan aplikasi untuk komunikasi video (atau suara): kehilangan pakej, lengkap atau separa, tidak mengubah apa-apa, tidak perlu mengulangi permintaan, tetapi muat turun adalah lebih pantas. Protokol TCP, yang lebih dipercayai, berjaya digunakan walaupun dalam program e-mel, membolehkan anda mengawal bukan sahaja trafik, tetapi juga panjang mesej dan kelajuan pertukaran trafik.

Laman web Kesimpulan

  1. TCP menjamin penghantaran paket data dalam bentuk yang tidak berubah, urutan dan tanpa kehilangan, UDP tidak menjamin apa-apa.
  2. TCP memerlukan sambungan yang telah ditetapkan, UDP tidak memerlukan sambungan.
  3. UDP menyediakan kadar pemindahan data yang lebih tinggi.
  4. TCP lebih dipercayai dan mengawal proses pertukaran data.
  5. UDP adalah lebih baik untuk program yang memainkan video penstriman, videofoni dan telefon, dan permainan rangkaian.

Protokol UDP

Protokol Datagram Pengguna (UDP) ialah protokol mudah, tanpa sambungan, berorientasikan datagram yang menyediakan perkhidmatan pengangkutan yang pantas, tetapi tidak semestinya boleh dipercayai. Ia menyokong interaksi satu-ke-banyak dan oleh itu sering digunakan untuk penyiaran dan penghantaran datagram berbilang hantaran.

Protokol Internet (IP) ialah protokol utama Internet. Protokol Kawalan Penghantaran (TCP) dan UDP ialah protokol lapisan pengangkutan yang dibina di atas protokol asas.

TCP/IP ialah satu set protokol, juga dipanggil Internet Protocol Suite, yang terdiri daripada empat lapisan. Ingat bahawa TCP/IP bukan hanya satu protokol, tetapi satu keluarga atau set protokol yang terdiri daripada protokol peringkat rendah lain seperti IP, TCP dan UDP. UDP terletak pada lapisan pengangkutan di atas IP (protocol lapisan rangkaian). Lapisan pengangkutan menyediakan komunikasi antara rangkaian melalui pintu masuk. Ia menggunakan alamat IP untuk menghantar paket data melalui Internet atau rangkaian lain menggunakan pelbagai pemacu peranti.

Sebelum anda mula belajar kerja UDP, mari beralih kepada istilah asas yang perlu anda ketahui dengan baik. Di bawah ini kami akan mentakrifkan secara ringkas istilah utama yang dikaitkan dengan UDP:

Pakej

Dalam penghantaran data, paket adalah urutan digit binari, mewakili data dan isyarat kawalan yang dihantar dan ditukar melalui hos. Di dalam pakej, maklumat ini terletak mengikut format khas.

Datagram

Datagram ialah satu paket data bebas yang membawa maklumat yang mencukupi untuk bergerak dari sumber ke destinasi, jadi tiada trafik tambahan diperlukan antara sumber, destinasi dan rangkaian pengangkutan.

MTU (Unit Penghantaran Maksimum)

MTU mencirikan lapisan pautan dan sepadan bilangan maksimum bait yang boleh dihantar dalam satu paket. Dalam erti kata lain, MTU ialah paket terbesar yang boleh dibawa oleh persekitaran rangkaian tertentu. Sebagai contoh, Ethernet mempunyai MTU tetap sebanyak 1500 bait. Dalam UDP, jika saiz datagram lebih besar daripada MTU, protokol IP melakukan pemecahan dengan memecahkan datagram kepada kepingan yang lebih kecil (serpihan) supaya setiap serpihan adalah kurang daripada MTU.

Pelabuhan

Untuk memadankan data masuk ke proses tertentu yang dijalankan pada komputer, UDP menggunakan port. UDP memajukan paket ke lokasi yang sesuai menggunakan nombor port yang dinyatakan dalam pengepala UDP datagram. Port diwakili oleh nombor 16-bit dan oleh itu mengambil nilai antara 0 hingga 65,535. Port, yang juga dipanggil titik akhir sambungan logik, dibahagikan kepada tiga kategori:

    baik pelabuhan terkenal- dari 0 hingga 1023

    Pelabuhan berdaftar - dari 1024 hingga 49151

    Port dinamik/peribadi - 49152 hingga 65535

Ambil perhatian bahawa port UDP boleh menerima lebih daripada satu mesej pada bila-bila masa. Dalam sesetengah kes, perkhidmatan TCP dan UDP mungkin menggunakan nombor port yang sama, seperti 7 (Echo) atau 23 (Telnet).

UDP menggunakan port yang diketahui berikut:

Senarai port UDP dan TCP diselenggara oleh IANA (Internet Assigned Numbers Authority).

alamat IP

Datagram IP terdiri daripada sumber 32-bit dan alamat IP destinasi. Alamat IP destinasi menentukan titik akhir untuk datagram UDP, dan alamat IP sumber digunakan untuk mendapatkan maklumat tentang siapa yang menghantar mesej. Di destinasi, paket ditapis dan mereka yang alamat sumbernya tidak termasuk dalam set alamat yang sah dibuang tanpa pemberitahuan kepada pengirim.

Alamat IP unicast secara unik mengenal pasti hos pada rangkaian, manakala alamat IP berbilang hantaran mengenal pasti kumpulan alamat tertentu pada rangkaian. Alamat IP penyiaran diterima dan diproses oleh semua hos rangkaian tempatan atau subnet tertentu.

TTL

Nilai masa untuk hidup, atau TTL (masa untuk hidup) membolehkan anda menetapkan had atas pada bilangan penghala yang boleh dilalui oleh datagram. Nilai TTL menghalang paket daripada mencapai gelung yang tidak berkesudahan. Ia dimulakan oleh penghantar dan dikurangkan oleh satu oleh setiap penghala yang memproses datagram. Apabila nilai TTL menjadi sifar, datagram akan dibuang.

Mel berkumpulan

Multicast ialah kaedah terbuka berasaskan standard untuk mengedarkan maklumat yang sama kepada berbilang pengguna secara serentak. Multicast ialah ciri utama protokol UDP; ia tidak boleh dilakukan dengan protokol TCP. Multicast membenarkan interaksi satu-ke-banyak, contohnya membuat penggunaan yang mungkin seperti menghantar berita dan mel kepada berbilang penerima, radio Internet atau program demo masa nyata. Multicast tidak memuatkan rangkaian seperti penghantaran siaran, kerana data dihantar kepada beberapa pengguna sekaligus:

Cara UDP berfungsi

Apabila aplikasi berasaskan UDP menghantar data ke hos lain pada rangkaian, UDP menambahkannya dengan pengepala lapan bit yang mengandungi nombor port destinasi dan sumber, jumlah panjang data dan jumlah semak. IP menambah pengepalanya di atas datagram UDP, membentuk datagram IP:

Angka sebelumnya menunjukkan bahawa jumlah panjang pengepala UDP ialah lapan bait. Secara teori saiz maksimum Datagram IP ialah 65,535 bait. Dengan 20 bait pengepala IP dan 8 bait pengepala UDP, panjang data pengguna boleh mencapai sehingga 65,507 bait. Walau bagaimanapun, kebanyakan program berfungsi dengan data saiz yang lebih kecil. Oleh itu, untuk kebanyakan aplikasi, panjang lalai adalah lebih kurang 8192 bait, kerana ini ialah jumlah data yang dibaca dan ditulis oleh rangkaian sistem fail(NFS). Anda boleh menetapkan saiz penimbal input dan output.

Jumlah semak diperlukan untuk menyemak sama ada data telah dihantar ke destinasinya dengan betul atau telah rosak. Ia merangkumi kedua-dua pengepala UDP dan data. Bait pengisi digunakan jika jumlah bilangan oktet dalam datagram adalah ganjil. Jika diterima jumlah semak sama dengan sifar, penerima mengesan ralat checksum dan membuang datagram. Walaupun checksum adalah ciri pilihan, ia sentiasa disyorkan untuk memasukkannya.

Dalam langkah seterusnya, lapisan IP menambah 20 bait pengepala yang merangkumi TTL, alamat IP sumber dan destinasi serta maklumat lain. Tindakan ini dipanggil enkapsulasi IP.

Seperti yang dinyatakan sebelum ini, saiz paket maksimum ialah 65,507 bait. Jika pakej lebih besar daripada lalai Saiz MTU, kemudian lapisan IP memecahkan paket kepada segmen. Segmen ini dipanggil serpihan, dan proses memecahkan data kepada segmen adalah pemecahan. Pengepala IP mengandungi semua maklumat serpihan.

Apabila aplikasi penghantaran "membuang" datagram ke rangkaian, ia dihalakan ke alamat IP destinasi yang dinyatakan dalam pengepala IP. Apabila melalui penghala, nilai masa untuk hidup (TTL) dalam pengepala IP dikurangkan sebanyak satu.

Apabila datagram tiba di destinasi dan port tertentu, lapisan IP menyemak pengepalanya untuk melihat sama ada datagram itu berpecah-belah. Jika ya, datagram dipasang mengikut maklumat dalam pengepala. Akhirnya lapisan aplikasi mendapatkan semula data yang ditapis dengan mengalih keluar pengepala.

Kelemahan UDP

Berbanding dengan TCP, UDP mempunyai kelemahan berikut:

    Tiada isyarat pengakuan. Sebelum menghantar paket UDP, pihak penghantar tidak bertukar isyarat jabat tangan dengan pihak penerima. Oleh itu, pengirim tidak mempunyai cara untuk mengetahui sama ada datagram telah sampai ke sistem destinasi. Akibatnya, UDP tidak dapat menjamin bahawa data akan benar-benar dihantar ke destinasi (contohnya, jika sistem akhir atau rangkaian tidak berfungsi).

    Sebaliknya, TCP adalah berorientasikan sambungan dan membolehkan komunikasi antara hos yang disambungkan rangkaian menggunakan paket. TCP menggunakan isyarat berjabat tangan untuk mengesahkan bahawa data telah berjaya diangkut.

    Menggunakan sesi. Sifat berorientasikan sambungan TCP disokong oleh sesi antara hos. TCP menggunakan pengecam sesi untuk menjejaki sambungan antara dua hos. UDP tidak mempunyai sokongan sesi kerana sifatnya tanpa sambungan.

    Kebolehpercayaan. UDP tidak menjamin bahawa hanya satu salinan data akan dihantar kepada penerima. Untuk hantar sistem akhir jumlah data yang besar, UDP memecahkannya kepada bahagian-bahagian kecil. UDP tidak menjamin bahawa bahagian-bahagian ini akan dihantar ke destinasi mereka dalam susunan yang sama di mana bahagian-bahagian ini dicipta di sumber. Sebaliknya, TCP menggunakan nombor port bersama-sama dengan nombor siri dan pengesahan dihantar secara tetap untuk memastikan penghantaran data teratur.

    Keselamatan. TCP lebih selamat daripada UDP. Dalam kebanyakan organisasi, tembok api dan penghala tidak membenarkan paket UDP melaluinya. Ini kerana penggodam boleh mengambil kesempatan Port UDP tanpa membuat perkaitan yang jelas.

    Kawalan aliran. UDP tidak mempunyai kawalan aliran, dan akibatnya, aplikasi UDP yang direka bentuk dengan buruk boleh menangkap sebahagian besar daripada lebar jalur rangkaian.

Faedah UDP

Berbanding dengan TCP, UDP mempunyai kelebihan berikut:

    Tiada sambungan diwujudkan. UDP ialah protokol tanpa sambungan, jadi ia menghapuskan overhed yang berkaitan dengan mewujudkan sambungan. Memandangkan UDP tidak menggunakan jabat tangan, kelewatan sambungan juga dielakkan. Inilah sebabnya mengapa DNS lebih mengutamakan UDP berbanding TCP - DNS akan menjadi lebih perlahan jika ia dijalankan melalui TCP.

    Kelajuan. UDP lebih pantas daripada TCP. Atas sebab ini, banyak aplikasi lebih suka UDP berbanding TCP. Ciri yang sama yang menjadikan TCP lebih mantap (seperti isyarat jabat tangan) juga memperlahankannya.

    Kepelbagaian topologi. UDP menyokong komunikasi satu-dengan-satu dan satu-ke-banyak, manakala TCP hanya menyokong komunikasi satu sama satu.

    Overhed. Bekerja dengan TCP bermakna peningkatan overhed, overhed yang dikenakan oleh UDP adalah jauh lebih rendah. TCP menggunakan lebih banyak sumber berbanding UDP sistem operasi, dan sebagai akibatnya, dalam persekitaran di mana pelayan melayani banyak pelanggan secara serentak, UDP digunakan secara meluas.

    Saiz pengepala. Untuk setiap paket, pengepala UDP hanya lapan bait panjang, manakala TCP mempunyai pengepala 20-bait, dan oleh itu UDP menggunakan kurang lebar jalur rangkaian.