Anda mengajukan pertanyaan yang bagus. Jangan biarkan orang lain mengatakan sebaliknya.
Sayangnya, tidak ada aturan praktis untuk jenis protokol yang menggunakan TCP dan jenis protokol yang menggunakan UDP.
Keputusan apakah suatu protokol menggunakan satu atau yang lain jatuh kepada siapa pun yang menulis / membuat protokol untuk memulai.
Jika mereka tidak ingin repot menulis sistem "pengiriman yang dapat diandalkan" sendiri, maka mereka dapat menggunakan TCP yang menyediakan semua keandalan secara bawaan.
Jika mereka berpikir (mengetahui protokol mereka sendiri) bahwa mereka dapat menulis sistem "pengiriman yang lebih baik" yang lebih baik atau lebih tepat, maka mereka dapat membangun itu ke dalam protokol itu sendiri dan hanya menggunakan UDP sebagai transportasi mereka.
Sebagai contoh, lihat pengambilan sampel TFTP UDP , Anda akan melihat ada dibangun dalam sistem pengakuan dalam TFTP itu sendiri - memiliki keduanya dan sistem pengakuan tambahan dalam TCP hanya akan menjadi berlebihan.
Sedangkan FTP, yang berjalan melalui TCP, tidak memiliki sistem pengakuan bawaan. Seorang pengguna hanya meminta file, dan pengirim mengirimkannya. Ada pemberitahuan "transfer file selesai", tetapi tidak ada yang menjamin telah menerima setiap bit file. FTP mengandalkan keandalan TCP untuk memastikan file mendapatkan hasil yang baik.
Yang mengatakan, saya melihat daftar port pada halaman wiki yang Anda tautkan, dan melihat sejumlah protokol yang diduga menggunakan TCP dan UDP. Ini asing bagi saya, dan saya hanya tahu sangat sedikit yang menggunakan keduanya (yaitu, DNS). Tetapi mungkin ada implementasi TFTP yang menggunakan TCP, dan jika demikian, saya khawatir saya tidak memiliki eksposur untuk itu.
Domain Name System (DNS) secara tradisional adalah protokol yang dirujuk ketika membahas protokol yang menggunakan TCP dan UDP. Itu tidak menggunakan ini pada saat yang sama, ingatlah. Tetapi fungsi berbeda dalam DNS mungkin membutuhkan TCP vs UDP.
Misalnya, ketika membuat permintaan resolusi A-record yang sederhana, "permintaan" dan "respons" sangat ringan, keduanya membutuhkan satu paket. Dengan demikian, ini biasanya dilakukan di atas UDP.
Tetapi jika permintaan atau respons memerlukan transfer yang lebih besar (di atas jumlah byte tertentu), maka DNS memilih untuk menggunakan TCP untuk memastikan "semua bit" sampai di sana. Ini biasa terjadi pada permintaan Transfer Zona lengkap.
Halaman Wikipedia bukan yang terbaik. IANA mengelola registri untuk nomor port (berhati-hatilah, saat ini 138 halaman): Nama Layanan dan Transportasi Transport Number Port Registry
Protokol lapisan aplikasi bebas untuk menggunakan protokol lapisan transportasi dan nomor port. Secara konvensional, sebagian besar menggunakan nomor port tertentu dalam registri, tetapi itu tidak berarti mereka tidak dapat menggunakan yang lain juga. Misalnya, server web akan default ke port TCP 80, tetapi dapat diatur untuk menggunakan nomor port lain, dan browser web masih dapat menggunakannya jika diberi nomor port pada URI.
Ada banyak aplikasi yang dapat diatur untuk menggunakan TCP atau UDP, dan nomor port dapat diubah. Ini menawarkan fleksibilitas ketika berhadapan dengan konflik dan implementasi aneh.
sumber
Dalam kehidupan nyata, Anda akan merasa sangat mudah untuk mengetahui protokol transportasi mana yang digunakan. Juga, jika Anda mencari "aturan praktis", maka pikirkan ini:
UDP adalah protokol 'tanpa koneksi' / tidak dapat diandalkan, ia tidak memulihkan paket yang hilang seperti TCP, dan memiliki overhead yang lebih sedikit daripada TCP, sehingga digunakan sebagai transportasi untuk aplikasi yang sensitif terhadap penundaan (seperti streaming audio / video).
TCP adalah 'koneksi berorientasi' / protokol yang dapat diandalkan, ia memulihkan paket ketika mereka hilang, dan memiliki overhead yang lebih tinggi, tetapi digunakan di mana kehilangan paket akan menyebabkan masalah.
Berikut adalah sejumlah metode yang dapat Anda gunakan untuk menentukan dalam kehidupan nyata apa protokol transport layer yang digunakan aplikasi:
netstat -an
dari prompt perintah Windows.nmap
melawan server dengan port yang dimaksud (secara default hanya memindai port TCP)sumber
Sumber daftar wikipedia tampaknya terutama https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt dengan garis yang sesekali diperbarui berdasarkan referensi spesifik protokol.
Sepertinya untuk alokasi yang lebih lama baik nomor port TCP dan UDP dialokasikan untuk sebuah protokol bahkan jika protokol hanya benar-benar menggunakan satu atau yang lain. Misalnya FTP memiliki entri dalam tabel IANA untuk TCP dan UDP. Entri-entri ini merujuk pada RFC 959 tetapi RFC 959 tidak menyebutkan UDP.
Umumnya sumber daya untuk mencari tahu apa yang mendasari protokol aplikasi sebenarnya menggunakan standar protokol mendefinisikan.
Beberapa protokol dapat menggunakan TCP atau UDP baik pada pilihan pengguna (misalnya NFS) atau tergantung pada detail permintaan (misalnya DNS)
sumber