2012-08-19 36 views
32

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?

+4

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

+0

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

Trả lời

15

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.)

5

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)

Các vấn đề liên quan