Mengapa mode pasif FTP menggunakan berbagai porta sesaat dibandingkan dengan satu porta yang terkenal? [Tutup]

9

Dalam mode pasif FTP, saya membaca bahwa server mengirimkan nomor port acak ke klien di mana ia dapat membangun saluran data.
Kemudian klien membuat saluran data dari nomor port acak ke nomor port ini yang dikirim oleh server.

Pertanyaan saya adalah mengapa server mengirim nomor port acak ke klien? Mengapa klien tidak dapat secara langsung membuat saluran data ke port nomor 20 di sisi server?

Angin barat
sumber
2
Saya pikir ini di luar topik.
Sayangnya, pertanyaan tentang protokol di atas OSI layer-4 di luar topik di sini.
Ron Maupin

Jawaban:

13

Begitulah protokol FTP dirancang untuk bekerja dalam mode pasif. Itu mungkin bukan ide yang baik, karena saya tidak berpikir bahwa model ini pernah diulang lagi di protokol lain (dan itu benar bahkan lebih tentang mode aktif FTP).


Pada port koneksi data, tidak ada protokol. Semua yang diketahui server - satu-satunya hal yang membawa informasi dalam koneksi itu - adalah nomor port yang Anda hubungkan.

Jika Anda terhubung ke port yang sama setiap kali, server tidak akan dapat memberi tahu file apa yang Anda sambungkan. Nomor port berfungsi sebagai penghubung antara permintaan transfer pada koneksi kontrol dan koneksi data - nomor port terkandung dalam respons terhadap PASVperintah.

Jika dua klien meminta transfer pada saat yang sama, ketika server menerima koneksi pada satu port, server tidak akan dapat memberi tahu file apa yang akan ditransfer. Tentu saja, server dapat menggunakan IP klien untuk mengambil keputusan (sebenarnya banyak server FTP yang memvalidasi bahwa IP klien cocok dengan IP yang digunakan pada koneksi kontrol, untuk keamanan).

Tetapi ini tidak akan berhasil untuk:

  • Banyak koneksi dari mesin yang sama (sebagian besar klien FTP mendukung transfer / antrian paralel dan Anda sebenarnya dapat menjalankan beberapa klien FTP berbeda pada satu mesin);
  • Koneksi dari mesin yang berbeda dalam jaringan (perusahaan) yang sama, karena mereka memiliki IP eksternal yang sama.

Disalin sebagian dari jawaban saya ke Mengapa mode pasif FTP memerlukan rentang port yang bertentangan dengan hanya satu port? pada Kesalahan Server.

Martin Prikryl
sumber
Nomor port yang digunakan di sisi server juga bisa 20 kan? Dalam setiap jawaban, nomor port di sisi server adalah selain 20
Zephyr
Jawaban saya menjelaskan mengapa nomor port harus unik untuk setiap koneksi / transfer. Jadi tidak bisa diperbaiki sampai 20.
Martin Prikryl
Ya itu tidak bisa diperbaiki tetapi salah satunya bisa 20 kan?
Zephyr
1
Ya, tetapi semua port lain harus di atas 1024. Dan dari sudut pandang praktis, kisaran port yang berdekatan lebih baik. Sebagian besar firewall / NAT mendukung aturan berbasis jangkauan. Anda tidak ingin menambahkan aturan khusus untuk port terisolasi 20 - Juga sebagian besar server FTP hanya mendukung kisaran port yang berdekatan.
Martin Prikryl
1
@ Zac67 tidak, klien akan membuka koneksi baru (selain dari koneksi kontrol) untuk mengambil file dalam mode pasif, sehingga server tidak dapat menggunakan nomor port sumber (klien) untuk membedakan antara koneksi klien. Selain itu, NAT sering akan memotong-motong port sumber klien (dan / atau alamat IP) membuat pendekatan itu tidak dapat digunakan dalam praktiknya.
jjmontes
4

Biasanya, server tidak mengirim port acak tetapi port gratis dari rentang / kolam yang ditentukan (dengan instalasi) - untuk klien ini terlihat acak. Port ini perlu diteruskan ke firewall yang membutuhkan pendefinisian jangkauan.

Sayangnya, FTP itu kuno. Saya kira, server kuno tidak dapat membedakan beberapa sesi data klien kecuali dengan port. Secara umum, lebih baik beralih ke protokol yang lebih mutakhir di mana semuanya tersusun rapi dalam satu sesi soket.

Zac67
sumber
Jadi bisa jadi 20 juga kan? Di setiap situs web, nomor port server untuk data adalah selain 20.
Zephyr
20 adalah port keluar dari server untuk FTP aktif (yang tidak banyak digunakan lagi).
Zac67
Bukan karena server kuno mengalami masalah, itu adalah bahwa perancang protokol masih mencoba mencari cara terbaik untuk melakukan hal-hal yang lebih rumit daripada respons permintaan primitif.
Markus