Quan hệ giữa FTP Server, Socket, Web Server

Mọi người cho em hỏi, khi muốn download upload file, mình sử dụng giao thức ftp, ftp client down, up file lên ftp server, trong khi app mình deploy trên web server, vậy thì ftp server và web server có quan hệ ntn ạ?
Em cảm ơn!

FTP = File transfer protocol, là giao thức chuyên dùng để truyền file giữa máy client và máy server thông qua network. Có 2 giao thức truyền: passive và active.

FTP server # với Web server:

  • FTP server dựa trên giao thức FTP (FTPS & FTP) còn Webserver dựa trên giao thức HTTP (HTTP & HTTPS).

  • FTP là stateful connection nên ngoài cái connection giữ state giữa server và client, nó có 1 connection nữa chuyên để nhận gửi (passive là từ client đòi server gửi, còn active là server chủ động gửi xuống client). Có thể FTP client init rất nhiều connection transfer với FTP server để nhận gửi nhiều file cùng lúc.

Trong khi đó, HTTP là stateless (2 connection từ cùng 1 client sẽ độc lập hoàn toàn với nhau). Muốn biến nó thành stateful thì HTTP buộc phải dùng thêm token/cookie nhưng về bản chất vẫn là transfer data trên 1 connection. # với FTP, HTTP là multiplex control (kết hợp nhiều signal trong 1 lần truyền) nên việc manage nó qua NAT và firewall dễ hơn nhiều so với FTP (phải manage nhiều connection cho 1 lần tranmission)

  • Thiết lập connection ở FTP chậm hơn do việc xác thực client-server là xác thực roundtrip (gửi lên / trả lời / lại gửi lên / lại trả lời). Connection khi thiết lập sẽ được keep chứ k như HTTP, gửi xong là drop luôn (tuy nhiên, hiện nay nhiều Webserver cho phép keep connection để reuse lại, đặt cái keep-alive là được, tuy nhiên sẽ bị timeout. FTP nhiều khi cái connection điều khiển mà idle thì cái connection tranmit cùng tèo).

Hai giao thức này đều có thể sử dụng đẩy file lên server và kéo file về client. Tuy nhiên, chỉ có HTTP client (là các trình duyệt) mới có khả năng render các file html thành tài liệu richtext (các browser hiện nay cũng đều support FTP, tức là nó cũng là FTP client)

5 Likes

Quan hệ giữa WebServer và FTPServer:

  • Muốn đầy app lên server (là các file html, php, …) thì phải dùng FTP (hoặc SSH) vì server thường cài sẵn FTP/SSH server. Chứ bản thân Webserver không được thiết kế để truyền file từ client -> server trực tiếp như vậy.
  • Tuy nhiên, một số share_hosting, họ có cài 1 vài file_manager để upload file. Khi đó, bạn có thể chọn file .zip (là app của mình), upload lên qua form để HTTP nhận cái binary, sau đó thì giải nén source cũng là 1 cách để deploy app.
4 Likes

Em cũng hiểu hiểu rồi, để em tìm hiểu thêm ạ. Cảm ơn bác :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?