You are on page 1of 24

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC SAO ĐỎ

*****

BÁO CÁO BÀI TẬP LỚN


TÊN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH FTP SERVER

Học phần: Lập trình mạng máy tính


Sinh viên thực hiện: Dương Đức Hiến
Hà Quang Trường
Giảng viên hướng dẫn: Phạm Thị Hường
Lớp: DK10 – CNTT
Khoa: Công nghệ thông tin

Năm 2022
LỜI MỞ ĐẦU
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 “Xây dựng chương trình 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.
Chương trình cũng phải hiện thực một số chức năng cơ bản của một FTP client
download, upload,…
Mục tiêu:
- 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ả.

1
- 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ề lập trình socket TCP
- Nghiên cứu về ngôn ngữ lập trình C#

2
MỤC LỤC

Chương 1. TỔNG QUAN VỀ LẬP TRÌNH MẠNG.................................................5


1.1. Giới thiệu về lập trình mạng..............................................................................5
1.2. Cơ sở lập trình mạng.........................................................................................5
1.3. Các mô hình lập trình mạng..............................................................................6
1.3.1. Mô hình Client/Server...................................................................................6
1.3.2. Mô hình điểm - điểm.....................................................................................7
1.3.3. Mô hình đa tầng.............................................................................................7
1.4. C# là gì ?.............................................................................................................. 8
1.4.1. Tại sao phải sử dụng ngôn ngữ C#...............................................................9
1.4.2. C# là ngôn ngữ đơn giản...............................................................................9
1.4.3. C# là ngôn ngữ hiện đại...............................................................................10
1.4.4. C# là ngôn ngữ hướng đối tượng................................................................10
1.5. Giao thức FTP..................................................................................................10
1.5.1. Hoạt động của giao thức FTP.....................................................................11
1.5.2. Mục đích của giao thức FTP.......................................................................12
1.5.3. Những phê bình về giao thức FTP..............................................................12
1.6. Các loại kết nối.................................................................................................13
1.6.1. Active FTP....................................................................................................13
1.6.2. Passive FTP..................................................................................................14
1.7. Tìm hiểu các hệ thống FTP có sẵn..................................................................15
1.7.1. FTP client.....................................................................................................15
1.7.2. FTP Server...................................................................................................15
1.8. Mô hình FTP.....................................................................................................16
Chương 2. PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH.......................................17
2.1. Cài đặt FTP server...........................................................................................17
2.1.1. Cài đặt FTP Server trên Windows.............................................................17
2.1.2. Các bước truy cập server............................................................................20
2.2. Thiết kế chương trình trên nền tảng winform c#...........................................22
2.2.1. Truy cập server:..........................................................................................22
2.2.2. Upload file lên Server..................................................................................22
2.2.3. Doaload file từ Server..................................................................................22

3
Chương 3. GIỚI THIỆU CHƯƠNG TRÌNH...........................................................23
3.1. Giới thiệu tổng quan chương trình:................................................................23

4
Chương 1. TỔNG QUAN VỀ LẬP TRÌNH MẠNG
1.1. Giới thiệu về lập trình mạng
Khi nói đến phát triển các ứng dụng phần mềm, đa số người ta muốn nói đến
chương trình có khả năng làm việc trong môi trường mạng tích hợp nói chung và
mạng máy tính nói riêng. Từ các chương trình kế toán doanh nghiệp, quản lý, trò
chơi, điều khiển... đều là các chương trình ứng dụng mạng. Lập trình mạng là các kỹ
thuật lập trình nhằm xây dựng những ứng dụng, phần mềm khai thác hiệu quả tài
nguyên mạng máy tính. Vấn đề lập trình mạng liên quan đế nhiều lĩnh vực kiến thức
khác nhau. Từ kiến thức sử dụng ngôn ngữ lập trình, phân tích thiết kế hệ thống, kiến
thức hệ thống mạng, mô hình xây dựng chương trình ứng dụng mạng, kiến thức về cơ
sở dữ liệu... cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liên quan khác
như mạng điện thoại di động, PSTN, hệ thống GPS, các mạng như BlueTooth,
WUSB, mạng sensor.... Nhưng vấn đề lập trình mạng có 3 vấn đề chính cốt lõi tích
hợp trong lập trình ứng dụng mạng

1.2. Cơ sở lập trình mạng


