Dalam FTP, apa perbedaan antara mode pasif pasif dan extended?


17

Adakah yang bisa menjelaskan perbedaan antara mode Pasif FTP (PASV) dan Extended Passive mode FTP (EPSV)?


2
@DavidPostill Maaf, saya benar-benar hanya tertarik pada PASV vs EPSV.
CGCampbell

Jawaban:


20

Satu-satunya perbedaan adalah yang PORT/PASVterbatas pada IPv4 , sementara EPRT/EPSVbekerja dengan protokol jaringan apa pun (meskipun hanya IPv6 yang digunakan dalam praktiknya).

Perintah standar PORT(aktif) dan PASV(pasif) dalam protokol FTP bertukar alamat & informasi port sebagai enam desimal 1-byte , di mana ujung lainnya harus merekonstruksi alamat IP empat-byte dan nomor port TCP dua-byte.

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

Tetapi kemudian protokol lain mulai muncul. IPv4 akan segera diganti dengan "IPng", yang memiliki beberapa proposal pengganti yang bersaing (OSI CLNP, TUBA, SIP, SIPP, CATNIP - pada berbagai waktu dalam sejarah), beberapa dengan ukuran alamat host yang lebih pendek, lebih panjang, bahkan variabel , sampai IPv6 dengan alamat 16 byte akhirnya ditetapkan.

Hanya mengirim lebih banyak byte tidak akan berhasil - server dan klien tidak dapat diharapkan untuk mengetahui protokol yang benar berdasarkan murni pada panjang alamat. (Misalnya, bagaimana jika Anda memiliki satu protokol dengan alamat 16 byte + port 4 byte, yang lain dengan alamat 12 byte + port 12 byte?)

Selain itu - meskipun ini kurang penting 20 tahun yang lalu - hari ini ada jutaan perangkat NAT di Internet, yang memeriksa dan memotong koneksi kontrol FTP sehingga host "luar" hanya akan melihat alamat IPv4 global bahkan jika "dalam" Tuan rumah mengirim RFC1918 lokal. Bahkan tanpa NAT, firewall stateful sering menonton perintah kontrol untuk secara otomatis memungkinkan koneksi data tanpa aturan manual.

Ini pada dasarnya berarti bahwa hanya mengirim lebih banyak nomor dengan PORTatau PASVdijamin untuk banyak orang. Mungkin beberapa firewall diam-diam akan salah mengartikan beberapa byte alamat sebagai port dan diam-diam membuang sisanya; orang lain mungkin menjatuhkan koneksi, atau hanya crash.

Untuk menghindari berbagai masalah seperti di atas, perintah baru harus diperkenalkan untuk dukungan multi-protokol di FTP.

Pada tahun 1993, RFC 1639 (awalnya RFC 1545 ) memperkenalkan "alamat panjang" LPRTdanLPSV perintah, yang seperti PORT& PASVtetapi dengan panjang alamat variabel ; mereka termasuk pengenal tipe protokol juga. (Namun itu tidak mengubah sintaks - alamat IPv6: port hanya akan dikirim sebagai 21 angka daripada enam.)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

Namun, itu masih belum memperbaiki beberapa masalah, seperti meminta server untuk menggunakan protokol yang berbeda daripada untuk koneksi kontrol. RFC juga dengan cepat menjadi ketinggalan zaman; ketika IPv6 keluar hanya setahun kemudian, itu tidak dapat digunakan dengan LPRT karena tidak ada pengidentifikasi protokol LPRT ditugaskan untuk itu (hanya untuk berbagai proposal awal).

Untuk memperbaikinya, RFC 2428 pada tahun 1998 menambahkan EPRTdan EPSV, alias "extended port" dan "extended pasif" , yang juga memiliki metode untuk menegosiasikan protokol yang keduanya mendukung. Perintah "extended" juga mengirim alamat dalam bentuk yang dapat dibaca manusia - untuk IPv6, yang berarti menggunakan notasi hex & titik dua, daripada serangkaian angka desimal terpisah.

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

Kesimpulannya, dukungan IPv6 adalah satu-satunya perbedaan.


Wow, semua situs yang saya baca dan tidak klik sampai yang ini. Terima kasih untuk itu. Saya akan menerimanya (mungkin) dalam satu atau dua jam, ingin melihat apakah ada orang lain yang berbeda. Juga, alasan saya meminta Active juga adalah karena penandaan bekerja dengan baik dengan google, pertanyaan / jawaban ini akan ditemukan dalam pencarian. Jika tidak ada yang menambahkan jawaban (membuatnya lebih lengkap untuk jawaban google) Saya akan mengedit pertanyaan dan isi asli saya untuk mencerminkan isi jawaban Anda, pada dasarnya menyesuaikan pertanyaan saya dengan jawaban Anda.
CGCampbell

3
Perbedaan lainnya adalah bahwa EPSVrespons tidak menyertakan alamat IP (apa PASVtanggapannya). Ini untuk menghindari masalah umum ketika server FTP yang terletak di belakang NAT tidak mengetahui alamat IP eksternal dan membingungkan klien FTP dengan mengirimkannya alamat internal.
Martin Prikryl

Untuk menambah apa yang dikatakan @MartinPrikryl, alasan lain adalah ketika menggunakan FTP-over-TLS, firewall / NAT tidak dapat memotong alamat IP dalam perintah PASV untuk menulis ulang (setidaknya tanpa MITMing koneksi kontrol.) Sementara di Orang-orang dunia Unix umumnya menggunakan SFTP alih-alih FTP-over-TLS, FTP-over-TLS umumnya digunakan dengan mainframe IBM, karena FTP memiliki dukungan untuk file yang berorientasi rekaman (STRU R, MODE B), sementara SFTP hanya mendukung stream-oriented. file
Simon Kissane

1

Perbedaan antara aktif dan pasif sudah dijawab. Extensive Passive (EPSV) hanya pasif dengan IPv4 dan IPv6, karena sintaksis respons terhadap PASV khusus untuk IPv4 dan dengan demikian diperlukan perintah baru untuk IPv6. Sama dengan EPTR vs. PORT dalam mode aktif. Ada perilaku yang sedikit berbeda dengan EPRT dan EPSV di mana mereka hanya dapat berisi port, bukan IP dan port seperti PORT dan PASV lakukan. Dengan demikian transfer data hanya dapat dilakukan antara sistem yang memiliki koneksi kontrol. Dengan PORT dan PASV dimungkinkan untuk membuat koneksi data antara sistem lain (meskipun saat ini dianggap desain yang buruk dan risiko keamanan).


2
Ini adalah jawaban yang tidak saya inginkan. Ini memberi tahu saya persis sebanyak yang saya bisa temukan di tempat lain, yaitu EPSV dibuat untuk IPv6, tetapi tidak menjelaskan mengapa. (yaitu saya tidak menerima alasan Anda sebagai penjelasan yang cukup baik) Saya mengatakan ini kepada Anda dengan harapan Anda mungkin akan membuat jawaban Anda lebih baik.
CGCampbell

Respons yang diedit untuk memperjelas, bahwa respons terhadap perintah PASV untuk tidak mendukung IPv6 dan dengan demikian diperlukan perintah baru.
Steffen Ullrich
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.