Professional Documents
Culture Documents
Hải Phòng, 2023
Hải Phòng, 2023
Hải Phòng, 2023
i
MỤC LỤC
ii
CHƯƠNG 2: CÀI ĐẶT FTP TRÊN WS 2012.........................................................
2.1 Cài đặt ftp trên ws 2012..............................................................................12
iii
LỜI NÓI ĐẦ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 đồ
iv
1 TỔNG QUAN VỀ FTP:
1.1 FTP là gì?
FTP (viết tắt của File Transfer Protocol) là giao thức truyền tệp tin khá phổ biến
hiện nay.
1.2 Mục đích sử dụng
Được sử dụng để trao đổi tập tin qua mạng lưới truyền thông sử dụng TCP/IP
(internet, mạng nội bộ, …)
Sử để tải xuống máy tính các file từ máy chủ.
Tại sao nên dùng FTP: Mặc dù việc truyền file từ hệ thống này sang hệ thống
khác rất đơn giản và dễ hiểu, nhưng đôi khi xảy ra những vấn đề khác nhau. Ví dụ, 2
hệ thống có thể có các quy ước tập tin khác nhau, 2 hệ thống có các cách khác nhau để
thể hiện văn bản và dữ liệu hay 2 hệ thống có cấu trúc thư mục khác nhau, … Giao
thức FTP khắc phục những vấn đề này bằng cách thiết lập 2 kết nối giữa các máy chủ.
Một kết nối để sử dụng truyền dữ liệu, 1 kết nối còn lại được sử dụng để điều khiển kết
nối.
1
1.3 Mô hình và nguyên lí hoạt động của FTP:
1.3.1 Kết nối TCP trong FTP
Giống như hầu hết các giao thức TCP/IP, FTP dựa trên mô hình Client – Server.
Tuy nhiên, khác với các ứng dụng khác chạy trên nền TCP/IP, FTP cần tới 2 kết nối
TCP:
Control connection (sử dụng port 21 – trên server): Đây là kết nối TCP logic
chính được tạo ra khi phiên làm việc được thiết lập. Nó được thực hiện giữa các quá
trình điều khiển. Nó được duy trì trong suốt phiên làm việc và chỉ cho các thông tin
điều khiển đi qua như lệnh hay response (phản hồi)
Data connection (sử dụng port 20 – trên server): Kết nối này sử dụng các quy tắc
rất phức tạp vì các loại dữ liệu có thể khác nhau. Nó được thực hiện giữa các quá trình
truyền dữ liệu. Kết nối này mở khi có lệnh chuyển tệp và đóng khi tệp truyền xong.
1.3.2. Mô hình FTP:
Sơ đồ minh họa:
2
Do chức năng điều khiển và dữ liệu được truyền tải bằng cách sử dụng các kênh
riêng biệt nên mô hình FTP chia mỗi thiết bị thành 2 phần giao thức logic chịu trách
nhiệm cho mỗi kết nối ở trên:
Protocol interpreter (PI): Là thành phần quản lý kênh điều khiển, phát và nhận
lệnh và trả lời.
Data transfer process (DTP): chịu trách nhiệm gửi và nhận dữ liệu giữa client và
server.
1.3.4 Chức năng từng phần trong mô hình 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.
3
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 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 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ủa FTP
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.
4
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.
5
1.4 Một số lệnh command sử dụng trên FTP
6
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, …
Cấu trúc của FTP reply code : Xyz.
Ý nghĩa của X trong FTP reply code:
Reply code Format Description
1yz Đã khởi tạo hành động. Chờ 1 reply trước khi gửi 1 lệnh khác
2yz Hành động hoàn thành. Có thể gửi lệnh mới
3yz Lệnh được chấp nhận. Nhưng bị giữ do thiếu thông tin
4yz Lệnh không được chấp nhận hoặc không hoàn thành. Tình trạng
lỗi tồn tại tạm thời. Lệnh có thể được ban hanh lại
5yz Lệnh không được chấp nhận hoặc đã hoàn thành. Không ban hành lại
lệnh, ban hành lại lệnh sẽ dẫn đến cùng một lỗi
Tham số y cung cấp thêm thông tin như bảng dưới. z cũng cung cấp thêm thông
tin nhưng ý nghĩa chính xác có thể khác nhau giữa các cài đặt.
Reply code format Description
X0z Lỗi cú pháp hoặc lệnh bất hợp pháp
X1z Trả lời Request thông tin
X2z Trả lời đề cập đến Connection management
X3z Trả lời lệnh xác thực
X4z Trả lời trạng thái máy chủ
Chú ý: Điều quan trọng cần lưu ý trong FTP, các Request không nhất thiết phải
được thực hiện theo cùng 1 trình tự khi đã gửi, các giao dịch (transactions) và trả lời
(reply) có thể được xen kẽ.
1.6 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 đảm bảo 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(không mã hóa).
Điều này làm 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ọ.
7
1.7 Kênh dữ liệu trong FTP
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.
Mỗi khi cần phải truyền dữ liệu giữa các 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à 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.
Để tạo ra kênh dữ liệu, FTP sử dụng 2 phương thức khác nhau: Normal (Active)
Data Connections (mặc định) và Passive Data Connections.
Khác biệt giữa 2 phương thức này là phía Client hay bên Server đưa ra yêu cầu
khởi tạo kết nối.
1.7.1. Normal (Active) Data Connections
Phương thức tạo kết nối dữ liệu bình thường hay còn gọi là Kết nối kênh dữ liệu
ở dạng chủ động.
Phía Server-DTP tạo kênh dữ liệu bằng cách mở một cổng kết nối tới User-DTP.
Server sử dụng cổng đặc biệt được dành riêng cho kết nối dữ liệu là cổng số 20. Trên
máy Client, cổng mặc định được sử dụng chính là cổng được sử dụng để kết nối điều
khiển, nhưng Server sẽ thường chọn mỗi cổng khác nhau cho mỗi chuyển giao.
1.7.2. Passive Data Connections
Phương thức tạo kết nối bị động.
Server sẽ chấp nhận 1 yêu cầu kết nối dữ liệu được khởi tạo từ Client. Server sẽ
trả lời lại phía Client với địa chỉ IP cũng như địa chỉ cổng mà Server sẽ sử dụng.
Sau đó phía Server-DTP lắng nghe trên cổng này một kết nối TCP đến từ User-
DTP.
Theo mặc định, phía Client sẽ sử dụng cùng cổng mà nó sử dụng cho Control
Connection như trong trường hợp chủ động. Tuy nhiên, trong phương pháp này, Client
cũng có thể chọn sử dụng một cổng khác cho Data Connection nếu cần thiết
8
1.8. Các phương thức truyền dữ liệu trong FTP
Khi Client-DTP và Server-DTP thiết lập xong kênh dữ liệu, 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, tùy 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.
1.8.1. Stream mode
Dữ liệu truyền đi liên tiếp dưới dạng các byte không cấu trúc.
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ó trường tiêu đề nhất định
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 khi thiết bị gửi ngắt kênh kết nối dữ liệu khi đã truyền dữ liệu xong.
Được sử dụng nhiều nhất trong 3 phương thức trong triển khai FTP thực tế. Do:
Là phương thức mặc định và đơn giản nhất.
Là phương thức phổ biến nhất, vì nó xử lí các file chỉ đơn thuần là xử lí dòng
byte, mà không cần để ý tới nội dung.
Không tốn 1 lượng byte “overload” nào để thông báo Header.
11
CHƯƠNG 2: CÀI ĐẶT FTP TRÊN WS 2012
2.1 Cài đặt ftp trên ws 2012
Bước 1: Cài đặt máy chủ FTP trên Windows Server
Mở “Windows Server Control Panel” và tìm “Add roles and features”.
12
Chọn máy chủ của bạn
Trong cửa sổ tiếp theo, hãy tích vào “IIS web server”.
13
Cài đặt FTP Server trên Windows Server
Chọn tiếp “Add features”
Ấn Next tiếp.
14
Ở màn hình “Role services”, tích vào “FTP server”.
15
Như vậy chúng ta đã hoàn tất bước 1, cài đặt FTP lên Windows Server.
Bước 2: Tạo một trang FTP trên máy chủ Windows
Mở “IIS Manager”. Nhấp chuột phải vào “Sites” và chọn “Add FTP Site” từ
menu.
16
Nhập tên trang web và đường dẫn đến thư mục.
17
Tiếp theo, chọn địa chỉ IP của bạn trong danh sách thả xuống. Tích chọn “No
SSL”.
18
Trong cửa sổ tiếp theo, chọn “Basic for authentication”. Chọn tiếp
“Authorization – Specified roles or groups”, nhập tên của nhóm người dùng FTP (ví
dụ ftp-group). Tích chọn vào cho phép “read” và “write”. Sau đó ấn “Finish”.
19
Trang web của bạn sẽ xuất hiện như dưới đây.
20
Bước 3: Tạo nhóm người dùng
Tạo một nhóm Windows là cần thiết để xác định người dùng sẽ có quyền truy
cập vào máy chủ ftp. Mở Computer Management. Trong menu bên phải, chọn Groups.
Click chuột phải và chọn tạo nhóm mới.
21
Nhập tên của nhóm, một mô tả nếu cần thiết. Để thêm người dùng, nhấp vào Add.
Nhập tên User, để kiểm tra, bấm Check Names. Nếu người dùng Windows tồn tại,
bấm Ok.
22
Sau khi mọi thứ được thêm vào, hãy tạo một nhóm bằng nút Create .
Bước 4: Phân vùng người dùng
Để mỗi người dùng có được thư mục riêng của mình và không có quyền truy cập
vào các tệp khác sau khi kết nối với máy chủ, cần phải thiết lập isolation. Để thực hiện
việc này, hãy mở cài đặt trang ftp của bạn và chọn FTP User Isolation.
23
Sau đó, click chuột phải vào tên site ftp của bạn và chọn Add Virtual Directory.
Trong trường Alias , nhập tên hiệu hoặc tên, trong trường đường dẫn nhập đường
dẫn đến thư mục người dùng, để thực hiện việc này, tạo thư mục con trong thư mục
trang web ftp trên máy chủ Windows của bạn. Nhấn Ok.
24
Tiếp theo, cài đặt quyền truy cập cho folder ảo này. Chọn ftp site của bạn và
chọn Edit Permission.
25
Ở màn hình tiếp theo, chọn Disable inheritance, chọn tiếp option đầu tiên trong
màn hình confirm, rồi bấm Apply – Ok.
26
Quay trở lại tab Security và nhấp vào nút Edit.
Xóa các nhóm người dùng không cần thiết, điều này để đảm bảo rằng chỉ chủ sở
hữu thư mục mới được phép truy cập.
Bây giờ thêm một người dùng Windows, người sẽ có quyền truy cập đầy đủ vào
thư mục. Nhấp vào nút Add.
Nhập tên người dùng, để kiểm tra, bấm Check Names. Nếu người dùng tồn tại,
nhấp Ok.
Tiếp theo bạn cần thêm quyền để kiểm soát hoàn toàn thư mục. Chọn người dùng
đã tạo và tích chọn Allow full quyền.Tiếp theo, nhấp vào Áp dụng – Ok.
27