Perbedaan antara TCP dan UDP?

144

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?

pengguna749414
sumber
13
Dan ini ( skullbox.net/tcpudp.php ) - yang merupakan hit Google pertama - tidak cukup jelas? Apa yang membingungkan tentang itu? Mungkin ini lebih baik? tcpipguide.com/free/…
S.Lott
1
Saya benar-benar ingin tahu mengapa pertanyaan ini mendapat (pada saat penulisan) 3 upvotes. Kalimat pertama bahkan tidak masuk akal dan ada banyak bahan yang tersedia tentang topik ini jika seseorang mencari.
MattH
21
@ MattH: 1) Ini pertanyaan yang bagus, jika agak luas dan duplikat sudah dijawab dengan baik. 2) Anda memiliki reputasi lebih dari cukup untuk memperbaiki kesalahan ketik pada kalimat pertama. 3) Tidak relevan bahwa informasi tentang ini ada di tempat lain. Stack Overflow bertujuan untuk menjadi tempat penyimpanan pengetahuan, dan menjawab pertanyaan secara kanonik di sini .
ire_and_curses
2
Menarik bahwa hampir tidak ada yang menyebutkan bahwa DHCP menggunakan siaran, tetapi semua orang berpikir 'jawabannya' adalah tentang jaminan pengiriman dan pengiriman ulang.
Heath Hunnicutt
1
Hanya untuk orang lain yang membaca ini di masa depan, situs Skullbox yang disebutkan di atas memiliki MALWARE menurut Google (itu menghentikan saya ketika saya mengkliknya). Saya sarankan tidak pergi ke sana.
Alan006

Jawaban:

119

TCPadalah 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 daripada UDP.

UDPadalah 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 daripada TCPkarena menggunakan non ACK . Ini umumnya digunakan untuk komunikasi waktu nyata, di mana sedikit persentase tingkat kehilangan paket lebih disukai daripada overhead TCPkoneksi.

Dalam situasi tertentu UDPdigunakan karena memungkinkan transmisi paket broadcast. Ini kadang-kadang mendasar dalam kasus-kasus seperti DHCPprotokol, karena mesin klien masih belum menerima IPalamat (ini adalah DHCPtujuan protokol negosiasi) dan tidak akan ada cara untuk membangun TCPaliran tanpa IPalamat itu sendiri.

Heisenbug
sumber
5
Contoh di mana UDP digunakan adalah dalam transmisi video dan audio di mana kehilangan beberapa paket di sana-sini biasanya tidak terlalu penting (warna bingkai mungkin mati, atau nano-detik kecil audio mungkin dipotong atau diubah - tidak terlalu terlihat oleh manusia). Tentu saja, jika koneksi Anda benar-benar buruk, Anda mungkin kehilangan begitu banyak paket sehingga video tampak buram / pixelated dan audio menjadi kabur dan memotong masuk dan keluar banyak.
Niko Bellic
53

Dari artikel Skullbox:

TCP (Transmission Control Protocol) adalah protokol yang paling umum digunakan di Internet. Alasannya adalah karena TCP menawarkan koreksi kesalahan. Ketika protokol TCP digunakan ada "pengiriman terjamin." Ini sebagian besar sebagian disebabkan oleh metode yang disebut "flow control." Kontrol aliran menentukan kapan data perlu dikirim ulang, dan menghentikan aliran data sampai paket sebelumnya berhasil ditransfer. Ini berfungsi karena jika paket data dikirim, tabrakan dapat terjadi. Ketika ini terjadi, klien meminta kembali paket dari server sampai seluruh paket selesai dan identik dengan aslinya.

UDP (User Datagram Protocol) adalah protokol anther yang umum digunakan di Internet. Namun, UDP tidak pernah digunakan untuk mengirim data penting seperti halaman web, informasi basis data, dll; UDP umumnya digunakan untuk streaming audio dan video. Media streaming seperti file audio Windows Media (.WMA), Real Player (.RM), dan lainnya menggunakan UDP karena ia menawarkan kecepatan! Alasan UDP lebih cepat dari TCP adalah karena tidak ada bentuk kontrol aliran atau koreksi kesalahan. Data yang dikirim melalui Internet dipengaruhi oleh tabrakan, dan kesalahan akan muncul. Ingatlah bahwa UDP hanya mementingkan kecepatan. Ini adalah alasan utama mengapa streaming media tidak berkualitas tinggi.

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.