Mô hình kết nối hệ thống mở được ổ chức quốc tế về tiêu chuẩn hoá ISO đưa
ra nhằm cung cấp một mô hình chuẩn cho các nhà sản xuất và cung cấp sản phẩm
viễn thông áp dụng theo để phát triển các sản phẩm. Ý tưởng mô hình hoá được tạo ra
còn nhằm hỗ trợ cho việc kết nối giữa các hệ thống và mođun hoá các thành phần
phục vụ mạng viễn thông.
 Chức năng của mô hình OSI
 Cung cấp kiến thức về hoạt động của kết nối liên mạng.
 Đưa ra trình tự công việc để thiết lập và thực hiện một giao thức cho kết nối
các thiết bị trên mạng.
 Chia nhỏ các hoạt động phức tạp của mạng thành các phần công việc đơn giản.
 Cho phép các nhà thiết kế có khả năng phát triển trên từng mođun chức năng.
 Cung cấp các khả năng định nghĩa các chuẩn giao tiếp có tính tương thích cao
“plug and play” và tích hợp nhiều nhà cung cấp sản phẩm. Cấu trúc mô hình
OSI Mô hình OSI gồm 7 tầng, mỗi tầng thực hiện các chức năng riêng cho
hoạt động kết nối mạng.
APLICATION

5
PRESENTATION
SESSION
TRANSPOST LAYER
NETWORK LAYER
DATA LINK
PHYSICAL

3 tầng trên cùng của mô hình OSI thường được gọi là các lớp ứng dụng hay
còn gọi là các tầng cao. Các tầng này thường liên quan tới giao tiếp với người dùng,
định dạng của dữ liệu và phương thức truy nhập các ứng dụng đó.
- Application layer: Đây là tầng cao nhất trong mô hình, là nơi mà người sử
dụng kết nối các chương trình ứng dụng với các thủ tục cho phép truy nhập vào
mạng.
- Presentation layer: Tầng presentation cung cấp các mã và chức năng để
chuyển đổi mà được cung cấp bởi lớp ứng dụng. Các chức năng đó đảm bảo rằng dữ
liệu từ tầng ứng dụng trong một hệ thống có thể được đọc bởi tầng ứng dụng của một
hệ thống khác. Ví dụ dùng để mã hoá dữ liệu từ tầng ứng dụng như mã hoá ảnh jpeg,
gif. Mã đó cho phép ta có thể hiện lên trang web. - Session layer: Được sử dụng để
thiết lập, duy trì và kết thúc phiên làm việc giữa các tầng presentation. Việc trao đổi
thông tin ở tầng này bao gồm yêu cầu dịch vụ và đáp ứng yêu cầu của các ứng dụng
trên thiết bị khác. Các tầng dưới của mô hình OSI sử dụng để định nghĩa làm thế nào
để dữ liệu được truyền đi trong các dây nối vật lý, các thiết bị mạng và đi đến trạm
đầu cuối, cuối cùng là đến các tầng ứng dụng.

1.3. Các mô hình lập trình mạng


1.3.1. Mô hình Client/Server
Chương trình ứng dụng mạng tổ chức theo mô hình Client/Server được sử
dụng phổ biến trong thực tế. Chương trình ứng dụng mạng theo mô hình này gồm có
2 phần mềm: Phần mềm Server (phục vụ) và phần mềm Client (máy khách).

