Ada dua jenis lalu lintas Internet Protocol (IP). Mereka TCP atau Protokol Kontrol Transmisi dan UDP atau Protokol Datagram Pengguna. TCP berorientasi koneksi - setelah koneksi terbentuk, data dapat dikirim dua arah. UDP adalah protokol Internet yang lebih sederhana dan tanpa koneksi. Beberapa pesan dikirim sebagai paket dalam potongan menggunakan UDP.
TCP | UDP | |
---|---|---|
Akronim untuk | Protokol Kontrol Transmisi | User Datagram Protocol atau Universal Datagram Protocol |
Koneksi | Transmission Control Protocol adalah protokol berorientasi koneksi. | User Datagram Protocol adalah protokol tanpa koneksi. |
Fungsi | Sebagai pesan berjalan melintasi internet dari satu komputer ke komputer lainnya. Ini berbasis koneksi. | UDP juga merupakan protokol yang digunakan dalam pengangkutan atau transfer pesan. Ini bukan koneksi berbasis yang berarti bahwa satu program dapat mengirim banyak paket ke yang lain dan itu akan menjadi akhir dari hubungan. |
Pemakaian | TCP cocok untuk aplikasi yang membutuhkan keandalan tinggi, dan waktu transmisi relatif kurang kritis. | UDP cocok untuk aplikasi yang membutuhkan transmisi cepat, efisien, seperti game. Sifat stateless UDP juga berguna untuk server yang menjawab pertanyaan kecil dari sejumlah besar klien. |
Gunakan oleh protokol lain | HTTP, HTTPs, FTP, SMTP, Telnet | DNS, DHCP, TFTP, SNMP, RIP, VOIP. |
Memesan paket data | TCP mengatur ulang paket data dalam urutan yang ditentukan. | UDP tidak memiliki urutan bawaan karena semua paket tidak tergantung satu sama lain. Jika diperlukan, pemesanan harus dikelola oleh lapisan aplikasi. |
Kecepatan transfer | Kecepatan untuk TCP lebih lambat dari UDP. | UDP lebih cepat karena pemulihan kesalahan tidak dilakukan. Ini adalah protokol "upaya terbaik". |
Keandalan | Ada jaminan mutlak bahwa data yang ditransfer tetap utuh dan tiba dalam urutan yang sama dengan waktu pengirimannya. | Tidak ada jaminan bahwa pesan atau paket yang dikirim akan mencapai sama sekali. |
Ukuran header | Ukuran header TCP adalah 20 byte | Ukuran Header UDP adalah 8 byte. |
Bidang Judul Umum | Port sumber, port Tujuan, Periksa Jumlah | Port sumber, port Tujuan, Periksa Jumlah |
Streaming data | Data dibaca sebagai aliran byte, tidak ada indikasi yang membedakan ditransmisikan ke batas-batas pesan sinyal (segmen). | Paket dikirim secara individual dan diperiksa integritasnya hanya jika tiba. Paket memiliki batas-batas tertentu yang dihormati setelah diterima, yang berarti operasi baca pada soket penerima akan menghasilkan seluruh pesan seperti yang awalnya dikirim. |
Bobot | TCP sangat berat. TCP memerlukan tiga paket untuk mengatur koneksi soket, sebelum data pengguna apa pun dapat dikirim. TCP menangani keandalan dan kontrol kemacetan. | UDP ringan. Tidak ada pemesanan pesan, tidak ada koneksi pelacakan, dll. Ini adalah lapisan transport kecil yang dirancang di atas IP. |
Kontrol Aliran Data | TCP melakukan Flow Control. TCP memerlukan tiga paket untuk mengatur koneksi soket, sebelum data pengguna apa pun dapat dikirim. TCP menangani keandalan dan kontrol kemacetan. | UDP tidak memiliki opsi untuk kontrol aliran |
Pemeriksaan Kesalahan | TCP melakukan pengecekan kesalahan dan pemulihan kesalahan. Paket yang salah dikirimkan kembali dari sumber ke tujuan. | UDP melakukan pengecekan kesalahan tetapi hanya membuang paket yang salah. Pemulihan kesalahan tidak dilakukan. |
Bidang | 1. Nomor Urutan, 2. Nomor AcK, 3. Data offset, 4. Dicadangkan, 5. Bit kontrol, 6. Jendela, 7. Urgent Pointer 8. Opsi, 9. Padding, 10. Periksa Jumlah, 11. Port sumber, 12. Pelabuhan tujuan | 1. Panjang, 2. Port sumber, 3. Port tujuan, 4. Periksa Jumlah |
Pengakuan | Segmen pengakuan | Tidak Ada Pengakuan |
Jabatan tangan | SYN, SYN-ACK, ACK | Tidak ada jabat tangan (protokol tanpa koneksi) |
TCP memastikan pengiriman aliran byte yang dapat diandalkan dan dipesan dari pengguna ke server atau sebaliknya. UDP tidak didedikasikan untuk koneksi ujung ke ujung dan komunikasi tidak memeriksa kesiapan penerima.
TCP lebih dapat diandalkan karena mengelola penerimaan pesan dan transmisi ulang jika ada bagian yang hilang. Jadi sama sekali tidak ada data yang hilang. UDP tidak memastikan bahwa komunikasi telah mencapai penerima karena konsep pengakuan, batas waktu dan pengiriman ulang tidak ada.
TCP transmisi dikirim secara berurutan dan diterima dalam urutan yang sama. Jika segmen data tiba dengan urutan yang salah, TCP akan memesan ulang dan mengirimkan aplikasi. Dalam kasus UDP, urutan pesan yang dikirim mungkin tidak dipertahankan ketika mencapai aplikasi penerima. Sama sekali tidak ada cara untuk memprediksi urutan pesan yang akan diterima.
TCP adalah koneksi berat yang membutuhkan tiga paket untuk koneksi soket dan menangani kontrol dan keandalan kemacetan. UDP adalah lapisan transportasi ringan yang dirancang di atas IP. Tidak ada koneksi pelacakan atau pemesanan pesan.
TCP membaca data sebagai aliran byte dan pesan dikirim ke batas segmen. UDP pesan adalah paket yang dikirim secara individual dan pada saat kedatangan diperiksa integritasnya. Paket memiliki batas yang ditentukan sementara aliran data tidak memiliki.
UDP bekerja atas dasar "upaya terbaik". Protokol mendukung deteksi kesalahan melalui checksum tetapi ketika kesalahan terdeteksi, paket tersebut dibuang. Pengiriman ulang paket untuk pemulihan dari kesalahan itu tidak dilakukan. Ini karena UDP biasanya untuk aplikasi yang sensitif terhadap waktu seperti game atau transmisi suara. Pemulihan dari kesalahan tidak ada gunanya karena pada saat paket yang dikirim ulang diterima, itu tidak akan ada gunanya.
TCP menggunakan deteksi kesalahan dan pemulihan kesalahan. Kesalahan terdeteksi melalui checksum dan jika suatu paket salah, itu tidak diakui oleh penerima, yang memicu pengiriman ulang oleh pengirim. Mekanisme operasi ini disebut Pengakuan Positif dengan Retransmisi (PAR).
Koneksi TCP dibuat melalui jabat tangan tiga arah, yang merupakan proses memulai dan mengakui koneksi. Setelah koneksi terjalin, transfer data dapat dimulai. Setelah transmisi, koneksi diakhiri dengan menutup semua sirkuit virtual yang ada.
UDP menggunakan model transmisi sederhana tanpa dialog goyangan tangan secara implisit untuk menjamin keandalan, pemesanan, atau integritas data. Dengan demikian, UDP menyediakan layanan yang tidak dapat diandalkan dan datagram mungkin rusak, muncul duplikat, atau hilang tanpa pemberitahuan. UDP mengasumsikan bahwa pengecekan dan koreksi kesalahan tidak diperlukan atau dilakukan dalam aplikasi, menghindari overhead pemrosesan tersebut pada tingkat antarmuka jaringan. Tidak seperti TCP, UDP kompatibel dengan siaran paket (mengirim ke semua di jaringan lokal) dan multicasting (mengirim ke semua pelanggan).
Penjelajahan web, email, dan transfer file adalah aplikasi umum yang memanfaatkan TCP. TCP digunakan untuk mengontrol ukuran segmen, laju pertukaran data, kontrol aliran dan kemacetan jaringan. TCP lebih disukai di mana fasilitas koreksi kesalahan diperlukan di tingkat antarmuka jaringan. UDP sebagian besar digunakan oleh aplikasi yang sensitif terhadap waktu dan juga oleh server yang menjawab pertanyaan kecil dari sejumlah besar klien. UDP kompatibel dengan paket broadcast - pengiriman ke semua di jaringan dan multicasting - pengiriman ke semua pelanggan. UDP umumnya digunakan dalam Sistem Nama Domain, Voice over IP, Protokol Transfer File Sepele dan game online.
Untuk game massively multiplayer online (MMO), pengembang sering harus membuat pilihan arsitektur antara menggunakan koneksi persisten UDP atau TCP. Kelebihan dari TCP adalah koneksi yang gigih, keandalan, dan kemampuan untuk menggunakan paket-paket ukuran yang berubah-ubah. Masalah terbesar dengan TCP dalam skenario ini adalah algoritma kontrol kemacetannya, yang memperlakukan kehilangan paket sebagai tanda keterbatasan bandwidth dan secara otomatis membatasi pengiriman paket. Pada jaringan 3G atau Wi-Fi, ini dapat menyebabkan latensi yang signifikan.
Pengembang berpengalaman Christoffer Lernö mempertimbangkan pro dan kontra dan merekomendasikan kriteria berikut untuk memilih apakah akan menggunakan TCP atau UDP untuk game Anda: