Tải bản đầy đủ (.pdf) (32 trang)

TÌM HIỂU VỀ GIAO THỨC TRUYỀN NHẬN FILE (FTP)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 32 trang )

BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

MỤ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

1


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

CHƯƠ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
2


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

FTP 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
vụ đưa đón.
Giao diện giữa một người sử dụng FTP và các giao thức được cung cấp dưới dạng một
tập các lệnh tương tác người dùng. Sau khi thiết lập kết nối, và hồn tất xác thực hai lệnh
cơ bản có thể được sử dụng để gửi hoặc nhận tệp.Ngoài ra những lệnh bổ sung được cung
cấp để quản lý kết nối FTP, cũng như để thực hiện hỗ trợ chức năng chẳng hạn như danh
sách nội dung của một thư mục hoặc xóa hoặc đổi tên tập tin. Những năm gần đây, đồ
họa thực của FTP đã được tạo ra để cho phép người sử dụng để chuyển các tập tin bằng
cách sử dụng chuột thay vì ghi nhớ lệnh. FTP có thể cũng được sử dụng trực tiếp các ứng
dụng khác để di chuyển các tập tin từ một nơi khác.

CHƯƠNG 2: MƠ HÌNH CƠ BẢN FTP VÀ NGUN 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ì xun 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.
3



BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hì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.
• 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.

4


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hì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ừ UserDTP. Server - DTP vừa làm nhiệm vụ thiết lập Data Connection và lắng nghe Data

5


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Connection 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 q 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ừ ServerDTP. 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.

6


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

3. 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 tồn cần thiết trên mơi trường Internet tồ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.
7



BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Bướ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): q 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.
8


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Giả 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 đó.

9


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

5.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 số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
Ngồ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.
10


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Mỗ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ẽ ln chọn hai cổng riêng biệt
cho hai kênh này.


11


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hì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.
12


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc


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


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

- 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:
14


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Đâ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.

Hình 8: FTP block header.

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 tồ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 9: Replicated byte.


15


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

CHƯƠNG 7: COMMAND VÀ REPLY CODES CỦA FTP
7.1 Các lệnh command
Các commands và reply codes được dùng để trao đổi giữa User-PI và ServerPI.Trong đó
User-PI sẽ gửi command tới Server-PI để thực hiện một hành động nào đó
và Server-PI sẽ gửi lại reply codes cho User-PI để báo kết quả và một số thông tin quan
trọng khác.
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:
 Xác nhận máy chủ đã nhận được lệnh.
 Cho biết lệnh từ phía người dùng có được chấp nhận hay khơng, nếu xảy ra lỗi thì đó
là lỗi gì.
 Cho biết nhiều thông tin khác nhau cho người dùng về phiên, ví dụ như là: tình trạng
truyền file, …
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.


16


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hình 10: Các phần mềm sử dụng
Dùng Filezilla Server để tạo Server bên phía máy ảo Server, Filezilla Client để tạo giao
diện cho client bên phía máy ảo client, đồng thời dùng WireShark để bắt gói.
Cài đạt kết nối mạng LAN cho máy ảo Server và máy ảo Client, đặt IP của máy ảo Server
là 10.0.0.1 và Client là 10.0.0.2.
Tạo User và Folder chứa file share trên FilerZilla server.

Hình 11: Tạo User và Shared File
Đăng nhập vào Filezilla Client để tiến hành Upload và Download file.

17


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hình 12: Đăng nhập vào User

Hình 13: Tiến hành Upload và Download File
Dùng WireShark để phân tích q trình truyền nhận dữ liệu.


18


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

Hình 14: Q trình kết nối User với Server

Hình 15: Quá trình truyền dữ liệu chế độ Passive

19


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

PHỤ LỤC: MỘT SỐ LỆNH COMMAND
PHỔ BIẾN
Một số lệnh command phổ biến:
Command

Description

ABOR

Abort an active file transfer.

ACCT


Account information.

ADAT

Authentication/Security Data

ALLO

Allocate sufficient disk space to receive a
file.

APPE

Append (with create)

AUTH

Authentication/Security Mechanism

AVBL

Get the available space

CCC

Clear Command Channel

CDUP


Change to Parent Directory.

20


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

CONF

Confidentiality Protection Command

CSID

Client / Server Identification

CWD

Change working directory.

DELE

Delete file.

DSIZ

Get the directory size

ENC


Privacy Protected Channel

EPRT

Specifies an extended address and port to
which the server should connect.

EPSV

Enter extended passive mode.

FEAT

Get the feature list implemented by the
server.

HELP

Returns usage documentation on a
command if specified, else a general help
document is returned.

HOST

Identify desired virtual host on server, by
name.

LANG


Language Negotiation

21


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

LIST

Returns information of a file or directory
if specified, else information of the current
working directory is returned.

LPRT

Specifies a long address and port to which
the server should connect.

LPSV

Enter long passive mode.

MDTM

Return the last-modified time of a
specified file.

MFCT


Modify the creation time of a file.

MFF

Modify fact (the last modification time,
creation time, UNIX group/owner/mode
of a file).

MFMT

Modify the last modification time of a file.

MIC

Integrity Protected Command

MKD

Make directory.

MLSD

Lists the contents of a directory if a
directory is named.

MLST

Provides data about exactly the object
named on its command line, and no others.


MODE

Sets the transfer mode (Stream, Block, or
Compressed).

NLST

Returns a list of file names in a specified
directory.

NOOP

No operation (dummy packet; used
mostly on keepalives).

22


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

OPTS

Select options for a feature
example OPTS UTF8 ON).

PASS


Authentication password.

PASV

Enter passive mode.

PBSZ

Protection Buffer Size

PORT

Specifies an address and port to which the
server should connect.

PROT

Data Channel Protection Level.

PWD

Print working directory. Returns the
current
directory of the host.

QUIT

Disconnect.

REIN


Re initializes the connection.

REST

Restart transfer from the specified point.

RETR

Retrieve a copy of the file

RMD

Remove a directory.

RMDA

Remove a directory tree

RNFR

Rename from.

RNTO

Rename to.

SITE

Sends site specific commands to remote

server (like SITE IDLE 60 or SITE
UMASK 002). Inspect SITE HELP output
for complete list of supported commands.

SIZE

Return the size of a file.

23

(for


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

SMNT

Mount file structure.

SPSV

Use single port passive mode (only one
TCP port number for both control
connections and passive mode data
connections)

STAT


Returns information on the server status,
including the status of the current
connection

STOR

Accept the data and to store the data as a
file at the server site

STOU

Store file uniquely.

STRU

Set file transfer structure.

SYST

Return system type.

THMB

Get a thumbnail of a remote image file

TYPE

Sets the transfer mode (ASCII/Binary).

USER


Authentication username.

24


BÀI TẬP LỚN MẠNG IP

TS. Nguyễn Chí Ngọc

XCUP

Change to the parent of the current
working directory

XMKD

Make a directory

XPWD

Print the current working directory

XRCP
XRMD

Remove the directory

XRSQ
XSEM


Send, mail if cannot

XSEN

Send to terminal

Bảng các commands giữa client và server của FTP

100 Series

The requested action is being initiated, expect
another reply before proceeding with a new
command.

110

Restart marker replay . In this case, the text is
exact and not left to the particular
implementation; it must read: MARK yyyy =
mmmm where yyyy is User process data stream
25


×