6
Chế độ blocking (nghẽn): Khi Client hay Server phát ra lệnh send gửi thông
điệp, quá trình Client hay Server tương ứng sẽ bị treo cho đến khi phía nhận phát lệnh
receive 14 tiếp nhận thông điệp. Tương tự khi gọi lệnh receive mà chưa có send cũng
sẽ vào trạng thái treo cho đến khi có lệnh send từ xa gửi thông điệp đến. Chế độ
nonblocking: Khi phát ra lệnh truyền thông, quá trình Client hay Server vẫn tiếp tục
được thực thi mà không bị treo. Một chương trình Server có thể phục vụ nhiều
chương trình Client đồng thời hoặc tuần tự (kiểu lặp).
Chương trình Client: Client là một chương trình chạy trên máy cục bộ mà đưa
ra yêu cầu dịch vụ đối với Server. Chương trình Client có thời gian chạy hữu hạn. Nó
được khởi đầu bởi người sử dụng hoặc một chương trình ứng dụng khác và kết thúc
khi dịch vụ đã thực hiện hoàn thành. Sau khi khởi tạo, Client thực hiện mở một kênh
truyền thông sử dụng địa chỉ IP của máy trạm từ xa và địa chỉ cổng (nhãn) đã biết rõ
của chương trình Server cụ thể chạy trên máy tính từ xa đó. Cách mở đó của Client
được gọi là mở tích cực (active open). Sau khi kênh truyền thông được mở client sẽ
gửi yêu cầu tới Server và nhận đáp ứng trả về từ Server.
Chương trình Server: Chương trình này có đặc điểm là có thời gian chạy vô
tận và chỉ dừng chạy bởi người sử dụng hoặc tắt máy tính. Chương trình này sau khi
khởi tạo, nó sẽ thực hiện mở thụ động (passive open) và được đặt ở trạng thái “nghe”
chờ tín hiệu gửi tới từ Client nếu có, nó sẽ nhận yêu cầu gửi tới từ Client, thực hiện
xử lý và đáp ứng yêu cầu đó. Các chức năng trong một chương trình ứng dụng gồm: -
Giao diện nhập liệu. - Tính toán, xử lý thông tin theo qui định. - Truy vấn và lưu trữ
thông tin
1.3.2. Mô hình điểm - điểm
Chương trình ứng dụng mạng làm việc theo mô hình điểm S - điểm (ngang
cấp, bình đẳng) có thể nói là các chương trình mà có thể thực hiện vai trò của cả
Server và của Client. Chương trình này khi chạy có thể yêu cầu chương trình khác
phục vụ nó và nó cũng có thể phục vụ yêu cầu gửi tới từ chương trình khác.
1.3.3. Mô hình đa tầng
Mô hình đa tầng gồm nhiều tầng mà tiêu biểu nhất là mô hình 3 tầng. Trong
mô hình này, tầng thấp nhất là tầng thông tin, tầng trung gian và tầng đỉnh. Một ví dụ

7
tiểu biểu của mô hình 3 tầng đó là dịch vụ Web với tầng đỉnh là trình duyệt, tầng
trung gian là Web Server và tầng thông tin là cơ sở dữ liệu.
Hầu hết các ngôn ngữ lập trình đều có thể sử dụng để lập trình mạng, tuy nhiên
việc lập trình mạng còn phụ thuộc vào các thư viện và môi trường lập trình có hỗ trợ
hay không. Có thể liệt kê các ngôn ngữ lập trình sử dụng để lập trình mạng như sau:
- C/C++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loại ứng
dụng trong đó có ứng dụng mạng.
- Java: Ngôn ngữ lập trình khá thông dụng và hỗ trợ trên nhiều môi trường, trong
đó có thể viết ứng dụng chạy trên điện thoại di động.
- C#: Ngôn ngữ lập trình cũng rất mạnh và dễ sử dụng, chỉ hỗ trợ trên hệ điều
hành Windows của Microsoft.
- Python, Perl, Php…: Các ngôn ngữ thông dịch, sử dụng để viết nhanh các tiện
ích nhỏ một cách nhanh chóng, trong đó có ứng dụng mạng.
- Việc lập trình mạng phụ thuộc rất nhiều vào các thư viện hỗ trợ đến từ hệ
thống. Tùy thuộc vào nền tảng phát triển ứng dụng mà có thể sử dụng các thư viện
khác nhau. Có thể liệt kê một vài thư viện hỗ trợ lập trình mạng như sau:
- Winsock: Thư viện liên kết động của Microsoft, được phân phối cùng hệ điều
hành Windows. Winsock cung cấp khá nhiều API để phát triển ứng dụng mạng.
Winsock có thể sử dụng cùng bất kỳ ngôn ngữ lập trình nào, bộ đôi C/C++ với
Winsock đem lại hiệu năng cao nhất, nhưng khó sử dụng.
- Thư viện System.Net trong .NET framework: Thư viện cung cấp nhiều API dễ
sử dụng để xây dựng ứng dụng mạng. Để sử dụng thư viện này, người ta thường dùng
C#, việc phát triển ứng dụng mạng khá dễ dàng.
- Thư viện MFC Socket: Thư viện đi cùng bộ phát triển Visual Studio C++.
- Các thư viện trong Java Runtime, PHP,….

1.4. C# là gì ?
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư
của Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg và Scott
Wiltamuth.
C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng
của hai ngôn ngữ mạnh nhất là C++ và Java.
C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng

