FTP

Khái quát

FTP thường chạy trên hai cổng, 20 và 21, và chỉ chạy riêng trên nền của TCP. Trình chủ FTP lắng nghe các yêu cầu dịch vụ từ những kết nối vào máy của các trình khách FTP, trên cổng 21. Đường kết nối trên cổng 21 này tạo nên một dòng truyền điều khiển, cho phép các dòng lệnh được chuyển qua trình chủ FTP. Để truyền tải tập tin qua lại giữa hai máy, chúng ta cần phải có một kết nối khác. Tùy thuộc vào chế độ truyền tải được sử dụng, trình khách (ở chế độ chủ động - active mode) hoặc trình chủ (ở chế độ bị động - passive mode) đều có thể lắng nghe yêu cầu kết nối đến từ đầu kia của mình. Trong trường hợp kết nối ở chế độ chủ động, (trình chủ kết nối với trình khách để truyền tải dữ liệu), trình chủ phải trước tiên đóng kết nối vào cổng 20, trước khi liên lạc và kết nối với trình khách. Trong chế độ bị động, hạn chế này được khắc phục, và việc đóng kết nối trước là một việc không cần phải làm.
Trong khi dữ liệu được truyền tải qua dòng dữ liệu, dòng điều khiển đứng im. Tình trạng này gây ra một số vấn đề, đặc biệt khi số lượng dữ liệu đòi hỏi được truyền tải là lớn, và đường truyền tải chạy thông qua những bức tường lửa. Bức tường lửa là dụng cụ thường tự động ngắt các phiên giao dịch sau một thời gian dài im lặng. Tuy tập tin có thể được truyền tải hoàn thiện, song dòng điều khiển do bị bức tường lửa ngắt mạch truyền thông giữa quãng, gây ra báo lỗi.

Những vấn đề về bảo an khi dùng FTP

FTP là một phương pháp truyền tập tin có truyền thống phi bảo an (không an toàn), vì theo như bản thiết kế gốc đặc tả của FTP, không có cách nào có thể truyền tải dữ liệu dưới hình thức mật mã hóa được. Ảnh hưởng này có nghĩa là, phần lớn các cài đặt của mạng lưới truyền thông, tên người dùng, mật khẩu, dòng lệnh FTP và tập tin được truyền tải, đều có thể bị người khác trên cùng một mạng lưới, "ngửi" hoặc quan sát, dùng phần mềm phân tích giao thức (protocol analyzer) (hoặc còn gọi là "dụng cụ ngửi dữ liệu", tiếng Anh là "sniffer"). Nên chú ý rằng đây là vấn đề thường thấy ở các giao thức của Internet được thiết kế trước khi SSL (Secure Sockets Layer) ra đời (tạm dịch là giao thức "tầng kết nối bảo mật"), như HTTP, SMTP và Telnet. Giải pháp thường thấy, đối với vấn đề này, là dùng SFTP (Secure Shell File Transfer Protocol - tạm dịch là "giao thức truyền tập tin dùng trình bao bảo mật"), một giao thức dựa trên nền của SSH, hoặc trên FTPS (FTP over SSL). SFTP là FTP được cộng thêm chức năng mã hoá dữ liệu của SSL hoặc TLS (Transport Layer Security - tạm dịch là "Bảo mật tầng giao vận").

FTP nặc danh

Nhiều máy chủ chạy trình chủ FTP cho phép cái gọi là "FTP nặc danh". Bố trí này cho phép người dùng truy nhập vào máy chủ mà không cần có trương mục. Tên người dùng của truy cập nặc danh thường là hai chữ 'nặc danh' hoặc một chữ 'ftp' mà thôi. Trương mục này không có mật khẩu. Tuy người dùng thường bị đòi hỏi phải kèm địa chỉ thư điện tử của mình vào, thay thế cho mật khẩu, hòng giúp phần mềm xác minh người dùng, song thủ tục xác minh thường là rất sơ sài và hầu như không có - tùy thuộc vào trình chủ FTP đang được dùng và sự cài đặt của nó. Internet Gopher đã được đề nghị trở thành một hình thức thay thế của FTP nặc danh.

