Tải bản đầy đủ (.docx) (30 trang)

BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Đề tài Phần lập trình mạng: Tìm hiểu giao thức FTP và xây dựng chương trình FTP Server Phần hệ điều hành Xây dựng FTP Đa luồng

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 (723.61 KB, 30 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN
CƠ SỞ NGÀNH MẠNG
Đề tài:
Phần lập trình mạng:
Tìm hiểu giao thức FTP và xây dựng chương trình FTP Server
Phần hệ điều hành:
Xây dựng FTP Đa luồng

1


Mục lục
PHẦN 1: LẬP TRÌNH MẠNG.............................................................................................................4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT.....................................................................................................4
I. Bối cảnh..............................................................................................................................................4
II. Mục tiêu............................................................................................................................................5
III. Giới thiệu về giao thức FTP...........................................................................................................5
IV. Giao thức TCP................................................................................................................................6
V. Mơ hình hoạt động của chương trình FTP.....................................................................................7
VI. Kênh dữ liệu:...................................................................................................................................9
1.

Kết nối kênh dữ liệu dạng chủ động - Active FTP..............................................................9

2.

Kết nối kênh dữ liệu dạng bị dộng - Passive FTP..............................................................10



VII. Kiểu dữ liệu:................................................................................................................................11
VIII. Các phương thức truyền dữ liệu trong FTP............................................................................12
1.

Stream mode....................................................................................................................12

2.

Block mode.......................................................................................................................12

3.

Compressed mode............................................................................................................13

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG................................................................14
I. Trình tự truy cập và chứng thực FTP............................................................................................14
II. Các lệnh dùng trong chương trình:..............................................................................................14
III. Các mã thơng điệp hồi đáp trong chương trình:........................................................................15
IV. Môi trường cài đặt........................................................................................................................16
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ....................................................................................17
I. Demo chương trình:.........................................................................................................................17
1.

Demo chương trình kênh dữ liệu bị động......................................................................17

2.

Demo chương trình kênh dữ liệu chủ động...................................................................20


II. Kết luận và hướng phát triển........................................................................................................22
1.

Ưu điểm:...............................................................................................................................22

2.

Nhược điểm:.........................................................................................................................22

PHẦN II: HỆ ĐIỀU HÀNH................................................................................................................23
TIÊU ĐỀ: XÂY DỰNG CHƯƠNG TRÌNH FTP ĐA LUỒNG.......................................................23
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT...................................................................................................23

1


I. Giới thiệu về luồng (Thread)...................................................................................................23
II. Lập trình đa luồng trong Java...............................................................................................23
1. Tạo và quản lý luồng...........................................................................................................23
2. Trạng thái và các phương thức của Thread......................................................................24
3. Quyền ưu tiên của các luồng...............................................................................................26
4. Đồng bộ hóa đa luồng..........................................................................................................26
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG.......................................................................27
I. u cầu bài tốn:.....................................................................................................................27
II. Phân tích:................................................................................................................................27
III. Mơi trường phát triển...........................................................................................................27
CHƯƠNG 3. TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ.................................................................28
I. Demo chương trình..................................................................................................................28
II. Đánh giá kết quả chương trình..............................................................................................28
KẾT LUẬN CHUNG..........................................................................................................................29

TÀI LIỆU THAM KHẢO..................................................................................................................29

MỤC LỤC HÌNH
Hình 1: Giao thức FTP............................................................................................................................5
Hình 2: Cơ chế hoạt động của FTP.........................................................................................................6
Hình 3: Giao thức TCP............................................................................................................................7
Hình 4: Mơ hình hoạt động của giao thức FTP.......................................................................................8
Hình 5: Kết nối dữ liệu dạng chủ động..................................................................................................10
Hình 6: Kết nối kênh dữ liệu dạng bị động............................................................................................11
Hình 7: Server mở cổng 21 để lắng nghe Client....................................................................................17
Hình 8: Client kết nối tới server............................................................................................................17
Hình 9: Server nhận kết nối đến từ Client.............................................................................................17
Hình 10: Client đăng nhập và gửi lệnh kênh dữ liệu bị động................................................................18
Hình 11:Server nhận lệnh kênh dữ liệu bị động từ client gửi qua..........................................................18
Hình 12: Client chọn kiểu dữ liệu Binary và gửi file Test.zip lên server...............................................19
Hình 13: Server đọc file từ client dưới dạng Binary..............................................................................19
Hình 14: Sau khi nhận file Test.zip thành công từ Client......................................................................20
2


Hình 15: Client đăng nhập và gửi số cổng muốn kết nối cho server......................................................20
Hình 16: Server nhận cổng từ client gửi qua và xác nhận kênh dữ liệu Chủ động................................21
Hình 17: Client gửi lệnh RETR tải file AMD.exe từ server và đóng kết nối sau khi nhận thành cơng..21
Hình 18: Server nhận lệnh RETR từ client gửi qua và gửi file AMD.exe cho client.............................21
Hình 19: Client đã nhận thành cơng file AMD.exe từ server gửi qua....................................................22
Hình 20: Vịng đời của Thread..............................................................................................................23
Hình 21: Server nhận 2 kết nối từ 2 client khác nhau............................................................................28
Hình 22: Server nhận 2 lệnh tải file AMD.exe từ 2 client.....................................................................28

3



PHẦN 1: LẬP TRÌNH MẠNG
ĐỀ TÀI: TÌM HIỂU GIAO THỨC FTP. XÂY DỰNG CHƯƠNG TRÌNH
MY_FTP_SERVER.
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
I. Bối cảnh
Ngày nay cùng với sự phát triển chóng mặt của khoa học kỹ thuật, một kỷ nguyên
mới được mở ra kỷ nguyên của công nghệ thông tin. Nhu cầu của con người càng lớn
đặc biệt các ngành khoa học kỹ thuật khác đều cần đến sự hỗ trợ của cơng nghệ thơng
tin. Mọi người đếu có nhu cầu truy cập internet để cung cấp cũng như lấy những thông
tin cần thiết qua các máy chủ.
Với những lý do trên em xin chọn đề tài “Tìm hiểu giao thức FTP. Xây dựng
chương trình my_ftp_server”.
Người sử dụng chương trình là người có nhu cầu truyền nhận file bằng giao thức
FTP (File Transfer Protocol) thông qua mạng Internet.
Trong môi trường Internet, khi cần truyền nhận file các file có kích thước lớn trên
vài chục KB người sử dụng thường gặp trường hợp việc truyền nhận file bị gián đoạn.
Ví dụ khi lấy một file bằng giao thức FTP sử dụng chương trình Internet Explorer,
người sử dụng thường gặp thông báo lỗi sau vài phút download file.
Để giải quyết vấn đề này, người sử dụng thường sử dụng các chương trình chuyên
dùng để lấy file như ReGet để có thể tiếp tục lấy file từ vị trí xảy ra lỗi.
Người sử dụng có xu hướng lấy đồng thời nhiều file tại một server nào đó trên
Internet. Như vậy chương trình phải hỗ trợ lấy nhiều file đồng thời. Tuy nhiên không
phải lúc nào chương trình cũng có thể lấy đồng thời nhiều file tại một site nếu server
hạn chế số kết nối đồng thời tới một địa chỉ IP.
Người sử dụng cũng có nhu cầu lấy file bằng nhiều giao thức khác nhau như FTP
(File Transfer Protocol), HTTP (HyperText Transfer Protocol), … Tuy nhiên trong
phạm vi của luận văn này chúng em chỉ có thể hỗ trợ được việc lấy file bằng giao thức
FTP.

Mặt khác chương trình cũng phải tạo sự tiện lợi cho người sử dụng. Chương trình
phải có giao diện đồ họa thân thiện, giúp cho người sử dụng xem được nội dung các
thư mục từ xa và cục bộ. Từ đó giúp cho việc upload và download dễ dàng hơn.
4


II. Mục tiêu
Mục tiêu của FTP:
 Khuyến khích việc chia sẻ file.
 Giúp đỡ việc sử dụng gián tiếp (thông qua các chương trình) các máy tính từ xa.
 Che thông tin người sử dụng khỏi những thay đổi trong các hệ thống lưu trữ file
giữa các máy chủ (host).
 Truyền dữ liệu một cách tin cậy và hiệu quả.
Mục tiêu của đề tài:
 Tạo một ứng dụng FTP chạy trên bất kỳ máy nào.
 Nghiên cứu tìm hiểu về họ giao thức TCP/IP, cách thức hoạt động, ưu nhược điểm
của giao thức này.
 Nghiên cứu về ngôn ngữ lập trình Java.
III. Giới thiệu về giao thức FTP
FTP (viết tắt cùa File Transfer Protocol dịch ra là "Giao thức truyền tập tin") thường
được dùng để trao đôi tập tin qua mạng lưới truyền thơng dùng giao thức TCP/IP.

Hình 1: Giao thức FTP

Hoạt động của FTP cần có ít nhất hai máy tính, một máy chủ (server) và một máy
khách (Client). Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trình
chủ, lắng nghe yêu cầu về dịch vụ của các máy tính khác trên mạng lưới. Máy khách
5



chạy phần mềm FTP dành cho người sử dụng dịch vụ, gọi là trình khách, khởi đầu một
liên kết với mảy chú. Một khi hai máy đã liên kết với nhau, máy khách có thể xử lý
một số thao tác về tập tin, như tải lập tin lên máy chủ, tải tập tin từ máy chủ xuống máy
của mình, đổi tên của tập tin. hoặc xóa tập tin ở máy chủ v.v.
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ủ dộng, (trình chủ kết nối với trình
khách để truyền tải dữ liệu), trình chủ trước tiên phải 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.

Hình 2: Cơ chế hoạt động của FTP

IV. Giao thức TCP
TCP là giao thức điều khiển truyền vận (Transmission Control Protocol) thuộc giao
thức cốt lõi của bộ giao thức TCP/IP. Thông qua TCP, các ứng dụng trên các máy chủ
được nối mạng có thể liên lạc với nhau, qua đó chúng có thể trao đổi giữ liệu hoặc các
gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới nhận một cách đáng tin cậy và
đúng thứ tự. Hơn nữa, TCP có chức năng phân biệt giữa dữ liệu của nhiều ứng dụng
(như dịch vụ Web và dịch vụ Email) đồng thời chạy trên cùng một máy chủ.
 TCP là giao thức hướng kết nối (connection-oriented), có nghĩa là buộc phải thiết lập
kết nối trước sau đó mới đến tiến trình truyền dữ liệu.
 Cung cấp cơ chế đánh số thứ tự gói tin (sequencing): sử dụng để ráp các gói tin chính
xác ở điểm nhận, loại bỏ gói tin trùng lặp.
6



 TCP có khả năng truyền và nhận dữ liệu cùng một lúc — song công (full-duplex).
 Cơ chế báo nhận (Acknowledgement): tức là khi A gửi gói tin cho B, nếu B nhận
được thì sẽ gửi thơng báo cho A, trường hợp A khơng nhận được thơng báo thì sẽ gửi
lại gói tin tới khi nào B báo nhận thì thơi.
 Tính năng phục hồi dữ liệu bị mất trên đường truyền.

Hình 3: Giao thức TCP

V. Mơ hình hoạt động của chương trình FTP
FTP là một giao thức dạng client/server truyền thống, tuy nhiên thuật ngữ client
thông thường được thay thế bằng thuật ngữ user – người dùng – do thực tế là người sử
dụng mới là đối tượng trực tiếp thao tác các lệnh FTP trên các máy client. Bộ phần
mềm FTP được cài đặt trên một thiết bị được gọi là một tiến trình. Phần mềm FTP
được cài đặt trên máy Server được gọi là tiến trình Server-FTP, và phần trên máy client
được gọi là tiến trình User-FTP.
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. Thành phần Protocol Interpreter (PI) là thành phần quản lý
kênh điều khiển, với chức năng phát và nhận lệnh. Thành phần Data Transfer Process
(DTP) có chức năng gửi và nhận dữ liệu giữa phía client với server. Ngồi ra, cung cấp
cho tiến trình bên phía người dùng cịn có thêm thành phần thứ ba là giao diện người
dùng FTP - thành phần này khơng có ở phía server.
Do đó, có hai tiến trình xảy ra ở phía server, và ba tiến trình ở phía client. Các tiến
trình này được gắn với mơ hình FTP để mơ tả chi tiết hoạt động của giao thức FTP.
7


Hình 4: Mơ hình hoạt động của giao thức FTP


 Các tiến trình bên 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. Nó cho phép sử dụng các lệnh đơn giản hướng người dùng, và
cho phép người điều khiển phiên FTP theo dõi được các thông tin và kết quả xảy ra
trong tiến trình.
-User Protocol Interpreter (User-PI): chịu trách nhiệm quản lý kênh điều khiển phía
Client. Nó khởi tạo phiên kết nối FTP bằng việc phát ra yêu cầu tới phía Server- PI.
Khi kết nối đã được thiết lập. nó xử lý các lệnh nhận được trên giao diện người dùng,
gửi chúng tới Server-PI, và nhận phản hồi trở lại. Nó cũng quản lý tiến trình User DTP.
-User Data Transfer Process (User-DTP): là bộ phận DTP nằm ở phía người dùng,
làm 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 yêu cầu kết nối kênh dữ liệu trên server. Nó tương tác với thiết bị lưu trữ file
phía Client.
 Các tiến trình bên phía Server.
-Server Protocol Interpreter (Server-PI): chịu trách nhiệm quản lý kênh điều khiển
trên server. Nó lắng nghe yêu cầu kết nối hướng tới từ users trên cổng dành riêng. Khi
kết nối đã được thiết lập, nó sẽ nhận lệnh từ phía User-PI, trả lời lại, và quản lý tiến
trình truyền dữ liệu trên server.
-Server DataTransfer Process (Server-DTP): làm nhiệm vụ gữi hoặc nhận file từ bộ
phận User-DTP. Server-DTP vừa làm nhiệm thiết lập kết nối kênh dữ liệu và lắng nghe
8


một kết nối kênh dữ liệu từ User. Nó tương tác với server file trên hộ thống cục bộ để
đọc và chép file.
Trong thời gian một phiên làm việc FTP sẽ có hai kết nối mạng riêng biệt, một giữa
các PI và một giữa các DTP. Kết nối giữa các PI được gọi là kết nối điều khiển (control
connection). Kết nối giữa các DTP được gọi là kết nối dữ liệu (data connection). Các
kết nối điều khiển và dữ liệu thường sử dụng giao thức TCP.
Thường thì FTP server lắng nghe trên port thông dụng là port 21 cho những yêu cầu

kết nối điều khiển. Việc lựa chọn port cho kết nối dữ liệu phụ thuộc vào những lệnh
được phát đi trên kênh điều khiển. Theo quy ước, phía client gửi một thông báo điều
khiển chỉ cho biết số port tại đó phía client đã chuẩn bị sẵn để nhận một yêu cầu kết nối
dữ liệu vào.
Việc sử dụng những kết nối riêng biệt cho điều khiển và dữ liệu có lợi là hai kết nối
có thể lựa chọn những chất lượng dịch vụ khác nhau như: khoảng trì hỗn tối thiểu cho
kết nối điều khiển và cực đại cho kết nối dữ liệu, nó cũng tránh những vấn đề của việc
cung cấp các mã thoát
VI. Kênh dữ liệu:
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 truyề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.
Chuẩn FTP chì định hai phương thức khác nhau để tạo ra kênh dữ liệu. Khác biệt
chính cua hai phương thức đó là ở mặt thiết bị: phía Client hay phía server là phía đã
đưa ra yêu cầu khởi tạo kết nối. Điều này nghe qua có vẻ khá đơn giàn, nhưng khơng
thực nó lại khá quan trọng.
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.
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à 1678
9


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 1678 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.
Ví dụ: giả sử phía Client chỉ định cổng 1742 với lệnh PORT. Phía Server-DTP sau
đó sẽ tạo ra một kết nối từ cổng 20 của nó tới cổng 1742 phía Client thay vì cổng 1678
như mặc định. Ọ trình này được mơ tả trong hình dưới đây:
FTP Client

FTP Server

Hình 5: Kết nối dữ liệu dạng chủ động

2. Kết nối kênh dữ liệu dạng bị dộ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ữ
10


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à 1678 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:
FTP Client


FTP Server

Hình 6: Kết nối kênh dữ liệu dạng bị động.

Phía Client sẽ sử dụng lệnh PASV để yêu cầu server rằng nó muốn dùng phương
thức điều khiển dữ liệu bị động. Phía Server-PI sẽ trả lời lại phía Client với một giá trị
cổng mà Client sẽ sử dụng, từ cổng 2223 trên nó. Sau đó phía Server PI sẽ hướng cho
phía Server-DTP lắng nghe trên cổng 2223. Phía User-PI cùng sẽ hướng cho phía
User-DTP tạo một phiên kết nối từ cống 1742 phía Client tới cổng 2223 phía server.
Sau khi Server chấp nhận kết nối này, dữ liệu bằt đằu được truyền đi.
VII. Kiểu dữ liệu:
Có bốn kiểu dữ liệu khác nhau được quy định trong chuẩn của FTP:
+ASCII: Định nghĩa một file văn bản ASCII, với dòng được đánh dấu bởi một số
loại dòng đánh dấu kết thúc như mô tả ở trên.
+EBCDIC: Khái niệm tương tự như loại ASCII, nhưng đối với tập tin bằng cách sử
dụng kí tự EBCDIC của IBM đặt.
11


+Image: Các tập tin đã khơng có cấu trúc nội bộ chính thức và được gửi một byte tại
một thời điểm mà khơng có bất kỳ xử lý; đây là chế độ "hộp đen" đã đã đề cập ở trên.
+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ứa một số bit khác 8. 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 địa phương 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 hình ảnh
đượ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 được thể hiện một cách phổ quát. Nó cũng thường được gọi là nhị
phân loại vì lý do đó.
VIII. 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 tồ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 modc.

1. 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 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
12


quả nhất vì nó khơng tổn một lượng byte “overload" đề thông báo header.

2. Block mode
Đâ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. Một thuật toán đặc biệt được sử dụng để kiềm tra các dữ liệu đã được
truyền đi và để phát hiện, khởi tạo lại đối với một phiên truyền dữ liệu đã bị ngắt.

3. Compressed mode
Đây là một phương thức truyền sử dụng một kỹ thuật nén khá đơn giản, là “runlength 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 compresed mode
trở nên không cần thiết nữa.

13


CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I. Yêu cầu bài tốn
Xây dựng chương trình FTP Server
I. Trình tự truy cập và chứng thực FTP
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-Pl, và Server-PI sẽ hồi đáp kết
quả là các mã thông báo. 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): 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 Selcetion (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 dó.
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:
Bước 1: Người dùng gửi một username và password.
Bước 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ở.
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.
II. Các lệnh dùng trong chương trình:

14


Lệnh
USER
PASS

Ý nghĩa
Gửi tên đăng nhập lên máy chủ
Gửi mật khẩu lên server (khơng mã hóa) của tên đăng
nhập lên server
SYS
Báo cáo loại hệ điều hành trên hệ thống từ xa
CWD
Thay đổi thư mục làm việc trên máy chủ

LIST/NLIST
Gửi danh sách tên file trong thư mục hiện tại
PWD
Cho biết tên thư mục hiện tại
MKD
Tạo thư mục
RMD
Xóa thư mục
TYPE
Chỉ ra sự thể hiện kiểu file
PASV
Khởi tạo chế độ bị động, máy khách khởi tạo kết nối dữ
liệu đến máy chủ
PORT
Chỉ ra số cổng mà phần kết nối dữ liệu phía máy khách
đang khởi tạo
RETR
Tải dữ liệu về từ máy chủ
STOR
Gửi dữ liệu từ máy khách lên máy chủ
III. Các mã thông điệp hồi đáp trong chương trình:
Đăng nhập:
Client:
Client sẽ gửi thơng tin đăng nhập username và password lên server
USER<username>
PASS
Server:
120: dịch vụ đã sẵn sàng trong nnn phút
220: dịch vụ đã sẵn sàng cho người dùng mới
331: username OK, cần password

230: đăng nhập thành công
257: "pathname" tạo ra.
250: Success.
221: Goodbỵe
Nếu thông tin đăng nhập sai:
15


530: thông tin đăng nhập sai, bạn cần kiểm tra username và password.
Download:
220: dịch vụ đã sẵn sàng cho người dùng mới
250: kết nối tới thư mục server thành công
227: bước vào chế độ bị động
150: File trong trạng thái ổn, kết nối đang được mở
226: download thành cổng
Upload:
250: kết nối tới thư mục server thành công
227: bước vào chế độ bị dộng
150: File trong trạng thái ổn, kết nối đang được mở
226: upload thành công
IV. Môi trường cài đặt
 Ngôn ngữ: Java
 Công cụ hỗ trợ: Eclipse

16


CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ
I. Demo chương trình:


Hình 7: Server mở cổng 21 để lắng nghe Client

Hình 8: Client kết nối tới server

Hình 9: Server nhận kết nối đến từ Client

1. Demo chương trình kênh dữ liệu bị động

17


Hình 10: Client đăng nhập và gửi lệnh kênh dữ liệu bị động

Hình 11: Server nhận lệnh kênh dữ liệu bị động từ client gửi qua

18


Hình 12: Client chọn kiểu dữ liệu Binary và gửi file Test.zip lên server

Hình 13: Server đọc file từ client dưới dạng Binary

19



×