8
của hai ngôn ngữ mạnh nhất là C++ và Java.
C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable
Code và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high-level đa
dạng trên các nền tảng và cấu trúc máy tính khác nhau.
C# với sự hỗ trợ mạnh mẽ của .NET Framework giúp cho việc tạo một ứng dụng
Windows Forms hay WPF (Windows Presentation Foundation), . . . trở nên rất dễ
dàng.
0.1
1.1
1.4.1. Tại sao phải sử dụng ngôn ngữ C#
Nhiều người tin rằng  không  cần  thiết có  một ngôn ngữ  lập trình mới. Java,C++,
Perl, Microsoft Visual Basic, và những ngôn ngữ khác được nghĩ rằng đã cung cấp
tất cả những chức năng cần thiết.
Ngôn ngữ C# là một ngôn ngữ được dẫn xuất từ C và C++, nhưng nó được tạo
từ nền tảng phát triển hơn. Microsoft bắt đầu với công việc trong C và C++ và thêm
vào những đặc tính mới để làm cho ngôn ngữ này dễ sử dụng hơn. Nhiều trong số
những đặc tính này khá giống với những đặc tính có trong ngôn ngữ Java. Không
dừng lại ở đó. Microsoft đưa ra một số mục đích khi xây dựng ngôn ngữ này. Những
mục đích này được được tóm tắt như sau:
 C# là ngôn ngữ đơn giản
 C# là ngôn ngữ hiện đại
 C# là ngôn ngữ hướng đối tượng
 C# là ngôn ngữ mạnh mẽ và mềm dẻo
 C# là ngôn ngữ có ít từ khóa
 C# là ngôn ngữ hướng module
 C# sẽ trở nên phổ biến
1.4.2. C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và c+
+, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo
(virtual base class). Chúng là những nguyên nhân gây ra sự nhầm lẫn hay dẫn đến
những vấn đề cho các người phát triển C++. Nếu chúng ta là người học ngôn ngữ này
đầu tiên thì chắc chắn là ta sẽ không trải qua những thời gian để học nó! Nhưng khi
đó ta sẽ không biết được hiệu quả của ngôn ngữ C# khi loại bỏ những vấn đề trên.
9
Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++. Nếu chúng ta thân thiện với
C và C++ hoậc thậm chí là Java, chúng ta sẽ thấy C# khá giống về diện mạo, cú pháp,
biểu thức, toán tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++,
nhưng nó đã được cải tiến để làm cho ngôn ngữ đơn giản hơn. Một vài trong các sự
cải tiến là loại bỏ các dư thừa, hay là thêm vào những cú pháp thay đổi. Ví dụ như,
trong C++ có ba toán tử làm việc với các thành viên là ::, . , và ->. Để biết khi nào
dùng ba toán tử này cũng phức tạp và dễ nhầm lẫn. Trong C#, chúng được thay thế
với một toán tử duy nhất gọi là . (dot). Đối với người mới học thì điều này và những
việc cải tiến khác làm bớt nhầm lẫn và đơn giản hơn.
1.4.3. C# là ngôn ngữ hiện đại
Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lý ngoại lệ,
thu gom bộ nhớ tự động, những kiểu dữ liệu mở rộng, và bảo mật mã nguồn là những
đặc tính được mong đợi trong một ngôn ngữ hiện đại. C# chứa tất cả những đặc tính
trên. Nếu là người mới học lập trình có thể chúng ta sẽ cảm thấy những đặc tính trên
phức tạp và khó hiểu. Tuy nhiên, cũng đừng lo lắng chúng ta sẽ dần dần được tìm
hiểu những đặc tính qua các chương trong cuốn sách này.
1.4.4. C# là ngôn ngữ hướng đối tượng
Những đặc điểm chính của ngôn ngữ hướng đối tượng (Object-oriented
language) là sự đóng gói (encapsulation), sự kế thừa (inheritance), và đa hình
(polymorphism). C# hỗ trợ tất cả những đặc tính trên.

1.5. 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”) là
giao thức truyền file giữa các máy tính .Giao thức này xuất hiện trong những năm
1971(khi Internet vẫn chỉ là một dự án thử nghiệm ) nhưng vẫn còn được sử dụng rộng
rãi cho đến tận ngày nay.FTP được đặc tả trong RFC 959. FTP cho phép trao đổi file
giữa hai máy tính .
Thông qua giao thức FTP,người dùng có thể tải dữ liệu như hình ảnh ,văn bản ,các tập
tin media(nhạc,video)…từ máy tính có trên máy chủ về máy tính cá nhân .

