FTP (File Transfer Protocol) nghĩa là Giao thức truyền tập tin là một trong những giao thức Internet trên tầng ứng dụng, thường được dùng để sử dụng để lưu trữ, trao đổi file qua mạng lưới truyền thông dùng giao thức TCPIP. Nhờ vào giao thức này nên người sử dụng có thể tải dữ liệu như hình ảnh, văn bản, các tập tin nhạc, video... từ máy tính của mình lên máy chủ đang đặt ở một nơi khác hoặc tải các tập tin đã có trên máy chủ về máy tính cá nhân của mình một cách dễ dàng. FTP cũng là giao thức dùng để truyền tải dữ liệu web lên máy chủ web cho dù máy chủ đặt rất xa. Giao thức FTP được sử dụng nhiều nhất vào mục đích truyền tải dữ liệu, rút gọn thời gian cũng như đáp ứng nhu cầu của việc tải và truyền đi của các dữ liệu dung lượng lớn một cách nhanh chóng.
Trang 1MỤC LỤC
CHƯƠNG I GIỚI THIỆU FTP SERVER 2
CHƯƠNG II MÔ HÌNH CƠ BẢN FTP VÀ NGUYÊN LÝ HOẠT ĐỘNG 3
CHƯƠNG III TÍNH BẢO MẬT CỦA FTP 7
CHƯƠNG IV THIẾT LẬP KÊNH ĐIỀU KHIỂN VÀ CHỨNG THỰC NGƯỜI DÙNG 7
CHƯƠNG V DỮ LIỆU VÀ QUẢN LÝ DỮ LIỆU FTP 9
CHƯƠNG VI CÁC PHƯƠNG THỨC TRUYỀN DỮ LIÊU TRONG FTP 14
CHƯƠNG VII COMMAND VÀ REPLY CODES CỦA FTP 16
CHƯƠNG VIII THỰC HIỆN MÔ PHỎNG 16
PHỤ LỤC: MỘT SỐ LỆNH COMMAND PHỔ BIẾN 20
TÀI LIỆU THAM KHẢO 32
Trang 2CHƯƠNG 1: GIỚI THIỆU FTP SERVER
FTP (File Transfer Protocol) nghĩa là "Giao thức truyền tập tin" là một trong những giao
thức Internet trên tầng ứng dụng, thường được dùng để sử dụng để lưu trữ, trao đổi file qua mạng lưới truyền thông dùng giao thức TCP/IP Nhờ vào giao thức này nên người sử dụng có thể tải dữ liệu như hình ảnh, văn bản, các tập tin nhạc, video từ máy tính của mình lên máy chủ đang đặt ở một nơi khác hoặc tải các tập tin đã có trên máy chủ về máy tính cá nhân của mình một cách dễ dàng FTP cũng là giao thức dùng để truyền tải dữ liệu web lên máy chủ web cho dù máy chủ đặt rất xa Giao thức FTP được sử dụng nhiều nhất vào mục đích truyền tải dữ liệu, rút gọn thời gian cũng như đáp ứng nhu cầu của việc tải và truyền đi của các dữ liệu dung lượng lớn một cách nhanh chóng
Hình 1: Giới thiệu về FTP
Giống như hầu hết các giao thức TCP/IP, nó dựa trên mô hình client-server, với một FTP client trên máy tính người dùng tạo ra một kết nối đến một FTP server để gửi và lấy các tập tin đến và đi từ các máy chủ Những mục tiêu chính của FTP là để làm cho chuyển tập tin đơn giản, và che chắn người dùng từ việc thực hiện chi tiết về làm thế nào các tập tin đang thực sự di chuyển từ một nơi khác Để kết thúc, FTP được thiết kế để tự động đối phó với nhiều vấn đề có khả năng phát sinh do có sự khác biệt về định dạng tập tin được lưu trữ trên hệ thống khác nhau
Để đảm bảo rằng các tập tin được gửi và nhận được mà không làm mất dữ liệu có thể hỏng chúng, FTP sử dụng giao thức điều khiển truyền dẫn tin cậy tại tầng giao vận Một
hệ thống xác thực được sử dụng để đảm bảo rằng máy khách ủy quyền chỉ được cho phép
để truy cập vào một máy chủ Cùng lúc đó, một tính năng đôi khi được gọi là ẩn danh
Trang 3FTP cho phép một tổ chức mong muốn nó để thiết lập một máy chủ tổng hợp thông tin
để cung cấp các tập tin cho bất cứ ai có thể lấy chúng
Sau khi một kết nối TCP được thiết lập, một điều khiển kết nối FTP được tạo ra Nội bộ lệnh FTP được truyền qua kết nối logic này dựa trên định dạng quy tắc được thiết lập bởi các giao thức Telnet Mỗi lệnh được gửi bởi các khách hàng sẽ nhận được một trả lời từ máy chủ để thông báo nó đã thành công hay thất bại Kết nối dữ liệu được thiết lập cho mỗi dữ liệu cá nhân được chuyển FTP hỗ trợ cả kết nối dữ liệu bình thường hoặc thụ động, cho phép các máy chủ hoặc khách hàng đều có thể bắt đầu kết nối dữ liệu Nhiều loại dữ liệu và các loại tệp được hỗ trợ để cho phép sự linh hoạt với nhiều loại hình dịch
CHƯƠNG 2: MÔ HÌNH CƠ BẢN FTP VÀ NGUYÊN LÝ HOẠT ĐỘNG
2.1 Mô hình kết nối
Giao thức FTP sử dụng kết nối TCP, nhưng nó không chỉ dùng một kênh TCP như phần lớn các giao thức truyền thông khác Quá trình truyền nhận dữ liệu giữa Client và Server được tạo nên từ 2 tiến trình TCP logic là Control Connection và Data Connection:
• Control Connection (kênh điều khiển) : đây là kênh logic TCP được dùng để khởi tạo
một kết nối FTP Nó được duy trì xuyên suốt kết nối FTP và được sử dụng chỉ để truyền các thông tin điều khiển, như các lệnh và các hồi đáp trong FTP Nó không được dùng để truyền file
• Data Connection (Kênh dữ liệu): Mỗi khi dữ liệu được truyền từ server tới client, một
kênh kết nối TCP nhất định lại được khởi tạo giữa chúng Dữ liệu được truyền đi qua kênh kết nối này – do đó nó được gọi là kênh dữ liệu Khi file được truyền xong, kênh này được ngắt Việc sử dụng các kênh riêng lẻ như vậy tạo ra sự linh hoạt trong việc truyền truyền dữ Tuy nhiên, nó cũng tạo cho FTP độ phức tạp nhất định
Trang 4Hình 2: Mô hình kết nối TCP trong FTP
Quá trình trao đổi dữ liệu giữa client - server bao gồm:
• Truyền một yêu cầu từ chương trình client tới chương trình server
• Yêu cầu được server xử lý
• Truyền đáp ứng cho client
FTP hoạt động trên nền TCP nên cũng phải tuân theo bắt tay 3 hướng (three way handshake) và quá trình thiết lập connection giữa client và server như sau:
• Client gửi một gói tin SYN đến Server
• Server nhận gói SYN, rồi gửi lại gói SYS-ACK cho Client
• Client nhận SYN-ACK, rồi gửi lại gói ACK thông báo đồng ý tạo kết nối
2.2 Mô hình hoạt động
Do các chức năng điều khiển và dữ liệu sử dụng các kênh khác nhau, nên mô hình hoạt động của FTP cũng chia phần mềm trên mỗi thiết bị ra làm hai thành phần logic tương ứng với mỗi kênh
Trang 5Hình 3: Mô hình hoạt động của FTP
Phía Server:
• Server Protocol Interpreter (Server-PI): Chịu trách nhiệm quản lí Control Connection
trên Server Nó lắng nghe yêu cầu kết nối hướng từ User trên cổng 21 Khi kết nối được thiết lập, nó nhận lệnh từ User-PI, gửi phản hồi và quản lí tiến trình truyền dữ liệu trên Server
• Server Data Transfer Process (Server-DTP): chịu trách nhiệm nhận và gửi file từ
User-DTP Server - DTP vừa làm nhiệm vụ thiết lập Data Connection và lắng nghe Data
Trang 6Connection của User thông qua cổng 20 Nó tương tác với Server File System trên hệ
thống cục bộ để đọc và chép file
Phía Client:
• User Interface: Đây là chương trình được chạy trên máy tính, nó cung cấp giao diện xử
lí cho người dùng, chỉ có trên phía Client Nó cho phép người dùng sử dụng những lệnh đơn giản để điều khiển các session FTP, từ đó có thể theo dõi được các thông tin và kết quả xảy ra trong quá trình
• User Protocol Interpreter (User - PI): Chịu trách nhiệm quản lí Control Connection
phía Client Nó khởi tạo phiên kết nối FTP bằng việc phát hiện ra Request tới Server-PI
Sau khi kết nối được thiết lập, nó xử lí các lệnh nhận được trên User Interface, gửi chúng
tới Server-PI rồi đợi nhận Response trở lại Nó cũng quản lí các tiến trình trên Client
• User Data Transfer Process (User-DTP): Có nhiệm vụ gửi hoặc nhận dữ liệu từ
Server-DTP User-DTP có thể thiết lập hoặc lắng nghe DataConnection từ Server thông qua cổng 20 Nó tương tác với Client File System trên Client để lưu trữ file
2.2 Nguyên lý hoạt động
Cần có 2 kết nối TCP trong phiên làm việc của FTP: TCP Data connection trên cổng
20, TCP Control connection trên cổng 21
Control connection : luôn được mở ở mọi thời điểm khi dữ liệu hoặc lệnh được
gửi
Data connection : chỉ được mở khi có trao đổi dữ liệu thực
Trình tự chung của FTP hoạt động như sau:
1 FTP Client mở Control connection đến FTP server (trên port 21) và chỉ định 1 cổng trên Client để Server gửi lại phản hồi Đường kết nối này dùng để truyền lệnh và không phải là dữ liệu Control connection sẽ mở trong suốt thời gian của phiên làm việc (telnet giữa 2 hệ thống)
2 Client chuyển tiếp thông tin như username, password tới Server để thực hiện xác thực (authentication) Server sẽ trả lời bằng mã chấp nhận hay từ chối của các request
Trang 73 Client gửi thêm các lệnh với tên tệp, kiểu dữ liệu, … để vận chuyển, thêm luồng
dữ liệu(tức là chuyển tập tin từ máy khách đến máy chủ hoặc ngược lại) Server
sẽ phản hồi với mã (reply code) chấp nhận hoặc từ chối
4 Khi dữ liệu đã sẵn sàng, 2 bên sẽ mở kết nối TCP trên cổng 20
5 Dữ liệu có thể được vận chuyển giữa Client và Server trên cổng 20 Dữ liệu vận chuyển được mã hóa theo 1 số định dạng bao gồm NVT-ASCII hoặc nhị phân(binary)
6 Khi quá trình vận chuyển dữ liệu được hoàn thành, phiên làm việc của FTP Server
sẽ đóng lại Data Connection trên cổng 20 Nhưng vẫn giữ Control Connection trên công 21
7 Control connection có thể được sử dụng để thiết lập truyền dữ liệu khác hoặc đóng liên kết
CHƯƠNG 3: TÍNH BẢO MẬT CỦA FTP
Giống như phần lớn các giao thức cũ, phương pháp đăng nhập đơn giản của FTP là một sự kế thừa từ những giao thức ở thời kỳ đầu của Internet Ngày nay, nó không còn bảo đảm tính an toàn cần thiết trên môi trường Internet toàn cầu vì username và
password được gửi qua kênh kết nối điều khiển dưới dạng clear text Điều này làm cho các thông tin đăng nhập có thể bị nghe lén Chuẩn RFC 2228 về các phần mở
rộng cho bảo mật FTP đã định ra thêm nhiều tùy chọn chứng thực và mã hóa phức tạp cho những ai muốn tăng thêm mức độ an toàn vào trong phần mềm FTP của họ
Một phương pháp hữu hiệu hơn đó là sử dụng giao thức FTPS (FTP trên SSL) cung
cấp khả năng mã hóa giao thức cho các dữ liệu được truyền Việc cấu hình ISA Server
để tạo FTP khá phức tạp vì chúng ta sẽ phải tạo thủ công một định nghĩa giao thức cho FTPS và vùng cổng mà kết nối FTPS sử dụng
CHƯƠNG 4: THIẾT LẬP KÊNH ĐIỀU KHIỂN VÀ CHỨNG THỰC NGƯỜI DÙNG
Trước khi kết nối được sử dụng để thực sự truyền file, kênh điều khiển cần phải được thiết lập Như trong các giao thức client/server khác, FTP server tuân theo một luật
passive trong kênh điều khiển Bộ phận Server Protocol Interpreter (Server-PI) sẽ
lắng nghe cổng TCP dành riêng cho kết nối FTP là cổng 21 Phía User-PI sẽ tạo kết nối bằng việc mở một kết nối TCP từ thiết bị người dùng tới server trên cổng đó Nó
sử dụng một cổng bất kỳ làm cổng nguồn trong phiên kết nối TCP Khi TCP đã được cài đặt xong, kênh điều khiển giữa các thiết bị sẽ được thiết lập, cho phép các lệnh
được truyền từ User-PI tới Server-PI, và Server-PI sẽ đáp trả kết quả là các mã thông
báo
Trang 8Bước đầu tiên sau khi kênh đã đi vào hoạt động là bước đăng nhập của người dùng
(login sequence) Bước này có hai mục đích:
Access Control (Điều khiển truy cập): quá trình chứng thực cho phép hạn chế truy
cập tới server với những người dùng nhất định Nó cũng cho phép server điều khiển loại truy cập như thế nào đối với từng người dùng
Resource Selection (Chọn nguồn cung cấp): Bằng việc nhận dạng người dùng tạo
kết nối, FTP server có thể đưa ra quyết định sẽ cung cấp những nguồn nào cho người dùng đã được nhận dạng đó
Trình tự truy cập và chứng thực FTP: Quy luật chứng thực trong FTP khá đơn
giản, chỉ là cung cấp username/password Trình tự của việc chứng thực như sau:
Hình 4: Trình tự chứng thực người dùng của FTP
1 Người dùng gửi một username từ User-PI tới Server-PI bằng lệnh USER Sau
đó password của người dùng được gửi đi bằng lệnh PASS
2 Server kiểm tra tên người dùng và password trong database người dùng của nó
Nếu người dùng hợp lệ, server sẽ gửi trả một thông báo tới người dùng rằng phiên kết nối đã được mở Nếu người dùng không hợp lệ, server yêu cầu người dùng thực hiện lại việc chứng thực Sau một số lần chứng thực sai nhất định, server sẽ ngắt kết nối
Trang 9Giả sử quá trình chứng thực đã thành công, server sau đó sẽ thiết lập kết nối để cho phép từng loại truy cập đối với người dùng được cấp quyền Một số người dùng chỉ
có thể truy cập vào một số file nhất định, hoặc vào một số loại file nhất định Một số server có thể cấp quyền cho một số người dùng đọc và viết lên server, trong khi chỉ cho phép đọc đối với những người dùng khác Người quản trị mạng có thể nhờ đó mà đáp ứng đúng các nhu cầu truy cập FTP
Một khi kết nối đã được thiết lập, server có thể thực hiện các lựa chọn tài nguyên dựa vào nhận diện người dùng Ví dụ: trên một hệ thống nhiều người dùng, người quản trị có thể thiết lập FTP để khi có bất cứ người dùng nào kết nối tới, anh ta sẽ tự động
được đưa tới "home directory" của chính anh ta Lệnh tùy chọn ACCT (account) cũng
cho phép người dùng chọn một tài khoản cá nhân nào đó nếu như có nhiều hơn một tài khoản
CHƯƠNG 5: DỮ LIỆU VÀ QUẢN LÝ KÊNH DỮ LIỆU FTP
5.1 Dữ liệu trong FTP
Các tập tin được coi như một tập hợp các byte FTP không quan tâm nội dung tập tin, sẽ
chỉ đơn giản là di chuyển các tệp tin, các byte cùng 1 thời điểm, từ nơi này sang nơi khác
5.1.1 FTP Data Types:
Phần đầu tiên của thông tin có thể được đưa ra về tập tin là kiểu dữ liệu của nó Có 4 kiểu
dữ liệu khác nhau được quy định trong chuẩn của FTP
ASCII: file văn bản ASCII
EBCDIC: tương tự ASCII, nhưng sử dụng kiểu kí tự EBCDIC do IBM đặt
Image: Các tập tin không có cấu trúc nội bộ chính thức
Local: Kiểu dữ liệu này được sử dụng để xử lí các tập tin có thể lưu trữ dữ liệu
trong byte logic Cách xác định loại này cùng với cách dữ liệu có cấu trúc cho phép dữ liệu được lưu trữ trên hệ thống đích một cách phù hợp với đại diện local của nó
Trong thực tế, hai loại kiểu dữ liệu thường xuyên nhất được sử dụng là ASCII và Image Kiểu ASCII được sử dụng cho các tập tin văn bản, và cho phép chúng được di chuyển
giữa các hệ thống với dòng kết thúc mã chuyển đổi tự động Loại Image được sử dụng cho các tập tin nhị phân, chẳng hạn như đồ họa hình ảnh, tập tin ZIP và các dữ liệu khác
Nó cũng thường được gọi là kiểu nhị phân vì lý do đó
Trang 105.1.2 FTP Format Control
Đối với các loại ASCII và EBCDIC, FTP xác định 1 tham số tùy chọn được gọi là “format
control” (điều khiển định dạng), nó cho phép người dùng chỉ định một đại diện cụ thể cho cách sử dụng định dạng dọc để mô tả tệp
Các tùy chọn kiểm soát định dạng được tạo ra cho mục đích cụ thể đúng cách xử lý các tập tin chuyển giao từ các thiết bị máy chủ đến máy in Nó không được sử dụng ngày
nay, hoặc nếu nó được sử dụng, nó chỉ là trong ứng dụng đặc biệt Ba tùy chọn trong FTP Format Control:
Non Print : Đây là tùy chọn mặc định, cho biết không có định dạng dọc
Telnet Format : Tệp sử dụng các kí tự điều khiển định dạng dọc, như được chỉ định trong giao thức Telnet
Carriage Control/FORTRAN : Tệp sử dụng kí tự điều khiển được định dạng đưa
ra làm kí tự đầu tiên của mỗi dòng, như được xác định cho ngôn ngữ lập trình FORTRAN
5.1.3 FTP Data Structures
Ngoài việc xác định một loại dữ liệu tệp tin, ta cũng có thể xác định cấu trúc tệp tin theo
3 cách:
File Structure: Tệp là 1 luồng byte liền kề không có cấu trúc bên trong Đây là
cách mặc định và được sử dụng cho hầu hết các loại tệp
Record Structure: Tệp bao gồm một tập hợp các bản ghi, mỗi bản ghi được phân
định bằng đánh dấu end-of-record Cấu trúc bản ghi có thể sử dụng cho các tệp văn bản ASCII, nhưng chúng thường được gửi với cấu trúc tệp thông thường sử dụng kiểu dữ liệu ASCII
Page Structure: Tệp chứa 1 trang dữ liệu được lập chỉ mục đặc biệt Cấu trúc này
không được sử dụng phổ biến Nó được tạo ra cho 1 máy tính cổ xưa được sử
dụng trong ARPAnet đời đầu
5.2 Quản lý kênh dữ liệu
Kênh điều khiển được tạo ra giữa Server-PI và User-PI sử dụng quá trình thiết lập
kết nối và chứng thực được duy trì trong suốt phiên kết nối FTP Các lệnh và các hồi đáp
được trao đổi giữa bộ phận PI (Protocol Interpreter) qua kênh điều khiển, nhưng dữ liệu
thì không
Trang 11Mỗi khi cần phải truyền dữ liệu giữa server và client, một kênh dữ liệu cần phải
được tạo ra Kênh dữ liệu kết nối bộ phận User-DTP với Server-DTP Kết nối này cần
thiết cho cả hoạt động chuyển file trực tiếp (gửi hoặc nhận một file) cũng như đối với việc truyền dữ liệu ngầm, như là yêu cầu một danh sách file trong thư mục nào đó trên server
Hình 5: Hai dạng kết nối kênh dữ liệu trong FTP
5.2.1 Kết nối kênh dữ liệu dạng chủ động - Active FTP
Trong dạng kết nối này, phía Server-DTP khởi tạo kệnh dữ liệu bằng việc mở một cổng
TCP cho phía User-DTP Phía server sử dụng cổng được dành riêng, là cổng 20 cho kênh
dữ liệu Trên máy client, một giá trị cổng được chọn theo mặc định chính là cổng được
sử dụng đối với kênh điều khiển, tuy nhiên phía client sẽ luôn chọn hai cổng riêng biệt cho hai kênh này
Trang 12Hình 6: Kết nối kênh dữ liệu chủ động trong FTP
Giả sử phía User-PI thiết lập một kết nối điều khiển từ cổng bất kỳ của nó là 39162 tới
cổng điều khiển trên server là cổng 21 Khi đó, để tạo một kênh dữ liệu cho việc truyền
dữ liệu, phía Server-PI sẽ báo cho phía Server-DTP khởi tạo một kênh kết nối TCP từ
cổng 20 tới cổng 38893 của phía client Sau khi phía client chấp nhận kênh được khởi tạo, dữ liệu sẽ được truyền đi
Thực tế, việc sử dụng cùng một cổng cho cả kênh dữ liệu và kênh điều khiển không phải là một ý hay, nó làm cho hoạt động của FTP trở nên phức tạp Do đó, phía client nên chỉ định sử dụng một cổng khác bằng việc sử dụng lệnh PORT trước khi truyền
dữ liệu
VD:
- FTP Client: Mở một port cao bất kỳ gửi gói tin SYN, ví dụ từ Port 39126 đến Port 21
trên FTP Server với mục đích thông báo
- FTP Server: Đồng ý và gửi lại gói tin SYN/ACK từ Port 21 đến Port 39162 trên FTP
Client
- FTP Client: Sẽ gửi lại gói tín ACK từ Port 39162 đến Port 21 trên FTP Server đồng ý
tạo kết nối Tại thời điểm này Connection Control đã được khởi tạo xong
Trang 13- FTP Client: Sử dụng Connection Control được tạo trước đó để gửi command PORT
yêu cầu FTP Server dùng Active Mode để truyền file,từ Port 39162 đến Port 21 trên FTP Server Đồng thời thông báo cho FTP Server biết nó sẽ mở Port
38893 mới để chờ tạo Connection Data
- FTP Server: Nhận được yêu cầu và tiến hành đàm phán bắt tay 3 bước với FTP Client
Nó sẽ gửi gói SYN từ Port 20 đến Port 38893, rồi nhận lại SYN/ACK rồi tiếp tục gửi ACK đến khi quá trình bắt tay 3 bước hoàn tất
5.2.2 Kết nối kênh dữ liệu dạng bị động - Passive FTP
Trong kết nối bị động, client sẽ nhận server là bên bị động, làm nhiệm vụ chấp nhận một yêu cầu kết nối kênh dữ liệu được khởi tạo từ phía client Server trả lời lại phía client với địa chỉ IP cũng như địa chỉ cổng mà nó sẽ sử dụng Phía Server-DTP sau đó sẽ lắng nghe một kết nối TCP từ phía User-DTP trên cổng này Mặc định, phía client sử dụng cùng một cổng đối với cả hai kênh, điều khiển và dữ liệu như trong trường hợp kết nối chủ động ở trên Tuy nhiên, ở đây, một lần nữa phía client có thể chọn sử dụng một giá trị cổng khác cho kênh dữ liệu Ta sẽ xét lại ví dụ ở trên một lần nữa, với cổng điều khiển phía client là 1026 tới cổng 21 phía server Nhưng lần này truyền dữ liệu theo phương thức kết nối bị động, như mô tả trong hình dưới đây:
Hình 7: Kết nối kênh dữ liệu bị động trong FTP
Trang 14- FTP Client: Gửi gói tin SYN từ Port 47962 đến Port 21 trên FTP Server với mục đích
thông báo
- FTP Server: Đồng ý và gửi lại gói tin SYN/ACK từ Port 21 đến Port 47962 trên FTP
Client
- FTP Client: Sẽ gửi lại gói tín ACK từ Port 47962 đến Port 21 trên FTP Server đồng ý
tạo kết nối Tại thời điểm này Connection Control đã được khởi tạo xong
- FTP Client: Để truyền dữ liệu theo Passive Mode, FTP Client chủ động gửi command PASV trên Connection Control
- FTP Server: Nhận được yêu cầu phải dùng Passive Mode để truyền dữ liệu, nó mở Port
54157 và response lại cho FTP Client biết sẽ dùng Port 54157 để tạo Connection Data
-FTP Client: Nhận được phản hồi, nó sẽ mở Port 52771 để tiến hành đàm phán 3 bước
với FTP Server Các bước diễn ra tuần tự như hình bên dưới.Sau bước này Connection Data đã khởi tạo xong giữa FTP Client Port 52771 và FTP Server Port 54157
CHƯƠNG 6: CÁC PHƯƠNG THỨC TRUYỀN DỮ LIÊU TRONG FTP
Khi kênh dữ liệu đã được thiết lập xong giữa Server-DTP với User-DTP, dữ liệu
sẽ được truyền trực tiếp từ phía client tới phía server, hoặc ngược lại, dựa theo các lệnh được sử dụng Do thông tin điều khiển được gửi đi trên kênh điều khiển, nên toàn bộ kênh dữ liệu có thể được sử dụng để truyền dữ liệu FTP có ba phương thức truyền dữ
liệu, đó là: stream mode, block mode, và compressed mode
Stream mode:
Trong phương thức này, dữ liệu được truyền đi dưới dạng các byte không cấu trúc liên tiếp Thiết bị gửi chỉ đơn thuần đầy luồng dữ liệu qua kết nối TCP tới phía nhận Không có một trường tiêu đề nhất định được sử dụng trong phương thức này làm cho nó khá khác so với nhiều giao thức gửi dữ liệu rời rạc khác Phương thức này chủ yếu dựa vào tính tin cậy trong truyền dữ liệu của TCP Do nó không có cầu trúc dạng header, nên việc báo hiệu kết thúc file sẽ đơn giản được thực hiện bằng việc phía thiết bị gửi ngắt kênh kết nối dữ liệu khi đã truyền xong
Trong số ba phương thưc, stream mode là phương thức được sử dụng nhiều nhất
trong triển khai FTP thực tế Có một số lý do giải thích điều đó Trước hết, nó là phương thức mặc định và đơn giản nhất, do đó việc triển khai nó là dễ dàng nhất Thứ hai, nó là phương pháp phổ biến nhất, vì nó xử lý với các file đều đơn thuần như là xử lý dòng byte,
mà không để ý tới nội dung của các file Thứ ba, nó là phương thức hiệu quả nhất vì nó không tốn một lượng byte “overload” để thông báo header
Block mode:
Trang 15Đây là phương thức truyền dữ liệu mang tính quy chuẩn hơn, với việc dữ liệu được chia thành nhiều khối nhỏ và được đóng gói thành các FTP blocks Mỗi block này
có một trường header 3 byte báo hiệu độ dài, và chứa thông tin về các khối dữ liệu đang được gửi
Descriptor:
128: kết thúc của data block là EOR
64: kết thúc của data block là EOF
32: có lỗi trong data block
16: block là một Restart Marker Byte count:số bytes trong data block
Compressed mode:
Đây là một phương thức truyền sử dụng một kỹ thuật nén là “run-length encoding” có
tác dụng phát hiện và xử lý các đoạn lặp trong dữ liệu được truyền đi để giảm chiều dài của toàn bộ thông điệp Thông tin khi đã được nén, sẽ được xử lý như trong block mode, với trường header Trong thực tế, việc nén dữ liệu thường được sử dụng ở những chỗ khác, làm cho phương thức truyền kiểu compressed mode trở nên không cần thiết nữa Trong đó hai bit đầu 10 để biểu thị Replicate byte,n là số lần byte d được lập lại
Hình 8: FTP block header
Hình 9: Replicated byte
Trang 16CHƯƠNG 7: COMMAND VÀ REPLY CODES CỦA FTP
Các command thường được chia làm 3 nhóm:
Access Control Command: là các command tham gia quá trình đăng nhập
và chứng thực người dùng như USER, PASS Transfer Parameter Commands:là các
command quyết định quá trình truyền tải file như TYPE, PASV, EPSV
FTP Service Command: là các command thực hiện các thao tác với file như
nhận,gửi,xóa file (DELE, STOR, RETR)
7.2 Các reply code
Mỗi lần User-PI gửi lệnh đến Server-PI qua Control connection, server sẽ gửi lại phản
hồi dưới dạng các code Code reply nhằm các mục đích sau:
CHƯƠNG 8: THỰC HIỆN MÔ PHỎNG
Dùng phần mềm VMWare để tạo máy ảo đóng vai trò CLIENT và SERVER cho việc mô
phỏng truyền nhận dữ liệu