ใน FTP อะไรคือความแตกต่างระหว่างโหมดพาสซีฟและพาสซีฟแบบขยาย?


17

ทุกคนสามารถอธิบายความแตกต่างระหว่างโหมด FTP แฝง (PASV) และโหมดขยายเรื่อย ๆ FTP (EPSV) ได้หรือไม่?


2
@DavidPostill ขออภัยฉันสนใจ PASV และ EPSV เท่านั้น
CGCampbell

คำตอบ:


20

ข้อแตกต่างเพียงอย่างเดียวคือPORT/PASVถูก จำกัด ที่ IPv4ในขณะที่EPRT/EPSVทำงานกับโปรโตคอลเครือข่ายใด ๆ (แม้ว่าจะใช้เฉพาะ IPv6 ในทางปฏิบัติ)

คำสั่งมาตรฐานPORT(แอ็คทีฟ) และPASV(พาสซีฟ)ในข้อมูลการแลกเปลี่ยนโปรโตคอลการควบคุมที่อยู่ & พอร์ตของ FTP เป็นทศนิยม 1 ไบต์หกตัวซึ่งปลายอีกด้านหนึ่งต้องสร้างที่อยู่ IP สี่ไบต์และหมายเลขพอร์ต TCP สองไบต์

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

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

แต่แล้วโปรโตคอลอื่น ๆ ก็เริ่มปรากฏขึ้น IPv4 กำลังจะถูกแทนที่ด้วย "IPng" ซึ่งมีข้อเสนอการแทนที่การแข่งขันค่อนข้างน้อย (OSI CLNP, TUBA, SIP, SIPP, CATNIP - ในช่วงเวลาต่าง ๆ ในประวัติศาสตร์) บางอันมีขนาดที่สั้นกว่ายาวกว่าขนาดโฮสต์ของตัวแปรจนกว่า IPv6 ที่มี 16 ไบต์แอดเดรสจะถูกกำหนดในที่สุด

เพียงแค่การส่งไบต์เพิ่มขึ้นก็ไม่สามารถใช้งานได้ - คาดว่าเซิร์ฟเวอร์และไคลเอนต์จะไม่ทราบโปรโตคอลที่ถูกต้องตามความยาวที่อยู่ (ตัวอย่างเช่นถ้าคุณมีหนึ่งโปรโตคอลที่มีที่อยู่ 16 ไบต์ + พอร์ต 4 ไบต์อีกตัวหนึ่งคือที่อยู่ 12 ไบต์และพอร์ต 12 ไบต์)

นอกจากนี้ - แม้ว่าสิ่งนี้จะมีความสำคัญน้อยกว่าเมื่อ 20 ปีก่อน แต่ในปัจจุบันมีอุปกรณ์ NATหลายล้านรายการบนอินเทอร์เน็ตที่ตรวจสอบและคลี่คลายการเชื่อมต่อการควบคุม FTP เพื่อให้โฮสต์ "นอก" จะเห็นที่อยู่ IPv4 ทั่วโลกเท่านั้น โฮสต์ส่ง RFC1918 ภายในเครื่องหนึ่ง แม้จะไม่มี NAT แต่ไฟร์วอล stateful มักจะเฝ้าดูคำสั่งควบคุมเพื่ออนุญาตการเชื่อมต่อข้อมูลโดยอัตโนมัติโดยไม่มีกฎแบบแมนนวล

โดยทั่วไปหมายความว่าเพียงแค่ส่งตัวเลขด้วยPORTหรือPASVรับประกันว่าจะทำลายสำหรับหลาย ๆ คน บางทีไฟร์วอลล์บางตัวอาจตีความผิดที่อยู่ไบต์บางส่วนอย่างเงียบ ๆ เนื่องจากพอร์ตและทิ้งส่วนที่เหลืออย่างเงียบ ๆ คนอื่นอาจปล่อยการเชื่อมต่อหรือเพียงแค่ผิดพลาด

เพื่อหลีกเลี่ยงปัญหาต่าง ๆ ดังกล่าวข้างต้นจะต้องมีคำสั่งใหม่สำหรับการรองรับหลายโปรโตคอลใน FTP

ในปี 1993 RFC 1639 (เดิมทีRFC 1545 ) แนะนำ"ที่อยู่ยาว" LPRTและLPSVคำสั่งซึ่งเป็นเหมือนPORT& PASVแต่มีความยาวที่อยู่ตัวแปร ; พวกเขารวมตัวระบุประเภทโปรโตคอลเช่นกัน (มันไม่ได้เปลี่ยนไวยากรณ์แม้ว่า - ที่อยู่ IPv6: พอร์ตจะถูกส่งเป็น 21 หมายเลขแทนที่จะเป็นหก)

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

อย่างไรก็ตามยังไม่สามารถแก้ไขปัญหาบางอย่างได้เช่นขอให้เซิร์ฟเวอร์ใช้โปรโตคอลที่แตกต่างจากการเชื่อมต่อควบคุม RFC ก็ล้าสมัยเช่นกัน; เมื่อ IPv6 ออกมาในอีกหนึ่งปีต่อมามันไม่สามารถใช้กับ LPRT ได้เพราะไม่มีตัวระบุโปรโตคอล LPRT ให้มัน (สำหรับข้อเสนอก่อนหน้านี้เท่านั้น)