10
1.5.1. Hoạt động của giao thức FTP
Trong phiên làm việc của FTP, người dùng làm việc trên máy tính của mình và
trao đổi file với một máy tính ở chỗ khác. Để truy cập tới máy tính khác, người dùng
phải đăng nhập thông qua việc cung cấp định danh người dùng và mật khẩu. Sau khi
những thông tin này được kiểm chứng thì công việc truyền file từ hệ thống file trên
máy tính của mình đến hệ thống file ở đầu kia mới có thể được thực hiện. FTP sử dụng
hai kết nối TCP song song, một đường truyền thông tin điều khiển (control
connection) và một đường truyền dữ liệu (data connection). Các thông tin điều khiển
như thông tin định danh người dùng, mật khẩu truy nhập, lệnh thay đổi thư mục, lệnh
“PUT” hoặc “GET” file giữa hai máy tính được trao đổi qua đường truyền thông tin
điều khiển. Đường truyền dữ liệu để truyền file dữ liệu thực sự. Vì FTP phân biệt
luồng thông tin điều khiển với luồng dữ liệu nên nó dược gọi là gửi thông tin điều
khiển out-of-band.
FTP gồm 2 kết nối điều khiển và dữ liệu Khi người dùng bắt đầu một phiên làm
việc FTP, đầu tiên FTP sẽ thiết lập một đường kết nối thông tin điều khiển TCP qua
cổng 21 . Phía client của giao thức FTP truyền thông tin về định danh người dùng và
mật khẩu cũng như lệnh thay đổi mở một kết nối khác. Như vậy với FTP, luồng thông
tin điều khiển được mở và tồn tại trong suốt phiên làm việc của người dùng, nhưng
mỗi kết nối dữ liệu được tạo ra cho mỗi một yêu cầu truyền file (kết nối dữ liệu là
không liên tục).
11
Trong suốt phiên làm việc, FTP server phải giữ lại các thông tin về trạng thái
của người dùng, đặc biệt nó phải kết hợp các thông tin điều khiển với tài khoản của
người dùng. Server cũng lưu giữ thư mục hiện thời mà người dùng truy cập cũng như
cây thư mục của người dùng. Ghi lại các thông tin trạng thái của mỗi phiên làm việc
hạn chế đáng kể tổng số phiên làm việc đồng thời.
1.5.2. Mục đích của giao thức FTP
- Mục đích của giao thức FTP, như được phác thảo trong bản RFC, là:
- Khuyến khích việc dùng chung tập tin (như chương trình ứng dụng vi tính hoặc dữ
liệu)
- Khuyến khích việc sử dụng máy tính ở xa một cách gián tiếp / ngấm ngầm (implicit).
- Che đậy sự khác biệt về hệ thống lưu trữ tập tin giữa các máy chủ, hầu cho người
dùng không cần phải quan tâm đến những sự khác biệt riêng tư của chúng.
- Truyền tải dữ liệu một cách đáng tin cậy và có hiệu quả cao.
1.5.3. Những phê bình về giao thức FTP
- Mật khẩu và nội dung của tập tin được truyền qua đường dây ở thể dạng văn
bản thường (clear text), và vì vậy chúng có thể bị chặn và nội dung bị tiết lộ cho những
kẻ nghe trộm. Hiện nay, người ta có những cải tiến để né tránh được nhược điểm này.
- Cần phải có nhiều kết nối TCP/IP: một dòng dành riêng cho việc điều khiển
kết nối, một dòng riêng cho việc truyền tập tin lên, truyền tập tin xuống, hoặc liệt kê
thư mục. Các phần mềm bức tường lửa cần phải được cài đặt thêm những lôgic mới,
đế có thể lường trước được những kết nối của FTP.
- Việc thanh lọc giao thông FTP bên trình khách, khi nó hoạt động ở chế độ
năng động, dùng bức tường lửa, là một việc khó làm, vì trình khách phải tùy ứng mở
một cổng mới để tiếp nhận đòi hỏi kết nối khi nó xảy ra. Vấn đề này phần lớn được
giải quyết bằng cách chuyển FTP sang dùng ở chế độ bị động
- Người ta có thể lạm dụng tính năng ủy quyền, được cài đặt sẵn trong giao
thức, để sai khiến máy chủ gửi dữ liệu sang một cổng tùy chọn ở một máy tính thứ ba.
Xin xem thêm về FXP.
-FTP là một giao thức có tính trì trệ rất cao (high latency). Sự trì trệ gây ra do
việc, nó bắt buộc phải giải quyết một số lượng lớn các dòng lệnh khởi đầu một phiên
truyền tải.
-Phần nhận không có phương pháp để kiểm chứng tính toàn vẹn của dữ liệu
được truyền sang. Nếu kết nối truyền tải bị ngắt giữa lưng chừng thì không có cách gì,
12
trong giao thức, giúp cho phần nhận biết được rằng, tập tin nhận được là hoàn chỉnh
hay còn vẫn còn thiếu sót. Sự hỗ trợ bên ngoài, như việc dùng kiểm tra tổng MD5,
hoặc dùng kiểm độ dư tuần hoàn (cyclic redundancy checking) là một việc cần thiết.
-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").