FTP và các trình duyệt

Đa số các trình duyệt web (web browser) gần đây và trình quản lý tập tin (file manager) có thể kết nối vào các máy chủ FTP, mặc dù chúng có thể còn thiếu sự hỗ trợ cho những mở rộng của giao thức, như FTPS chẳng hạn. Điều này cho phép người dùng thao tác các tập tin từ xa, thông qua kết nối FTP, dùng một giao diện quen thuộc, tương tự như giao diện trong máy của mình (ví dụ liệt kê danh sách của các tập tin của máy ở xa trông giống như phần liệt kê của máy mình, đồng thời các thao tác sao bản tập tin (copy), đổi tên, xóa, v.v.. được xử lý như là chúng ở trong máy mình vậy). Phương pháp làm là thông qua FTP URL, dùng dạng thức ftp(s)://<địa chỉ của máy chủ FTP> (ví dụ: ftp.gimp.org). Tuy không cần thiết, song mật khẩu cũng có thể gửi kèm trong URL, ví dụ:  ftp(s)://<tên người dùng>:<mật khẩu>@<địa chỉ của máy chủ FTP>:<số cổng>. Đa số các trình duyệt web đòi hỏi truyền tải FTP ở chế độ bị động, song không phải máy chủ FTP nào cũng thích ứng được. Một số trình duyệt web

FTP trên nền SSH

"FTP trên nền của SSH" ám chỉ đến một kỹ thuật "đào hầm" cho một phiên giao dịch dùng giao thức FTP bình thường, thông qua một kết nối dùng giao thức SSH.
Vì FTP (một giao thức khá bất thường, dựa trên nền của giao thức TCP/IP, mà hiện nay người ta vẫn còn dùng) sử dựng nhiều kết nối TCP, cho nên việc đi ngầm dưới nền của SSH là một việc khó khăn. Đối với đa số các trình khách của SSH, khi "kết nối điều hành" (kết nối khởi đầu giữa máy khách tới máy chủ, dùng cổng 21) được thiết lập, SSH chỉ có thể bảo vệ được đường kết nối này mà thôi. Khi việc truyền tải dữ liệu xảy ra, trình FTP ở một trong hai đầu, sẽ thiết lập một kết nối TCP mới ("đường dẫn dữ liệu") và kết nối này sẽ bỏ qua kết nối của SSH, làm cho nó không còn được hưởng tính tin cẩn (confidentiality), sự bảo vệ tính toàn vẹn (integrity protection) của dữ liệu, hoặc những tính năng khác mà SSH có.
Nếu trình khách FTP được cài đặt dùng chế độ bị động, và kết nối với một máy chủ dùng giao diện SOCKS, là giao diện mà nhiều trình khách SSH có thể dùng để tiến cử việc đi ngầm, việc dùng các đường kết nối của FTP, trên các kết nối của SSH, là một việc có thể làm được.
Nếu không, các phần mềm trình khách SSH phải có kiến thức cụ thể về giao thức FTP, giám sát và viết lại các thông điệp trong kết nối điều khiển của FTP, tự động mở các đường truyền tải dữ liệu cho FTP. Phiên bản 3 của trình SSH (do công ty phần mềm Communications Security Corp. sản xuất) là một ví dụ điển hình, hỗ trợ những khả năng nói trên .
"FTP chạy trên nền SSH" còn đôi khi được gọi là FTP bảo mật (secure FTP). Chúng ta không nên nhầm cái này với những phương pháp bảo an FTP, như SSL/TLS hay còn gọi là FTPS. Những phương pháp để truyền tải các tập tin khác, dùng SSH, không có liên quan đến FTP, bao gồm SFTP (SSH file transfer protocol - giao thức truyền tải tập tin dùng SSH) hoặc SCP (Secure copy - sao chép có bảo mật) - trong cả hai cái này, toàn bộ cuộc hội thoại (xác minh người dùng và truyền tải dữ liệu) đều luôn luôn được bảo vệ bằng giao thức SSH.