ในการแก้ไขปัญหานี้RFC 2428ในปี 1998 ได้เพิ่มEPRTและEPSVหรือที่เรียกว่า "พอร์ตขยาย" และ "Extended passive"ซึ่งมีวิธีการเจรจาโปรโตคอลที่สิ้นสุดการสนับสนุน คำสั่ง "ส่วนขยาย" ยังส่งที่อยู่ในรูปแบบที่มนุษย์สามารถอ่านได้ - สำหรับ IPv6 ซึ่งหมายถึงการใช้รูปแบบเลขฐานสิบหกและเครื่องหมายจุดคู่แทนชุดตัวเลขทศนิยมแยกต่างหาก

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

EPRT |1|132.235.1.2|6275|

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

โดยสรุปการสนับสนุน IPv6 นั้นแตกต่างกันเพียงอย่างเดียว


ว้าวเว็บไซต์ทั้งหมดที่ฉันอ่านและมันไม่ได้คลิกจนกว่าจะถึงตอนนี้ ขอบคุณสำหรับสิ่งนั้น. ฉันจะยอมรับมัน (อาจ) ในหนึ่งหรือสองชั่วโมงต้องการดูว่ามีใครบ้างที่แตกต่างกัน นอกจากนี้สาเหตุที่ฉันถามสำหรับ Active ก็เช่นกันเนื่องจากการติดแท็กทำงานได้ดีกับ google คำถาม / คำตอบนี้จะพบได้ในการค้นหา หากไม่มีใครเพิ่มคำตอบ (ทำให้สมบูรณ์ยิ่งขึ้นสำหรับคำตอบของ google) ฉันจะแก้ไขคำถามและเนื้อหาต้นฉบับของฉันเพื่อสะท้อนเนื้อหาของคำตอบของคุณโดยปรับคำถามของฉันให้สอดคล้องกับคำตอบของคุณ
CGCampbell

3
ความแตกต่างก็คือการEPSVตอบสนองไม่รวมที่อยู่ IP ( PASVการตอบสนองอะไร) นี่คือเพื่อหลีกเลี่ยงปัญหาที่พบบ่อยเมื่อเซิร์ฟเวอร์ FTP ที่อยู่ด้านหลัง NAT ไม่ทราบว่าเป็นที่อยู่ IP ภายนอกและสร้างความสับสนให้กับไคลเอนต์ FTP โดยส่งที่อยู่ภายใน
Martin Prikryl

หากต้องการเพิ่มสิ่งที่ @MartinPrikryl พูดด้วยเหตุผลอื่นคือเมื่อใช้ FTP-TL-TLS ไฟร์วอลล์ / NAT ไม่สามารถดักจับที่อยู่ IP ในคำสั่ง PASV เพื่อเขียนใหม่ได้ (อย่างน้อยก็ไม่มี MITMing ควบคุมการเชื่อมต่อ) ในขณะที่อยู่ใน คนทั่วโลกที่ใช้ระบบยูนิกซ์ใช้ SFTP แทน FTP-over-TLS, FTP-over-TLS เป็นที่นิยมใช้กับเมนเฟรมของ IBM เนื่องจาก FTP มีการรองรับไฟล์ที่เน้นการบันทึก (STRU R, MODE B) ในขณะที่ SFTP รองรับเฉพาะสตรีม ไฟล์
Simon Kissane

1

ความแตกต่างระหว่าง active และ passive ถูกตอบแล้ว Extrant passive (EPSV) เป็นเพียง passive ด้วย IPv4 และ IPv6 เนื่องจากไวยากรณ์ของการตอบสนองต่อ PASV นั้นเฉพาะกับ IPv4 และดังนั้นจึงจำเป็นต้องมีคำสั่งใหม่สำหรับ IPv6 เช่นเดียวกันกับ EPTR vs. PORT ในโหมดใช้งาน มีลักษณะการทำงานที่แตกต่างกันเล็กน้อยกับ EPRT และ EPSV โดยที่พวกเขาสามารถมีได้เฉพาะพอร์ตเท่านั้นไม่ใช่ IP และพอร์ตเช่น PORT และ PASV ดังนั้นการถ่ายโอนข้อมูลสามารถทำได้ระหว่างระบบที่มีการเชื่อมต่อการควบคุม ด้วย PORT และ PASV เป็นไปได้ที่จะสร้างการเชื่อมต่อข้อมูลระหว่างระบบอื่น ๆ (แม้ว่าในปัจจุบันถือว่าเป็นการออกแบบที่ไม่ดีและมีความเสี่ยงด้านความปลอดภัย)


2
นี่เป็นคำตอบที่ฉันไม่ต้องการ มันบอกฉันมากที่สุดเท่าที่จะหาได้จากที่อื่นนั่นคือ EPSV นั้นถูกสร้างขึ้นสำหรับ IPv6 แต่ไม่ได้อธิบายว่าทำไม (เช่นฉันไม่ยอมรับเหตุผลของคุณเป็นคำอธิบายที่ดีพอ) ฉันกำลังบอกเรื่องนี้กับคุณด้วยความหวังว่าคุณจะทำให้คำตอบของคุณดียิ่งขึ้น
CGCampbell

แก้ไขการตอบสนองเพื่อให้ชัดเจนว่าการตอบสนองต่อคำสั่ง PASV ไม่สนับสนุน IPv6 และจำเป็นต้องมีคำสั่งใหม่
Steffen Ullrich
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.