1.6. Các loại kết nối


1.6.1. Active FTP
Trong chế độ này FTP Client kết nối tới server bằng một port ngẫu nhiên,
không có đặt quyền. (N>1023), đến cổng lệnh của máy chủ FTP ( port 21), sau đó,
ftp client lắng nghe bằng cổng N+1 và gửi lệnh port N+1 cho máy chủ, sau đó ftp
server sẽ kết nối với ftp client port 20, và bắt đầu truyền dữ liệu

Bước 1: Client gửi yêu cầu kết nối với server( với 2 port n và n +1)

Bước 2: Server gửi port ngẫu nhiên về phía client

Bước 3: Client sử dụng port để bắt đầu một kết nối

Bước 4: Gửi ack về phía khách hàng

13
Hình 2.4.2.Passive FTP
1.6.2. Passive FTP

Trong chế độ thụ động FTP client khởi xướng cả các kết nối đến máy ch ủ, giải
quyết vấn đề của bức tường lửa lọc các cổng kết nối d ữ li ệu đến cho khách hàng t ừ
máy chủ. Khi mở một kết nối FTP, khách hàng sẽ mở hai cổng ngẫu nhiên không có
đặc quyền tại địa phương (N> 1023 và N +1). Các địa chỉ liên lạc cảng đầu tiên trên
máy chủ trên cổng 21, nhưng thay vì sau đó phát hành m ột PORT l ệnh và cho phép
các máy chủ để kết nối trở lại vào cổng dữ liệu của nó, khách hàng sẽ cấp PASV lệnh.
Kết quả của việc này là máy chủ sau đó sẽ mở ra một cổng ngẫu nhiên không có đặc
quyền (P> 1023) và gửi PORT P lệnh lại cho khách hàng. Các khách hàng kh ởi t ạo k ết
nối từ cổng N +1 vào cổng P trên máy chủ để chuyển dữ liệu.

Bước 1: Client gửi yêu cầu kết nối với server( với 2 port n và n +1)

Bước 2: Server gửi port ngẫu nhiên về phía client

Bước 3: Client sử dụng port để bắt đầu một kết nối

Bước 4: Gửi ack về phía khách hàng

14
Hình 2.4.2.Passive FTP

1.7. Tìm hiểu các hệ thống FTP có sẵn


1.7.1. FTP client
Là chương trình hoạt động phía máy khách cho phép người dùng thực hiện các
thao tác trên các file .
Ví dụ như : CuteFTP, AbsoluteFTP, 3D-FTP, . . . . . . . .
Hầu hết các ứng dụng trên đều có các chức năng cơ bản là : upload, download,
delete, rename,... Các thao tác đều dựa trên việc tương tác lệnh giữa Client và Server.
Nhận dữ liệu từ máy chủ và hiển thị cho người dùng
Một số FTP Client còn cho phép lọc (filter file). Nhằm giảm mức độ công việc
cho server, tăng tốc chương trình.
Một số còn hỗ trợ chức năng resume, mà không phải bất kỳ FTP Client nào
cũng có như CuteFTP. Khi việc upload/download bị ngắt giữa chừng do sự cố nào đó
thì người dùng có thể thực hiện tiếp công việc đó ở lần sau khi bắt đầu mở máy.
Bên cạnh đó các FTP Client còn cung cấp cho người dùng một hàng đợi
(Queue) làm cho người dùng cảm thấy rất thuận tiện trong việc download/upload các
files/folders ở những thư mục khác nhau trên hệ thống.
1.7.2. FTP Server
Là chương trình hoạt động phía máy chủ, tiếp nhận yêu cầu, phản hồi thông tin
và gởi dữ liệu về cho Client. Như Server-U FTP, . . . . . .
Hầu hết các FTP Server đều có các chức năng cơ bản sau : bên cạnh phục vụ

