Blog của Vietsocks.com

SOCKS5 hay HTTPs

So sánh HTTP và SOCKS nên dùng loại Proxy nào?

Proxy thông thường có hai dạng phổ biến là HTTP, HTTPS và SOCKS, SOCKS5 Proxy, vậy có gì khác biệt giữa HTTP và SOCKS? Nên dùng loại Proxy nào, hãy cùng Vietsocks phân tích dưới đây nhé.

Như chúng ta đã biết, HTTP và SOCKS5 đều là một dạng proxy, do vậy trước khi tìm hiểu sự khác biệt giữa hai loại này, thì hãy cùng xem, Proxy là gì trước nhé.

Proxy là gì?

Proxy là một thiết bị trung gian giữa người dùng cuối và trang web họ truy cập, thiết bị này còn gọi là máy chủ proxy. Các máy chủ proxy cung cấp các chức năng, bảo mật và riêng tư khác nhau phụ thuộc vào nhu cầu của bạn hoặc chính sách của các nhà cung cấp.

Qua nhiều quá trình cải tiến, các máy chủ proxy này được nâng cấp qua nhiều phiên bản như HTTP, HTTPS, SOCK4 và SOCKS5. Về cơ bản, chúng chỉ được cải tiến để phù hợp với sự thay đổi về dữ liệu và khả năng xử lý nhanh hay chậm, đóng gói dữ liệu kiểu này hay kiểu khác. Ngoài ra, chúng không có sự khác nhau nhiều. Để hiểu rõ hơn, cần phân tích sâu về kỹ thuật một chút như sau.

Cách thức HTTP và SOCKS hoạt động

Đây là phần phân tích các yếu tố kỹ thuật, nếu bạn không phải là người am hiểu về môi trường mạng, có thể sẽ cảm thấy hơi khó hiểu. Nhưng hãy kiên nhẫn, mỗi một kiến thức đều cho ta những giá trị nhất định.

Cách thức hoạt động của HTTP Proxy

Như đã nói ở trên, HTTP Proxy hoặc HTTPS cũng là một Proxy nên nó là sẽ đóng vai tròn làm điểm trung gian để kết nối giữa người dùng và trang web đích khi truy cập. Khi được trọng dụng, công việc của một HTTP proxy thường xảy ra ở ba dạng sau:

  1. Chuyển thẳng yêu cầu của người dùng đến trang web.
  2. Hoặc là sẽ sửa lại nội dung yêu người dùng trước khi chuyển đến server (đóng gói, nén, chuyển đổi …)
  3. Hoặc là sẽ thay trang web trả lời lại người dùng luôn (trong trường hợp bị từ chối truy cập, trang web gửi tin đến người dùng …)

Ở phiên bản HTTP/1.1 thì proxy được định nghĩa như sau: proxy mà không thay đổi nội dung request hay kết quả phản hồi thì được gọi là Transparent Proxy, còn ngược lại những proxy mà thay đổi nội dung request hay kết quả phản hồi thì được gọi là Non-Transparent Proxy.

Transparent Proxy

Trường hợp mà chúng ta thực hiện request http thông qua Http Transparent Proxy từ client thì bao gồm các bước đơn giản sau:

  1. Máy người dùng sẽ thiết lập kết nối TCP với HTTP Proxy thông qua 3way hand shake
  2. Máy người dùng sẽ chuyển HTTP request tới HTTP Proxy theo hình thức http://example.com/index.html chứ không phải là /index.html .
  3. HTTP Proxy sẽ chuyển request đến server thông qua đường dẫn là /index.html .

Tiếp theo HTTP Proxy sẽ trả lại kết quả phản hồi nhận từ server cho client.

HTTP và SOCKS

Trường hợp sử dụng proxy để thực hiện request HTTPS. Trường hợp này thì message đã được mã hóa nên request https nên HTTP Proxy không thể nhìn thấy nội dung bên trong của message dẫn đến không thể xử lý request từ client được.

Để xử lý việc này thì HTTP/1.1 trở đi sẽ sử dụng CONNECT method. Và CONNECT method sẽ cho phép truyền tải message của 1 protocol khác trên HTTP protocol.

