Trong FTP, sự khác biệt giữa chế độ thụ động thụ động và mở rộng là gì?


17

Bất cứ ai cũng có thể giải thích một cách đơn giản sự khác biệt giữa FTP chế độ thụ động (PASV) và FTP chế độ thụ động mở rộng (EPSV)?


2
@DavidPostill Xin lỗi, tôi thực sự chỉ quan tâm đến PASV so với EPSV.
CGCampbell

Câu trả lời:


20

Sự khác biệt duy nhất là PORT/PASVgiới hạn ở IPv4 , trong khi EPRT/EPSVhoạt động với bất kỳ giao thức mạng nào (mặc dù chỉ sử dụng IPv6 trong thực tế).

Các lệnh tiêu chuẩn PORT(hoạt động) và PASV(thụ động) trong địa chỉ trao đổi giao thức điều khiển FTP và thông tin cổng dưới dạng sáu số thập phân 1 byte , từ đó đầu kia phải tạo lại địa chỉ IP bốn byte và số cổng TCP hai byte.

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

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

Nhưng sau đó các giao thức khác bắt đầu xuất hiện. IPv4 sắp được thay thế bằng "IPng", có khá nhiều đề xuất thay thế cạnh tranh (OSI CLNP, TUBA, SIP, SIPP, CATNIP - tại nhiều thời điểm trong lịch sử), một số có kích thước địa chỉ máy chủ ngắn hơn, dài hơn, thậm chí biến đổi , cho đến khi IPv6 với địa chỉ 16 byte cuối cùng đã được xác định.

Chỉ cần gửi nhiều byte sẽ không hoạt động - máy chủ và máy khách không thể biết giao thức phù hợp hoàn toàn dựa trên độ dài địa chỉ. (Ví dụ: nếu bạn có một giao thức có địa chỉ 16 byte + cổng 4 byte, giao thức khác có địa chỉ 12 byte + cổng 12 byte thì sao?)

Bên cạnh đó - mặc dù điều này ít quan trọng hơn 20 năm trước - những ngày này có hàng triệu thiết bị NAT trên Internet, kiểm tra và quản lý các kết nối điều khiển FTP để máy chủ "bên ngoài" chỉ nhìn thấy địa chỉ IPv4 toàn cầu ngay cả khi "bên trong" máy chủ đã gửi một RFC1918 một địa phương. Ngay cả khi không có NAT, tường lửa trạng thái thường xem các lệnh điều khiển để tự động cho phép kết nối dữ liệu mà không cần quy tắc thủ công.

Điều này về cơ bản có nghĩa là chỉ cần gửi nhiều số hơn với PORThoặcPASV được đảm bảo để phá vỡ cho nhiều người. Có lẽ một số tường lửa sẽ lặng lẽ giải thích sai một số byte địa chỉ là cổng và lặng lẽ loại bỏ phần còn lại; những người khác có thể mất kết nối, hoặc chỉ bị sập.

Để tránh các vấn đề khác nhau như trên, các lệnh mới phải được giới thiệu để hỗ trợ đa giao thức trong FTP.

Năm 1993, RFC 1639 (ban đầu là RFC 1545 ) đã giới thiệu "địa chỉ dài" LPRTLPSV các lệnh, giống như PORT& PASVnhưng với độ dài địa chỉ thay đổi ; chúng bao gồm cả định danh loại giao thức. (Mặc dù vậy, nó không thay đổi cú pháp - Địa chỉ IPv6: cổng đơn giản sẽ được gửi dưới dạng 21 số chứ không phải sáu.)

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

Tuy nhiên, điều đó vẫn không khắc phục được một số vấn đề, chẳng hạn như yêu cầu máy chủ sử dụng giao thức khác với kết nối điều khiển. RFC cũng nhanh chóng trở nên lỗi thời; khi IPv6 xuất hiện chỉ một năm sau đó, nó không thể được sử dụng với LPRT vì không có định danh giao thức LPRT được chỉ định cho nó (chỉ dành cho các đề xuất ban đầu khác nhau).