15
các yêu cầu từ Client như yêu cầu thiết kênh truyền gửi dữ liệu, upload, download,
delete,…vv còn có thiết lập tốc độ truyền, cấm địa chỉ kết nối, quy định số kết nối sẽ
được tiếp nhận.
Ngoài ra một số Server FTP còn quản trị các user của hệ thống như : tạo user,
xoá user, cấm user, phân quyền cho user, tạo group, xóa group , thêm user vào group
hay cấp quyền cho group.Các quyền sẽ được cấp ở đây sẽ là Read (được quyền
download file), Write (được quyền upload file), Delete (được quyền xóa file), List
(được quyền duyệt thư mục), Create (được quyền tạo thư mục), Remove (được quyền
xóa thư mục) và Inherit (được quyền cho thừa kế các quyền đã có ). Mỗi user khi được
tạo ra trên hệ thống sẽ được cấp cho một đặc quyền tương ứng để thao tác trên hệ
thống như là No Privilege (không có đặc quyền nào cả chỉ là một user bình thường),
Read-only Privilege (user có đặc quyền chỉ đọc chỉ được phép vào xem thông tin trên
hệ thống), Group Administrator (user có đặc quyền này sẽ được quyền thực hiện các
thao tác trên các group như thêm group, xóa group, . . .) và System Administrator (user
có đặc quyền này sẽ có toàn quyền trên hệ thống).

1.8. Mô hình FTP


Một phiên làm việc FTP thông thường kéo theo sự tương tác của năm phần tử
phần mềm :

Một phiên làm việc FTP thông thường:


 User Interface ( Giao diện người dùng ) : Cung cấp giao diện người dùng và
điều khiển phần phiên dịch giao thức phía client.
 Client PI ( Protocol Interpreter ) : Đây là phần phiên dịch giao thức ( PI ) phía

16
client. Nó phát đi những lệnh tới phần phiên dịch giao thức của server cũng như điều
khiển quá trình chuyển dữ liệu phía client.
 Server PI : Đây là phần phiên dịch giao thức của server. Nó đáp ứng những
lệnh được phát đi bởi phần phiên dịch giao thức phía client và điều khiển qúa trình
chuyển dữ liệu phía server
 Client DTP ( Data Transfer Process ) : Đây là tiến trình chuyển dữ liệu
( DTP ) phía client, có trách nhiệm truyền thông số với tiến trình chuyển dữ liệu phía
server và hệ thống file cục bộ.
 Server DTP : Đây là tiến trình chuyển dữ liệu phía server, có trách nhiệm
truyền thông số với tiến trình chuyển dữ liệu phía client và hệ thống file từ xa.
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 sử dụng giao thức TCP:
Thường thì FTP server lắng nghe trên port thông dụng là port thứ 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ết nối đ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ì hoã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 ( escape sequences ).

Chương 2. PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH


2.1. Cài đặt FTP server

Để truy cập vào FTP Server, ta cần biết địa chỉ IP và phải có
username/password. Trước tiên cần thực hiện cài đặt FTP Server. Có thể sử dụng
công cụ hỗ trợ sẵn trong Windows hoặc cài đặt các phần mềm khác như FileZilla.
2.1.1. Cài đặt FTP Server trên Windows
Thao tác: Control Panel→Add/Remove. Programs→Add or Remove Windows
Components→Internet Information Services→Details→FTP Service.
17
Để quản trị và tinh chỉnh cấu hình FTP server, thực hiện: Control
Panel→Administrative Tools→Internet Information Services→FTPSite→Default FTP
site. Click phải và chọn Properties.
Tiến hành chỉnh sửa các thiết lập như cho phép số kết nối đồng thời tối đa, thời
gian timeout, thư mục vật lý, cho phép đăng nhập nặc danh,..vv

Hình 3.12. Cài đặt FTP Server trên Windows bước 1

