Apa perbedaan antara TCP dan UDP?
Saya tahu bahwa TCP digunakan dalam kasus aplikasi kritis non-waktu, dan UDP digunakan untuk game atau aplikasi yang membutuhkan transmisi data yang cepat. Saya tahu bahwa TCP digunakan untuk HTTP, HTTPs, FTP, SMTP, dan Telnet. Saya tahu bahwa UDP digunakan untuk DNS dan DHCP.
Tapi kenapa? Apa karakteristik TCP dan UDP yang berguna untuk kasus penggunaannya masing-masing?
tcp
network-programming
udp
protocols
pengguna749414
sumber
sumber
Jawaban:
TCP
adalah aliran yang berorientasi koneksi melalui jaringan IP. Ini menjamin bahwa semua paket yang dikirim akan mencapai tujuan dalam urutan yang benar. Ini menyiratkan penggunaan paket pengakuan yang dikirim kembali ke pengirim, dan transmisi ulang otomatis, menyebabkan keterlambatan tambahan dan transmisi umum yang kurang efisien daripadaUDP
.UDP
adalah protokol tanpa koneksi. Komunikasi berorientasi pada datagram . Integritas dijamin hanya pada datagram tunggal. Datagram mencapai tujuan dan bisa rusak atau tidak tiba sama sekali. Ini lebih efisien daripadaTCP
karena menggunakan non ACK . Ini umumnya digunakan untuk komunikasi waktu nyata, di mana sedikit persentase tingkat kehilangan paket lebih disukai daripada overheadTCP
koneksi.Dalam situasi tertentu
UDP
digunakan karena memungkinkan transmisi paket broadcast. Ini kadang-kadang mendasar dalam kasus-kasus sepertiDHCP
protokol, karena mesin klien masih belum menerimaIP
alamat (ini adalahDHCP
tujuan protokol negosiasi) dan tidak akan ada cara untuk membangunTCP
aliran tanpaIP
alamat itu sendiri.sumber
Dari artikel Skullbox:
1) TCP berorientasi koneksi dan dapat diandalkan sedangkan UDP adalah koneksi yang kurang dan tidak dapat diandalkan.2) TCP membutuhkan lebih banyak pemrosesan pada level antarmuka jaringan sedangkan di UDP tidak.
3) Penggunaan TCP, jabat tangan 3 arah, kontrol kemacetan, kontrol aliran, dan mekanisme lainnya untuk memastikan transmisi yang andal.
4) UDP sebagian besar digunakan dalam kasus-kasus di mana keterlambatan paket lebih serius daripada kehilangan paket.
sumber
is the most commonly used protocol on the Internet
pernyataan itu bisa diperdebatkan dan sangat bergantung pada bagaimana Anda mendefinisikanmost commonly used
,protocol
danthe Internet
. Misalnya, Protokol Internet lebih mungkin menjadi pesaing mahkota tersebut.Anggap TCP sebagai penjemputan / pengantaran paket UPS / FedEx berdedikasi yang dijadwalkan antara dua lokasi, sementara UDP setara dengan melempar kartu pos di kotak surat.
UPS / FedEx akan melakukan yang terbaik untuk memastikan bahwa paket yang Anda kirim tiba di sana, dan tiba tepat waktu. Dengan kartu pos, Anda beruntung jika itu datang sama sekali, dan mungkin tiba rusak atau terlambat (berapa kali Anda mendapat kartu pos dari seseorang SETELAH mereka pulang dari liburan?)
TCP sedekat mungkin dengan protokol pengiriman yang dijamin, sementara UDP hanyalah "upaya terbaik".
sumber
Alasan UDP digunakan untuk DNS dan DHCP:
DNS - TCP membutuhkan lebih banyak sumber daya dari server (yang mendengarkan koneksi) daripada dari klien. Secara khusus, ketika koneksi TCP ditutup, server diharuskan untuk mengingat detail koneksi (menahan mereka dalam memori) selama dua menit, selama keadaan yang dikenal sebagai TIME_WAIT_2. Ini adalah fitur yang membela terhadap paket yang diulang secara keliru dari koneksi sebelumnya yang ditafsirkan sebagai bagian dari koneksi saat ini. Mempertahankan TIME_WAIT_2 menggunakan memori kernel di server. Permintaan DNS kecil dan sering datang dari berbagai klien. Pola penggunaan ini memperburuk beban di server dibandingkan dengan klien. Diyakini bahwa menggunakan UDP, yang tidak memiliki koneksi dan tidak ada status untuk dipertahankan pada klien atau server, akan memperbaiki masalah ini.
DHCP - DHCP adalah ekstensi dari BOOTP. BOOTP adalah protokol yang digunakan komputer klien untuk mendapatkan informasi konfigurasi dari server, saat klien melakukan booting. Untuk menemukan server, siaran dikirim meminta server BOOTP (atau DHCP). Siaran hanya dapat dikirim melalui protokol tanpa koneksi, seperti UDP. Oleh karena itu, BOOTP memerlukan setidaknya satu paket UDP, untuk siaran yang mencari server. Selain itu, karena BOOTP berjalan saat klien ... melakukan boot, dan ini adalah periode waktu ketika klien mungkin tidak memiliki seluruh tumpukan TCP / IP yang dimuat dan berjalan, UDP mungkin merupakan satu-satunya protokol yang siap ditangani oleh klien pada saat itu. waktu. Akhirnya, beberapa klien DHCP / BOOTP hanya memiliki UDP. Sebagai contoh, beberapa termostat IP hanya menerapkan UDP.
Seperti yang telah disebutkan orang lain, UDP juga berguna untuk streaming media, terutama audio. Percakapan terdengar lebih baik di bawah kelambatan jaringan jika Anda hanya menjatuhkan paket yang tertunda. Anda dapat melakukannya dengan UDP, tetapi dengan TCP yang Anda dapatkan selama jeda adalah jeda, diikuti oleh audio yang akan selalu tertunda sebanyak yang telah dijeda. Untuk percakapan gaya telepon dua arah, ini tidak dapat diterima.
sumber
Singkatnya, salah satu perbedaannya
UDP : Kirim pesan dan jangan melihat ke belakang jika mencapai tujuan, Protokol tanpa koneksi
TCP : Kirim pesan dan jaminan untuk mencapai tujuan, Protokol berorientasi koneksi
sumber
TCP membuat koneksi sebelum transmisi data aktual terjadi, UDP tidak. Dengan cara ini, UDP dapat memberikan pengiriman yang lebih cepat. Aplikasi seperti DNS, akses server waktu, oleh karena itu, gunakan UDP.
Tidak seperti UDP, TCP menggunakan kontrol kemacetan. Ini menanggapi beban jaringan. Tidak seperti UDP, itu melambat ketika kemacetan jaringan sudah dekat. Jadi, aplikasi seperti multimedia lebih memilih throughput konstan mungkin berlaku untuk UDP.
Selain itu, UDP tidak bisa diandalkan, itu tidak bereaksi pada paket loss. Jadi kehilangan aplikasi sensitif seperti transmisi multimedia lebih memilih UDP. Namun, TCP adalah protokol yang andal, jadi, aplikasi yang membutuhkan keandalan seperti transfer web, email, unduhan file lebih suka TCP.
Selain itu, di internet saat ini UDP tidak seramah TCP karena kotak tengah. Beberapa aplikasi seperti skype jatuh ke TCP ketika koneksi UDP diasumsikan diblokir.
sumber
Hukum Abstraksi Bocor oleh Joel Spolsky
http://www.joelonsoftware.com/articles/LeakyAbstractions.html
sumber
Perbedaan pendek dan sederhana antara protokol Tcp dan Udp:
1) Tcp - Protokol kontrol transmisi dan Udp - Protokol datagram pengguna.
2) Tcp adalah protokol yang dapat diandalkan, sedangkan Udp adalah protokol yang tidak dapat diandalkan.
3) Tcp berorientasi pada aliran, sedangkan Udp adalah protokol berorientasi pesan.
4) Tcp lebih lambat dari Udp.
sumber
Jalankan ke utas ini dan izinkan saya mencoba untuk mengekspresikannya dengan cara ini.
TCP
Jabat tangan 3 arah
Bob: Hei Amy, aku ingin memberitahumu rahasia
Amy: OK, silakan, aku siap
Bob: OK
Komunikasi
Bob: 'Saya', ini adalah huruf pertama
Amy: Surat pertama diterima, tolong kirimi saya surat kedua
Bob: '', ini adalah surat kedua
Amy: Surat kedua diterima, tolong kirimi saya surat ketiga
Bob: 'L ', ini adalah huruf ketiga
Setelah beberapa saat
Bob: ' L ', ini huruf ketiga
Amy: Surat ketiga diterima, tolong kirimi aku surat keempat
Bob: ' O ', ini huruf keempat
Amy: ...
... ...
Jabat tangan 4-arah
Bob: Rahasiaku terbuka, sekarang, kau tahu hatiku.
Amy: Baik. Saya tidak punya apa-apa untuk dikatakan.
Bob: Oke.
UDP
Bob: I LOVE U
Amy menerima: OVI LE
TCP lebih andal daripada UDP dengan jaminan pesan bahkan dijamin, itu tidak diragukan lagi mengapa UDP lebih ringan dan efisien.
sumber
Penjelasan Sederhana oleh Analogi
TCP seperti ini.
Bayangkan Anda memiliki sahabat pena di Mars (kami berkomunikasi dengan surat-surat tertulis di masa lalu sebelum internet).
Anda perlu mengirim sahabat pena Anda tujuh kebiasaan orang yang sangat efektif. Jadi, Anda memutuskan untuk mengirimnya dalam tujuh surat terpisah:
dll.
etc..Letter 7 - Mempertajam Saw
Persyaratan:
Anda ingin memastikan bahwa sahabat pena Anda menerima semua surat Anda - agar dan mereka datang dengan sempurna . Jika pembayaran pena Anda menerima huruf 7 sebelum huruf 1 - itu tidak baik. jika sahabat pena Anda menerima semua huruf kecuali huruf 3 - itu juga tidak baik.
Inilah cara kami memastikan bahwa persyaratan kami dipenuhi:
sumber
TLDR;
Sebelum kita mulai, ingatlah bahwa semua kerugian dari sesuatu adalah kelanjutan dari kelebihannya . Hanya ada alat yang tepat untuk suatu pekerjaan, tidak ada obat mujarab. TCP / UDP hidup berdampingan selama beberapa dekade, dan karena suatu alasan.
TCP
Itu dirancang untuk menjadi sangat andal dan melakukan tugasnya dengan sangat baik. Ini sangat kompleks karena menyelesaikan tugas yang berat: membuktikan transportasi yang andal atas protokol IP yang tidak dapat diandalkan.
Karena semua logika kompleks TCP dienkapsulasi ke dalam tumpukan jaringan, Anda bebas dari melakukan banyak hal tingkat melelahkan yang rawan kesalahan di lapisan aplikasi.
Ketika Anda mengirim data melalui TCP, Anda menulis aliran byte ke soket di pengirim di mana ia dipecah menjadi paket, melewati tumpukan dan dikirim melalui kabel. Di sisi penerima, paket-paket dipasang kembali menjadi aliran byte yang berkelanjutan.
Mempertahankan abstraksi yang bagus ini memiliki biaya dalam hal kompleksitas dan kinerja. Jika paket pertama dari aliran byte hilang, penerima akan menunda pemrosesan paket-paket berikutnya bahkan yang sudah tiba.
Selain itu, agar dapat diandalkan, TCP mengimplementasikan ini:
Semua ini diperburuk dalam jaringan nirkabel lambat yang tidak dapat diandalkan sementara TCP dirancang untuk jaringan kabel di mana penundaan dapat diprediksi dan hilangnya paket tidak begitu umum. Selain itu, seperti banyak orang telah sebutkan, untuk beberapa hal TCP tidak berfungsi sama sekali (DHCP). Namun, jika relevan, TCP masih bekerja dengan sangat baik.
Menggunakan analogi surat, sesi TCP mirip dengan menceritakan kisah kepada sekretaris Anda yang memecahnya menjadi surat dan mengirim lebih dari layanan surat jelek ke penerbit. Di sisi lain sekretaris lain merakit surat menjadi satu bagian teks. Beberapa email hilang, beberapa rusak, sehingga diperlukan prosedur yang sangat rumit untuk pengiriman yang andal dan kisah 10 halaman Anda dapat memakan waktu lama untuk mencapai penerbit Anda.
UDP
UDP, di sisi lain, berorientasi pada pesan, sehingga penerima menulis pesan (paket) ke soket dan kemudian dikirim ke penerima apa adanya, tanpa pemisahan / perakitan.
Dibandingkan dengan TCP, spesifikasinya sangat sederhana. Intinya, semua yang dilakukannya untuk Anda adalah menambahkan checksum ke paket sehingga penerima dapat mendeteksi korupsi. Segala sesuatu yang lain harus diimplementasikan oleh Anda, pengembang perangkat lunak. Sekarang bacalah spec TCP yang tebal dan coba pikirkan untuk mengimplementasikan kembali beberapa bagiannya.
Beberapa orang menggunakan cara ini dan mendapatkan hasil yang sangat baik, sampai-sampai HTTP / 3 menggunakan QUIC - protokol yang didasarkan pada UDP. Namun, ini lebih merupakan pengecualian. Aplikasi umum UDP adalah aplikasi streaming audio / video dan konferensi seperti Skype, Zoom atau Google Hangout di mana kehilangan paket tidak begitu penting dibandingkan dengan penundaan yang diperkenalkan oleh TCP.
sumber