Tôi hiểu rằng proxy SOCKS chỉ thiết lập kết nối ở cấp TCP trong khi proxy HTTP diễn giải lưu lượng ở cấp HTTP. Do đó, một SOCKS proxy có thể làm việc cho bất kỳ loại giao thức nào trong khi HTTP Proxy chỉ có thể xử lý lưu lượng HTTP. Nhưng tại sao một Proxy HTTP như Squid có thể hỗ trợ giao thức như IRC, FTP? Khi chúng tôi sử dụng một Proxy HTTP cho một kết nối IRC hoặc FTP, điều gì đặc biệt xảy ra? Có siêu dữ liệu nào được thêm vào gói khi nó được gửi tới proxy qua giao thức HTTP không?Tại sao các proxy HTTP có thể hỗ trợ các giao thức như IRC và FTP?
Trả lời
HTTP proxy là khả năng hỗ trợ các giao thức cấp cao khác với HTTP nếu nó hỗ trợ phương pháp CONNECT, mà chủ yếu sử dụng cho các kết nối HTTPS, đây là mô tả từ wiki Squid:
Phương pháp CONNECT là một cách để đường hầm bất kỳ loại kết nối nào thông qua proxy HTTP. Theo mặc định, proxy thiết lập kết nối TCP đến máy chủ được chỉ định, phản hồi với phản hồi HTTP 200 (Kết nối được thiết lập) và sau đó chuyển gói dữ liệu qua lại giữa máy khách và máy chủ mà không hiểu hoặc giải thích lưu lượng truy cập được điều chỉnh
Nếu phần mềm máy khách hỗ trợ kết nối thông qua proxy 'HTTP CONNECT' (HTTPS) có thể là bất kỳ giao thức mức cao nào có thể hoạt động với proxy như vậy (VPN, SSH, SQL, điều khiển phiên bản, v.v.)
những người khác đã đề cập, phương pháp "HTTP CONNECT" cho phép bạn thiết lập bất kỳ kết nối dựa trên TCP nào thông qua proxy. Chức năng này chủ yếu cần thiết cho kết nối HTTPS, vì đối với kết nối HTTPS, toàn bộ yêu cầu HTTP được mã hóa (vì vậy nó xuất hiện với proxy như một kết nối TCP "vô nghĩa"). Nói cách khác, một phiên HTTPS qua proxy, hoặc phiên SSH/FTPS qua proxy, cả hai sẽ xuất hiện dưới dạng "phiên được mã hóa" cho proxy và sẽ không thể phân biệt chúng, vì vậy nó phải cho phép tất cả hoặc không ai trong số họ.
Trong hoạt động bình thường, proxy HTTP nhận được yêu cầu HTTP và "đủ thông minh" để hiểu yêu cầu có thể thực hiện những việc ở mức cao với nó (ví dụ: tìm bộ nhớ cache của nó để xem nó có thể đáp ứng mà không chuyển đến máy chủ đích hoặc tư vấn danh sách trắng/danh sách đen để xem liệu URL này có được phép hay không, v.v.). Trong chế độ "CONNECT", không có điều nào xảy ra. Proxy thiết lập kết nối TCP tới máy chủ đích và chỉ chuyển tiếp tất cả lưu lượng truy cập từ máy khách đến máy chủ đích và tất cả lưu lượng truy cập từ máy chủ đích đến máy khách. Điều đó có nghĩa là bất kỳ giao thức TCP nào cũng có thể hoạt động (HTTPS, SSH, FTP - ngay cả HTTP đơn giản)
- 1. Proxy HTTP sử dụng giao thức HTTP như thế nào? một RFC proxy?
- 2. IIS Express có thể hỗ trợ proxy ngược không?
- 3. Phản hồi HTTP cho các phương thức HTTP không được hỗ trợ với Node.js?
- 4. Tại sao việc triển khai ứng dụng khách websocket hiện tại không hỗ trợ proxy?
- 5. Tại sao mảng hỗ trợ IList?
- 6. Giao thức HTTP không được hỗ trợ trong WebRequest theo mono
- 7. Không có trình kết nối khách hàng nào hỗ trợ giao thức được yêu cầu: 'HTTP'
- 8. Tại sao không hỗ trợ một đối tượng với giao diện như một tham số?
- 9. Tại sao F # không hỗ trợ các lớp lồng nhau?
- 10. Giao thức uwsgi có nhanh hơn giao thức http không?
- 11. Phương thức HTTP GET không được URL này hỗ trợ
- 12. Tải lên các thách thức và HTTP 401. Tại sao nó không hoạt động liên tục?
- 13. S3 có hỗ trợ HTTP pipelining không?
- 14. C có hỗ trợ các biểu thức hàm không?
- 15. Devexpress GridControl có hỗ trợ các hình thức giành chiến thắng hỗ trợ phân trang không?
- 16. Có urllib2 trong Python 2.6.1 hỗ trợ proxy qua https
- 17. Windows Azure có hỗ trợ giao thức SPDY không?
- 18. Tại sao WCF tạo ra các phương thức giao thức hợp đồng gói proxy với các phương thức mới với các chữ ký khác nhau?
- 19. Google App Engine có hỗ trợ ftp không?
- 20. SQLite có hỗ trợ các biểu thức bảng chung không?
- 21. Tại sao các giao thức Objective-c áp dụng các giao thức khác?
- 22. Các giao thức phổ biến khác ngoài HTTP?
- 23. Tại sao HTML 5 vẫn có hỗ trợ cho các phần tử Trình diễn?
- 24. Giao thức nào (FTP hoặc HTTP) tốt hơn để tải xuống/tải lên các tệp nhỏ hoặc lớn?
- 25. Python: Tại sao so sánh giữa các danh sách và bộ tuple không được hỗ trợ?
- 26. Tại sao Arguments dài hỗ trợ Array.Copy
- 27. Tại sao các thuộc tính tự động C# không hỗ trợ các giá trị mặc định như VB 2010?
- 28. Tại sao Magento có các phương thức _construct và __construct?
- 29. Tại sao Java không hỗ trợ cưỡng chế và autoboxing?
- 30. Tại sao các trình duyệt không hỗ trợ các yêu cầu PUT và DELETE và khi nào thì chúng?
Tôi đọc câu trả lời nhưng vẫn không rõ ràng ..Có thể ai đó giải thích điều này một chút đơn giản hơn .. cảm ơn! – eRaisedToX
Về cơ bản http proxy đợi phía khách hàng gửi yêu cầu http với phương thức kết nối, để cho phép http proxy chấp nhận mật khẩu đăng nhập, proxy http có thể phản hồi 200 hoặc phản hồi những thứ khác. Vì vậy, http proxy có thể phản hồi đúng cách để thông báo cho khách hàng rằng nó có thể trở thành một loại proxy khác. – for1096