Hình 3.13. Cài đặt FTP Server trên Windows bước 2

18
Hình 3.14. Cài đặt FTP Server trên Windows bước 3

Hình 3.15. Cài đặt FTP Server trên Windows bước 4

19
Hình 3.16. Cài đặt FTP Server trên Windows bước 5
FTP hoạt động trên 2 port: 21 cho Socket điều khiển và 20 (hoặc cao hơn) cho
Socket dữ liệu. FTP được định nghĩa trong RFC 959. Giống như các giao thức email,
các lệnh giao dịch giữa Client và Server tương đối dễ hiểu và ngắt thành các dòng, tuy
nhiên FTP thông qua lệnh telnet không được thuận tiện.
2.1.2. Các bước truy cập server
- Khởi tạo màn hình dòng lệnh: Start --> Run...gõ vào lệnh cmd.
- Cú pháp: FTP <IP của server>
- Sau khi kết nối thành công, xuất hiện màn hình hỏi:
User: <Nhập tên user
Pass: <Nhập mật khẩu>
Lúc này xuất hiện dấu nhắc dòng lệnh, gõ tiếp các lệnh theo nhu cầu, cú pháp như sau:
Bảng 3.12. Cú pháp lệnh của FTP
Lệnh Ý nghĩa
? Giúp đỡ.
ascii Chuyển chế độ truyền là ASCII.
binary Chuyển chế độ truyền là nhị phân.
bye Thoát khỏi FTP (giống lệnh quit).
cd Thay đổi thư mục trên máy chủ.

20
Lệnh Ý nghĩa
close Kết thúc kết nối đến máy tính khác.
Đóng kết nối hiện tại với máy tính khác, nhưng vẫn giữ môi
Close
trường
brubeck
lệnh FTP.
delete Xóa 1 file trong thư mục từ xa hiện hành (trên server).
get Để copy 1 file từ máy từ xa về máy cục bộ.
Copy file ABC trong thư mục từ xa hiện hành lên file DEF
get
trong máy
ABC DEF
cục bộ (ghi đè).
Copy file ABC trong thư mục từ xa hiện hành lên file ABC
get
trong máy
ABC
cục bộ (cùng tên).
help Xem danh sách các lệnh FTP sẵn sàng.
lcd Thay đổi thư mục trên máy ở xa.
ls Liệt kê tên các file trên thư mục hiện hành trong máy ở xa.
mkdir Tạo thư mục mới trong máy ở xa.
Copy nhiều file từ máy ở xa về máy hiện hành; sẽ được nhắc
mget y/n cho
mỗi file.
Copy tất cả các file từ máy ở xa về máy hiện hành; sẽ được
mget *
nhắc y/n cho mỗi file. Dùng ký tự đại diện *.
Copy nhiều file từ máy hiện hành lên máy ở xa; sẽ được nhắc
mput y/n cho
mỗi file.
open Mở 1 kết nối với máy tính khác.
Open
Mở 1 kết nối mới với máy tính, dùng chế độ brubeck.
brubeck
put Copy 1 file từ máy hiện hành lên máy ở xa.
pwd Xem thư mục hiện hành trên máy ở xa.
quit Thoát khỏi môi trường FTP (giống lệnh bye).
rmdir Xóa thư mục hiện hành trên máy ở xa.

21
FTP cũng chấp nhận file script như tham số dòng lệnh, nên có thể chạy tự động

2.2. Thiết kế chương trình trên nền tảng winform c#


2.2.1. Truy cập server:
Để kết nối đến máy chủ server các máy trạm phải đăng nhập vào được máy chủ
thông qua giao thức chứa đựng kết nối đến server qua IP và mật khẩu nếu có

Khi truy cập thành công chương trình sẽ hiện lên thông báo đăng nhập thành
công và hiển thị thông tin đăng nhập lên màn hình
2.2.2. Upload file lên Server

2.2.3. Doaload file từ Server

22
Chương 3. GIỚI THIỆU CHƯƠNG TRÌNH
3.1. Giới thiệu tổng quan chương trình:
FTP Server đã đáp ứng được những chức năng cơ bản mà một FTP Server phải
có như xử lý yêu cầu Upload, Download, quản lý User.

FTP Client phải đăng nhập để có thể yêu cầu kết nối đến Server và thực hiện
việc Upload, Download, Delete files theo quyền được cấp phát.

23

You might also like