Để khắc phục điều này, RFC 2428 vào năm 1998 đã thêm EPRTEPSV, còn gọi là "cổng mở rộng" và "thụ động mở rộng" , cũng có một phương pháp để đàm phán một giao thức mà cả hai kết thúc hỗ trợ. Các lệnh "mở rộng" cũng gửi địa chỉ ở dạng người có thể đọc được - đối với IPv6, có nghĩa là sử dụng ký hiệu hex & dấu hai chấm, thay vì một chuỗi các số thập phân riêng biệt.

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

EPRT |1|132.235.1.2|6275|

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

Tóm lại, hỗ trợ IPv6 là sự khác biệt duy nhất.


Ồ, tất cả các trang web tôi đọc và nó đã không nhấp cho đến trang này. Cảm ơn vì điều đó. Tôi sẽ chấp nhận nó (có thể) trong một hoặc hai giờ, muốn xem liệu có ai khác làm điều đó không. Ngoài ra, lý do tôi yêu cầu Active cũng là do việc gắn thẻ hoạt động tốt với google, câu hỏi / câu trả lời này sẽ được tìm thấy trong các tìm kiếm. Nếu không ai thêm vào câu trả lời (làm cho nó hoàn chỉnh hơn cho câu trả lời của google) tôi sẽ chỉnh sửa câu hỏi và nội dung ban đầu của mình để phản ánh nội dung câu trả lời của bạn, về cơ bản phù hợp với câu hỏi của tôi với câu trả lời của bạn.
CGCampbell

3
Một sự khác biệt nữa là EPSVphản hồi không bao gồm địa chỉ IP ( PASVphản hồi nào). Điều này là để tránh sự cố phổ biến khi máy chủ FTP nằm phía sau NAT không biết địa chỉ IP bên ngoài và gây nhầm lẫn cho máy khách FTP bằng cách gửi địa chỉ nội bộ của nó.
Martin Prikryl

Để thêm vào những gì @MartinPrikryl nói, một lý do khác là khi sử dụng FTP-over-TLS, tường lửa / NAT không thể chặn địa chỉ IP trong lệnh PASV để viết lại nó (ít nhất là không có MITMing kết nối điều khiển.) Mọi người trên thế giới Unix thường sử dụng SFTP thay vì FTP over-TLS, FTP over-TLS thường được sử dụng với các máy tính lớn của IBM, vì FTP có hỗ trợ cho các tệp hướng bản ghi (STRU R, MODE B), trong khi SFTP chỉ hỗ trợ định hướng theo luồng tập tin
Simon Kissane

1

Sự khác biệt giữa chủ động và thụ động đã được trả lời. Bị động mở rộng (EPSV) chỉ là thụ động với IPv4 và IPv6, vì cú pháp của phản hồi đối với PASV là dành riêng cho IPv4 và do đó cần một lệnh mới cho IPv6. Tương tự với EPTR so với PORT ở chế độ hoạt động. Có một hành vi hơi khác với EPRT và EPSV ở chỗ chúng chỉ có thể chứa cổng, không phải IP và cổng như PORT và PASV. Do đó, việc truyền dữ liệu chỉ có thể được thực hiện giữa các hệ thống có kết nối điều khiển. Với PORT và PASV, có thể tạo kết nối dữ liệu giữa các hệ thống khác (mặc dù ngày nay được coi là thiết kế xấu và rủi ro bảo mật).


2
Đây là loại câu trả lời tôi không muốn. Nó cho tôi biết chính xác nhiều như tôi có thể tìm thấy ở nơi khác, đó là EPSV được tạo cho IPv6, nhưng không giải thích lý do tại sao. (tức là tôi không chấp nhận lý do của bạn như một lời giải thích đủ tốt) Tôi đang nói với bạn điều này với hy vọng bạn sẽ có thể làm cho câu trả lời của bạn tốt hơn nữa.
CGCampbell

Đã chỉnh sửa phản hồi để làm rõ, rằng phản hồi cho lệnh PASV không hỗ trợ IPv6 và do đó cần một lệnh mới.
Steffen Ullrich
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.