TCP berbanding UDP: perbezaan pengangkutan dan contoh praktikal
TCP dan UDP membawa data aplikasi melalui IP, tetapi menyediakan perkhidmatan yang berbeza. TCP memberikan aplikasi strim bait yang tersusun, lengkap dengan pengakuan terima dan penghantaran semula. UDP menghantar datagram satu per satu tanpa jaminan tersebut di lapisan pengangkutan. Tiada pilihan yang semestinya lebih baik: keperluan aplikasi yang menentukannya.
Apa yang disediakan TCP
TCP mewujudkan sambungan antara titik akhir sebelum data aplikasi ditukar. Ia menomborkan segmen, boleh menghantar semula data yang hilang dan menyampaikan bait kepada aplikasi penerima mengikut urutan. Kawalan aliran dan kawalan kesesakan membantu menghalang penghantar daripada membebankan penerima atau rangkaian. Ciri-ciri ini sesuai untuk fail, e-mel dan banyak sambungan web. Namun, semua ini tidak bermakna data disulitkan: protokol keselamatan berasingan seperti TLS diperlukan untuk melindungi kandungan.
Apabila satu segmen hilang, aplikasi mungkin perlu menunggu bait yang hilang itu sebelum dapat memproses bait seterusnya. Ini wajar bagi dokumen yang mesti sampai dengan lengkap, tetapi boleh menambah kelewatan pada trafik interaktif. TCP juga tidak mengekalkan sempadan mesej aplikasi. Dua operasi tulis oleh penghantar tidak semestinya muncul sebagai dua operasi baca di pihak penerima; aplikasi perlu menentukan sendiri cara mesejnya dibingkaikan.
Apa yang diserahkan UDP kepada aplikasi
UDP mengekalkan sempadan datagram dan tidak mewujudkan sambungan seperti TCP. UDP sendiri tidak mengakui penerimaan, tidak menyusun semula paket dan tidak menghantar semula data yang hilang. Aplikasi yang dibina di atas UDP masih boleh menambah ciri-ciri tersebut, berserta kawalan kesesakan dan penyulitan, apabila perlu. DNS lazimnya menggunakan UDP untuk pertanyaan. QUIC berjalan di atas UDP tetapi melaksanakan strim yang boleh diharap dan keselamatan moden pada lapisan yang lebih tinggi.
Bagi pertuturan langsung atau permainan, paket yang terlalu lewat mungkin kurang berguna berbanding paket seterusnya yang tiba tepat pada masanya. Oleh itu, sesetengah aplikasi memilih untuk mengurus sendiri kehilangan paket dan had masa. Menggunakan UDP tidak menjadikan rangkaian yang sesak lebih laju: baris gilir dan paket yang digugurkan menjejaskan kedua-dua protokol. Ukur aplikasi sebenar, bukannya menganggap nama protokol dapat meramalkan prestasi. Untuk semakan tambahan, gunakan semakan ketersediaan 2IP (ping dan traceroute).
Port dan pemilihan protokol
Kedua-duanya menggunakan nombor port, tetapi port TCP 443 dan port UDP 443 mengenal pasti titik akhir yang berbeza. Semakan port terbuka 2IP untuk TCP tidak dapat membuktikan bahawa perkhidmatan UDP pada nombor yang sama berfungsi. HTTP/1.1 dan HTTP/2 biasanya menggunakan TCP dengan TLS, manakala HTTP/3 menggunakan QUIC di atas UDP. Apabila sambungan UDP gagal, klien mungkin beralih kepada versi HTTP berasaskan TCP; hasil sebenar bergantung pada kedua-dua titik akhir.
Mulakan dengan keperluan aplikasi: penghantaran lengkap, urutan, sempadan mesej dan had masa. Kemudian semak sokongan rangkaian dan keperluan keselamatan. Spesifikasi TCP dan UDP mentakrifkan perkhidmatan pengangkutan masing-masing. Rujuk panduan port rangkaian untuk maksud nombor-nombor tersebut.