p27
sumber
1
+1 Ringkasan yang cukup bagus. Padahal is the most commonly used protocol on the Internetpernyataan itu bisa diperdebatkan dan sangat bergantung pada bagaimana Anda mendefinisikan most commonly used, protocoldan the Internet. Misalnya, Protokol Internet lebih mungkin menjadi pesaing mahkota tersebut.
MattH
-1: Alasan UDP digunakan untuk DHCP tidak ada hubungannya dengan penundaan atau hilangnya paket.
Heath Hunnicutt
2
Saat mengirim banyak data pada saluran yang jelas, TCP seringkali lebih cepat daripada UDP. Alasan UDP digunakan untuk hal-hal seperti live-streaming audio atau video adalah bahwa ketika paket TCP hilang, aplikasi penerima tidak akan melihat apa-apa lagi sampai data yang hilang telah dikirim ulang dan diterima dengan sukses. Dalam banyak aplikasi streaming, data yang tiba terlambat akan sia-sia, jadi tidak ada gunanya menahan semuanya sambil menunggu pengiriman ulang yang akan sia-sia.
supercat
UDP digunakan untuk DHCP karena TCP tidak mendukung siaran. DHCP bergantung pada penggunaan siaran untuk mendapatkan alamat IP untuk server DHCP. Lihat stackoverflow.com/questions/21266008/…
ScottSmudger
41

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".

Marc B
sumber
1
Jawaban yang cukup layak. Saya akan menambahkan bahwa dalam aliran TCP paket diakui oleh tujuan dan paket rusak / paket yang hilang dikirim ulang oleh pengirim. Di UDP paket-paket dikirim dan tujuan menerimanya dengan urutan apa pun dan tidak mengakui tanda terima.
Erik Nedwidek
2
Sedikit analogi yang menyesatkan mungkin lebih cocok untuk QoS
MattH
11
Saya sangat menyukai analoginya, tetapi satu hal yang jawaban ini sedikit keliru adalah kecepatannya. itu membuatnya terdengar seperti TCP lebih cepat, ketika pada kenyataannya UDP adalah karena ada lebih sedikit overhead.
iliketocode
22

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.

Heath Hunnicutt
sumber
17

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

caltuntas
sumber
9

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.

Timir
sumber
2

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.

msc
sumber
1

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.

Eugene
sumber
0

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:

  1. Huruf 1 - Bersikap proaktif
  2. Huruf 2 - Mulailah dengan akhir dalam pikiran ...

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:

  • Surat Konfirmasi: Jadi sahabat pena Anda mengirim surat konfirmasi untuk mengatakan "Saya telah menerima surat 1". Dengan begitu Anda tahu bahwa sahabat pena Anda telah menerimanya. Jika sebuah surat tidak datang, atau keluar dari pesanan, maka Anda harus berhenti, dan kembali dan mengirim kembali surat itu, dan semua surat berikutnya.
  • Kontrol Aliran: Sekitar waktu Natal Anda tahu bahwa sahabat pena Anda akan menerima banyak surat, jadi Anda melambat karena Anda tidak ingin membanjiri sahabat pena Anda. (Sobat pena Anda mengirimkan pembaruan terus-menerus tentang jumlah pesan yang belum dibaca di kotak surat penpal - jika sobat pena Anda mengatakan bahwa kotak masuk itu akan meledak karena begitu penuh, maka Anda memperlambat pengiriman surat Anda - karena sobat pena Anda tidak akan dapat membacanya.
  • Kedatangan sempurna. Terkadang saat Anda mengirim surat melalui pos, surat itu bisa robek, atau siput bisa memakan setengahnya. Bagaimana Anda tahu bahwa semua surat Anda telah tiba dalam kondisi sempurna? Nah sahabat pena Anda akan memberi Anda mekanisme di mana Anda dapat memeriksa apakah mereka telah mendapatkan surat lengkap dan bahwa itu adalah surat yang Anda kirimkan. (mis. via jumlah kata, dll.). analogi dasar.
BKSpurgeon
sumber
0

TLDR;

  • TCP - berorientasi pada aliran, membutuhkan koneksi, andal, lambat
  • UDP - berorientasi pesan, tanpa koneksi, tidak dapat diandalkan, cepat

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:

  • TCP membutuhkan koneksi yang sudah mapan, yang membutuhkan 3 kali pulang pergi (jabat tangan 3 arah yang terkenal).
  • TCP memiliki fitur yang disebut "mulai lambat" ketika secara bertahap meningkatkan tingkat transmisi setelah membuat koneksi untuk memungkinkan penerima untuk mengikuti data.
  • Setiap paket yang dikirim harus diakui atau pengirim akan berhenti mengirim lebih banyak data
  • Dan terus dan terus dan terus ...

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.

raiks
sumber