Các bước để thực hiện kết nối từ client đến HTTP Proxy như sau:

  • Client sẽ thiết lập kết nối TCP với HTTP Proxy thông qua 3way hand shake
  • Client sẽ chuyển CONNECT request đến HTTP Proxy
  • HTTP Proxy sẽ thiết lập kết nối TCP với Server thông qua 3way hand shake
  • HTTP Proxy sẽ chuyển response đến Client để thông báo việc chuẩn bị kết nối đã hoàn thành
  • Client sẽ đóng gói TLS/SSL message bằng HTTP và chuyển chúng đến HTTP Proxy
  • HTTP Proxy sẽ chuyển đổi những gói dữ liệu đã được đóng gói bằng HTTP thành TLS/SSL message và chuyển nó đến Server
  • Tiếp theo HTTP Proxy sẽ nhận response từ Server và chuyển ngược lại Client sau khi tiến hành đóng gói bằng HTTP

Như vậy còn SOCKS Proxy thì sao?

Cách thức hoạt động của SOCKS

SOCKS là 1 dạng giao thức – Protocol mà Proxy Server sử dụng để chấp nhận các yêu cầu – Request từ phía client (máy tính gửi đi) trong 1 hệ thống mạng của công ty, doanh nghiệp… mà từ đó được chuyển tiếp – Forward đến Internet.

Về bản chất, SOCKS sử dụng các socket để quản lý và theo dõi từng kết nối. Và SOCKS có thể chia ra làm 2 loại: Client được tích hợp trực tiếp vào các trình duyệt Web, còn phía Server được thêm vào Proxy Server.

Server Sock sẽ xử lý các yêu cầu – Request từ phía client, đằng sau lớp tường lừa của hệ thống mạng doanh nghiệp, công ty, đồng thời có nhiệm vụ cho phép hoặc từ chối các Request, dựa vào điểm tới cuối cùng của các Request đó, hoặc thông tin nhận diện tài khoản của User.

Một khi kết nối và tần suất các Request được thiết lập, các tín hiệu trả về từ phía server sẽ theo các giao thức bình thường và hiển thị trên máy tính của người dùng. Các loại SOCKS protocol thường dùng là SOCKS4, SOCKS4a và SOCKS5.

Sự khác nhau cơ bản giữa HTTP và SOCKS

Nhìn chung, phân tích kỹ thuật thì khá dài dòng và có gì đó mơ hồ. Nhưng sự khác biệt cơ bản, dễ hiểu nhất đó là nằm ở cách đóng gói dự liệu. Hiểu đơn giản như thế này:

Khi một máy chủ proxy (HTTP hoặc SOCKS) nhận được yêu cầu truy cập trang web gửi từ người dùng (người thuê Proxy á ) thì ông HTTP và ông SOCKS đều nhận và trả kết quả như nhau. Chỉ khác ở cách đóng gói, nén, convert dữ liệu trong lúc làm việc.

Ví dụ dễ hiểu là, khi mình nhận được một yêu cầu chuyển quà từ khách A đến nhà C, nếu mình là HTTP mình sẽ đóng gói quà đó vào hộp carton rồi dán băng dính mang đi đến giao cho nhà C. Còn nếu mình là SOCKS thì mình sẽ gỡ gói qua ra thành từng miếng rồi cho vào túi quần mang đến nhà C, đến cổng mình lại lắp ráp lại gói quà như ban đầu. Cả hai cách đều nhận được quà như nhau, chỉ khác cách đóng gói.

Nên dùng HTTP hay SOCKS

Nói gì thì nói, SOCKS là phiên bản cao cấp của proxy nên SOCKS vẫn được ưu tiên sử dụng nhiều hơn, cách đóng gói dữ liệu của SOCKS cặn kẽ hơn, vượt qua nhiều kiểu thuật toán tường lửa hơn HTTP.

Nhưng trong một số trường hợp, không phải cứ hiện đại là tốt, đôi khi quá hiện đại làm cho các phiên bản trình duyệt, phần mềm ứng dụng không theo kịp dẫn đến hiệu quả xử lý không cao.

Do vậy, nếu bạn ưu tiên sử dụng phiên bản mới thì hãy sử dụng SOCKS vì SOCKS cao cấp hơn HTTP, nhưng nếu bạn bắt buộc phải dùng HTTP trong một số trường hợp phần mềm của bạn không hỗ trợ SOCKS5 (ví dụ Chrome) thì vẫn dùng HTTP là thông dụng nhất.

Hy vọng với những phân tích trên đây, bạn đã có cái nhìn cơ bản nhất về Proxy HTTP và Proy SOCKS tương tự HTTPS và SOKCS5. Chọn loại nào thì còn tùy vào bạn đang sử dụng cho phần mềm nào, công cụ nào, trình duyệt nào, có hỗ trợ hay không.

Vietsocks.com

Leave a Reply

Email của bạn sẽ không được hiển thị công khai.