ทุกคนสามารถอธิบายความแตกต่างระหว่างโหมด FTP แฝง (PASV) และโหมดขยายเรื่อย ๆ FTP (EPSV) ได้หรือไม่?
ทุกคนสามารถอธิบายความแตกต่างระหว่างโหมด FTP แฝง (PASV) และโหมดขยายเรื่อย ๆ FTP (EPSV) ได้หรือไม่?
คำตอบ:
ข้อแตกต่างเพียงอย่างเดียวคือ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 นั้นแตกต่างกันเพียงอย่างเดียว
EPSV
ตอบสนองไม่รวมที่อยู่ IP ( PASV
การตอบสนองอะไร) นี่คือเพื่อหลีกเลี่ยงปัญหาที่พบบ่อยเมื่อเซิร์ฟเวอร์ FTP ที่อยู่ด้านหลัง NAT ไม่ทราบว่าเป็นที่อยู่ IP ภายนอกและสร้างความสับสนให้กับไคลเอนต์ FTP โดยส่งที่อยู่ภายใน
ความแตกต่างระหว่าง active และ passive ถูกตอบแล้ว Extrant passive (EPSV) เป็นเพียง passive ด้วย IPv4 และ IPv6 เนื่องจากไวยากรณ์ของการตอบสนองต่อ PASV นั้นเฉพาะกับ IPv4 และดังนั้นจึงจำเป็นต้องมีคำสั่งใหม่สำหรับ IPv6 เช่นเดียวกันกับ EPTR vs. PORT ในโหมดใช้งาน มีลักษณะการทำงานที่แตกต่างกันเล็กน้อยกับ EPRT และ EPSV โดยที่พวกเขาสามารถมีได้เฉพาะพอร์ตเท่านั้นไม่ใช่ IP และพอร์ตเช่น PORT และ PASV ดังนั้นการถ่ายโอนข้อมูลสามารถทำได้ระหว่างระบบที่มีการเชื่อมต่อการควบคุม ด้วย PORT และ PASV เป็นไปได้ที่จะสร้างการเชื่อมต่อข้อมูลระหว่างระบบอื่น ๆ (แม้ว่าในปัจจุบันถือว่าเป็นการออกแบบที่ไม่ดีและมีความเสี่ยงด้านความปลอดภัย)