Cara mengetahui apakah suatu protokol menggunakan TCP atau UDP

9

Yah saya tahu itu mungkin terdengar pertanyaan bodoh dan saya percaya bahwa jawaban yang paling tepat adalah seperti saya akan tahu ketika pengalaman saya meningkat dan saya belajar lebih banyak tentang protokol.

Namun saya seorang mahasiswa dan saya tidak memiliki banyak pengalaman di lapangan. Meskipun saya bisa google untuk protokol yang diberikan, saya ingin tahu apakah ada aturan praktis. Saya masih merasa meminta "aturan praktis" itu bodoh, tetapi saya masih mencari satu.

Saya menemukan daftar ini di wikipedia yang mencantumkan protokol dan apakah mereka menggunakan TCP atau UDP dalam format tabel. Namun saya tidak dapat mengerti bahwa apa artinya ketika baris untuk protokol tertentu berisi TCP dan UDP dengan nomor port tunggal. Misalnya, di baris Telnet, ia memiliki 23-TCP-UDP. Apa artinya ini? Telnet dapat beroperasi pada port TCP 23 dan port UDP 23?

Saya juga menemukan bahwa di buku teks saya, dikatakan TFTP menggunakan UDP, tetapi jika kita lihat pada tabel di atas, garis TFTP adalah 69-TCP-UDP. Jadi, tebak saja apa yang terjadi pada tabel di atas.

Maha
sumber

Jawaban:

9

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.

Eddie
sumber
2
Ya, +1, permintaan DNS terdiri dari satu permintaan UDP dari klien diikuti oleh satu balasan UDP dari server. Transmission Control Protocol (TCP) digunakan ketika ukuran data respon melebihi 512 byte, atau untuk tugas-tugas seperti transfer zona.
Ijaz Ahmad Khan
@IjazKhan, tidak ada lagi perbedaan seperti itu. Lihat RFC 7766 : " Dokumen ini menentukan persyaratan untuk dukungan TCP sebagai protokol transport untuk implementasi DNS dan memberikan panduan menuju kinerja DNS-over-TCP setara dengan DNS-over-UDP. Dokumen ini menggantikan RFC 5966 dan karenanya memperbarui RFC 1035 dan RFC 1123. "dan" Oleh karena itu, dokumen ini memperbarui spesifikasi protokol DNS inti sedemikian rupa sehingga dukungan untuk TCP selanjutnya menjadi bagian yang DIBUTUHKAN dari implementasi protokol DNS lengkap. "
Ron Maupin
6

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.

Ron Maupin
sumber
5

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:

  • Jalankan netstat -andari prompt perintah Windows.
  • Unduh dan jalankan TCPView (yang juga mencantumkan UDP) untuk tampilan GUI.
  • Jalankan Wireshark
  • Jalankan nmapmelawan server dengan port yang dimaksud (secara default hanya memindai port TCP)
crrimson
sumber
0

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)

Peter Green
sumber