Nhất là các công ty hay tổ chức có nhiều chi nhánh, thì việc tạo lập một máy chủ FTP để đồng bộ hóa dữ liệu làm việc sẽ góp phần không nhỏ trong việc phát triển của công ty.. Giao thức F
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
SINH VIÊN THỰC HIỆN:
Nguyễn Huy Hòa LỚP: 19TCLC_DT1 NHÓM: 19N15B
Võ Tuấn Mạnh Hùng LỚP: 19TCLC_DT1 NHÓM: 19N15B Trần Nguyên Nam LỚP: 19TCLC_DT1 NHÓM: 19N15B
GIẢNG VIÊN HƯỚNG DẪN: Nguyễn Thế Xuân Ly DOANH NGHIỆP HƯỚNG DẪN:
Trung tâm Công nghệ Thông tin, VNPT Quảng Nam
KS Nguyễn Đình Châu
Đà Nẵng, 12/2021
Trang 2MỤC LỤC
1
MỤC LỤC 2
DANH SÁCH HÌNH VẼ 3
DANH SÁCH BẢNG BIỂU 4
DANH SÁCH CÁC TỪ VIẾT TẮT 5
MỞ ĐẦU (GIỚI THIỆU ĐỀ TÀI) 6
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 7
1.1 Hệ điều hành Linux 7
1.2 Giao thức TCP và UDP 8
1.3 Giao thức FTP 11
1.4 Giao thức TFTP 15
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 18
2.1 Phân tích yêu cầu và tìm kiếm giải pháp 18
2.2 Giải pháp cho đề tài 20
2.3 Thiết kế hệ thống 21
CHƯƠNG 3 TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 23
3.1 Triển khai 23
3.2 Đánh giá kết quả 29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 29
TÀI LIỆU THAM KHẢO 31
Trang 3DANH SÁCH HÌNH VẼ
Hình 1 Giao diện hệ điều hành Lubuntu 7
Hình 2 Cấu trúc gói tin TCP 8
Hình 3 Mô tả thiết lập phiên FTP 9
Hình 4 Cấu trúc gói tin UDP 10
Hình 5 Minh họa tổng quát UDP 11
Hình 6 Minh họa tổng quát FTP 12
Hình 7 Minh họa hoạt động Active FTP 13
Hình 8 Minh họa hoạt động Passive FTP 14
Hình 9 Minh họa "Đọc" và "Ghi" của TFTP 17
Hình 10 Minh họa "Đọc" và "Ghi" khi có tùy chọn blocksize 17
Hình 11 Mô hình ứng dụng cho đề tài 20
Hình 12 Sơ đồ Use Case theo tác nhân User (FTP Client) 21
Hình 13 Sơ đồ Use Case theo tác nhân Admin (FTP Server) 21
Hình 14 Sơ đồ Use Case theo tác nhân User (TFTP Client) 22
Hình 15 Sơ đồ Use Case theo tác nhân Admin (TFTP Server) 22
Hình 16 Giao diện đăng nhập dịch vụ FTP 23
Hình 17 Giao diện chính dịch vụ TFTP 23
Hình 18 Lựa chọn hướng truyền file cho TFTP 24
Hình 19 Lựa chọn chế độ truyền file cho TFTP 24
Hình 20 Lựa chọn tùy chọn blocksize cho TFTP 25
Hình 21 Giao diện người dùng kết nối thành công đến FTP Server (Active mode) 25
Hình 22 Giao diện người dùng kết nối thành công đến FTP Client (Passive mode) 26
Hình 23 Giao diện khi chọn chức năng tạo thư mục mới 26
Hình 24 Giao diện khi chọn chức năng tạo tệp tin 26
Hình 25 Giao diện khi chọn chức năng Upload 27
Hình 26 Giao diện khi chọn chức năng xóa 27
Hình 27 Giao diện khi chọn chức năng đổi tên 27
Hình 28 Giao diện khi chọn chức năng Download 28
Hình 29 Giao diện chính của TFTP Server 28
Hình 30 Giao diện chính của FTP Server 29
Trang 4DANH SÁCH BẢNG BIỂU
Bảng 1 Chi tiết thành phần cấu trúc gói tin TCP 9
Bảng 2 Chi tiết thành phần cấu trúc gói tin UDP 10
Bảng 3 So sánh TCP và UDP 11
Bảng 4 So sánh Active FTP và Passive FTP 15
Bảng 5 Các loại gói tin TFTP 16
Bảng 6 Ràng buộc về thiết kế và thực thi 19
Bảng 7 Yêu cầu phi chức năng 19
Trang 5DANH SÁCH CÁC TỪ VIẾT TẮT
STT Ký hiệu chữ viết tắt Chữ viết đầy đủ
Trang 6MỞ ĐẦU (GIỚI THIỆU ĐỀ TÀI)
Ngày nay, tin học nói chung và ngành Công nghệ thông tin nói riêng đã có những bước tiến nhanh chóng về ứng dụng của nó trong mọi lĩnh của cuộc sống trên phạm vi toàn thế giới nói chung và Việt Nam nói riêng Công nghệ thông tin được người ta quan tâm và nhắc đến nhiều hơn bao giờ hết vì nó đã và sẽ là một phần không thể thiếu trong cuộc sống hiện đại, là một xu hướng phát triển tất yếu của xã hội, góp phần đẩy mạnh công nghiệp hóa hiện đại hóa đất nước, tiến đến nền kinh tế tri thức Máy vi tính cùng với những phần mềm là công cụ đắc lực giúp ta quản lý, tổ chức, sắp xếp và xử lý công việc một cách dễ dàng, nhanh chóng và chính xác
Hiện nay, việc chia sẻ dữ liệu ngày một trở nên phổ biến đối với các cá nhân, một công ty, hay một trường học Nhất là các công ty hay tổ chức có nhiều chi nhánh, thì việc tạo lập một máy chủ FTP để đồng bộ hóa dữ liệu làm việc sẽ góp phần không nhỏ trong việc phát triển của công ty Giao thức File Transfer Protocol (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 Ta có thể gửi đi và nhận những tệp tin có dung lượng lên đến vài trăm MB mà không phải lo lắng nó không được chuyển đi Ngoài ra, ta có Trivial File Transfer Protocol (TFTP), là
1 giao thức truyền file đơn giản, cho phép người dùng có thể truyền hoặc tải các tệp tin
từ trên các remote host như switch, router, server TFTP được thiết kế nhỏ và dễ thực hiện, và do đó nó thiếu hầu hết các tính năng nâng cao của các giao thức truyền tệp TFTP chỉ đọc và ghi tệp từ các máy chủ từ xa Nó không thể liệt kê, xóa, hoặc đổi tên các tập tin hoặc thư mục và cũng không có xác thực giữa client và server TFTP là công nghệ truyền file giữa các thiết bị mạng và là phiên bản đơn giản hóa của FTP Với đề tài này, chúng em mong muốn tạo ra một phần mềm thực tiễn hỗ trợ công ty đang triển khai
hệ thống lưu trữ và tải lên/ tải xuống tập tin dựa trên giao thức FTP và TFTP
Chúng em chân thành cảm ơn sự hướng dẫn, chỉ bảo tận tình của thầy Nguyễn Thế Xuân Ly - giảng viên trường Đại học Bách Khoa – Đại học Đà Nẵng Thầy đã cho chúng
em nhiều kiến thức quan trọng và nhiều ý kiến đóng góp quý giá
Trang 7CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
1.1 Hệ điều hành Linux
1.1.1 Lịch sử
Vào năm 1991, khi đang theo học tại đại học Helsinki, ông Linus Torvalds đã bắt đầu nảy sinh ý tưởng cho một hệ điều hành mới thay thế cho hệ điều hành cũ kỹ của nền giáo dục hiện tại Chính vì vậy ông đã bắt tay vào viết những dòng lệnh đầu tiên của Linux, đặt nền móng cho sự phát triển mạnh mẽ của hệ điều hành Linux hiện nay Suốt
3 năm nghiên cứu ròng rã, cuối cùng ông cũng cho ra được hệ điều hành đầu tiên là Linux 1.0, đặt nền móng cho một đế chế mạnh mẽ sau này, cạnh tranh trực tiếp với Window hay Mac OS
1.1.2 Các phiên bản
Linux bao gồm nhiều phiên bản, vài cái tên nối tiếng và phổ biến như: Ubuntu,
Debian, Fedora, Kali, Red Hat, PopOS!… Ubuntu là một nhánh của Debian Linux,
được xem là loại HĐH dùng nhân Linux phổ biến nhất
Hình 1 Giao diện hệ điều hành Lubuntu
a Ưu điểm nổi bật của hệ điều hành Linux
- Linh hoạt
- Hoàn toàn miễn phí
- Mượt mà với cả “máy yếu”
- Giao diện phong phú
Trang 8- Hoạt đổng ổn định, hiệu năng cao
- Bảo mật cao
b Nhược điểm của hệ điều hành Linux
- Ứng dụng hỗ trợ không được phong phú
- Một số nhà sản xuất không sản xuất Driver cho Linux
- Khá mất thời gian để làm quen
b Đặc điểm
- Cơ chế đánh số thứ tự gói tin (sequencing)
- Có cơ chế báo nhận (Acknowledgement)
- Phục hồi dữ liệu bị mất trên đường truyền
- Cơ chế full-duplex (truyền và nhận dữ liệu cùng lúc)
- Tránh tắc nghẽn (Flow control)
c Cấu trúc gói tin TCP
Hình 2 Cấu trúc gói tin TCP
Trang 9Thành phần Chức năng/ Đặc điểm
Source port (16 bit) Số hiệu của cổng tại máy tính gửi
Destination port (16 bit) Số hiệu của cổng tại máy tính nhận
Sequence number (32 bit) Dùng để đánh số thứ tự gói tin (từ số sequence nó
sẽ tính ra được số byte đã được truyền) Acknowledge number (32 bit) Dùng để báo đã nhận được gói tin nào và mong
nhận được byte mang số thứ tự nào tiếp theo Header length (4 bit) Cho biết toàn bộ header dài bao nhiêu tính theo đơn
vị word Các bit reserved (4 bit) Đều được thiết lập bằng 0
Các bit control (9 bit) Các bit dùng để điều khiển cờ (flag) ACK, cờ
Sequence,…
Window size (16 bit) Số lượng byte được thiết bị sẵn sàng tiếp nhận Checksum (16 bit) Kiểm tra lỗi của toàn bộ TCP Segment
Urgent Pointer (16 bit) Sử dụng trong trường hợp cần ưu tiên dữ liệu
Options (tối đa 32 bit) Cho phép thêm vào TCP các tính năng khác
Bảng 1 Chi tiết thành phần cấu trúc gói tin TCP
d Cách thức hoạt động
- Phiên TCP được thiết lập qua bắt tay 3 bước
Hình 3 Mô tả thiết lập phiên FTP
Trang 10- Truyền tải dữ liệu nhanh
- Không đảm báo tính tin cậy
- Không đánh số thứ tự các đơn vị dữ liệu được truyền
- Không có cơ chế phục hồi dữ liệu
c Cấu trúc gói tin UDP
- Cấu trúc gói tin UDP thì đơn giản hơn rất nhiều so với TCP
Hình 4 Cấu trúc gói tin UDP
Source port (16 bit) Xác định cổng của người gửi thông tin
Destination port (16 bit) Xác định cổng nhận thông tin
UDP length (16 bit) Xác định chiều dài của toàn bộ datagram: phần
header và dữ liệu Chiều dài tối thiểu là 8 byte khi gói tin không có dữ liệu, chỉ có header
UDP checksum (16 bit) Kiểm tra lỗi của phần header và dữ liệu
Bảng 2 Chi tiết thành phần cấu trúc gói tin UDP
Trang 11các gói tiếp theo Nếu bên nhận bỏ lỡ một vài gói tin UDP, họ sẽ mất vì bên gửi không gửi lại chúng Do đó thiết bị có thể giao tiếp nhanh hơn
Hình 5 Minh họa tổng quát UDP
Gửi dữ liệu dạng luồng byte Gửi đi Datagram
Gửi đầy đủ gói tin Cho phép thất thoát gói tin
Đảm bảo việc truyền dữ liệu Không đảm bảo truyền dữ liệu
Có sắp xếp thứ tự các gói tin Không sắp xếp thứ tự các gói tin
Tốc độ truyền chậm hơn UDP Tốc độ truyền nhanh
Trang 12Giao 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
Data connection: Mỗi khi dữ liệu được truyền, 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
Hình 6 Minh họa tổng quát FTP
- 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
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
Trang 135 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
1.3.3 Active FTP và Passive FTP
e Active FTP
- Client sẽ kết nối từ một cổng N (N > 1023) đến cổng điều khiển của FTP server, cổng 21 Sau đó, client sẽ lắng nghe trên cổng N+1 và gửi 1 câu lệnh “PORT N+1” đến FTP server Server sẽ kết nối tới cổng dữ liệu của client bằng cổng dữ liệu mặc
định của nó, cổng 20
- Đứng ở góc độ Firewall Server thì để hỗ trợ cho chế độ Active FTP này cần phải
mở những luồng xử lý sau
+ FTP Server phải mở port 21 để đón nhận tất cả kết nối tới của Client
+ FTP Server phải mở kết nối từ cổng 21 đến cổng > 1023 để trả lời yêu cầu của Client
+ FTP Server phải mở kết nối từ cổng 20 đến cổng > 1023 để tạo kết nối truyền dữ liệu với Client
+ FTP Server phải mở kết nối từ cổng > 1023 đến cổng 20 để xác nhận kết nối với Client
Trang 14- Ở bước 1, từ command port 1026 Client kết nối tới control port 21 của Server và gửi lệnh PORT 1027 Server gửi gói tin ACK (hiểu đơn giản là chấp nhận) về cho Client ở bước 2 Bước 3 Server khởi tạo kết nối từ port data 20 tới port 1027 của Client (port 1027 là port Client gửi cho Server ở bước 1) Và cuối cùng là Client gửi gói tin ACK về cho Server
- Vấn đề chính gặp phải khi sử dụng Active FTP là có thể bị mất kết nối ở phía Client Client không khởi tạo kết nối tới port data của Server mà nó đơn giản chỉ nói với Server là tôi đang lắng nghe trên port 1027 và chờ Server kết nối tới Nếu có tồn tại Firewall đứng trước Client thì đôi khi kết nối sẽ bị chặn
- Ở phía Server, để hỗ trợ chế độ Passive FTP này thì cần phải mở những luồng giao tiếp như sau:
+ FTP Server phải mở cổng 21 nhận kết nối từ mọi Client
+ FTP Server phải mở các kết nối từ cổng 21 đi tới các cổng > 1023 để trả lời (response) cho Client
+ FTP Server phải mở các cổng > 1023 để nhận kết nối cổng truyền dữ liệu từ phía Client
+ FTP Server phải mở các cổng > 1023 tới các cổng > 1023 để trả lời chấp nhận kết nối và truyền dữ liệu với Client
Hình 8 Minh họa hoạt động Passive FTP
Trang 15- Tại bước 1 Client liên lạc với Server trên command port và đưa ra câu lệnh PASV Server trả lời ở bước 2 với PORT 1024 và nói với Client đây là port dữ liệu tôi đang lắng nghe Bước 3 Client khởi tạo data connection từ port Data của nó tới port 1024 mà Server đã gửi cho nó Cuối cùng là Server gửi lại gói tin ACK chấp nhận
c So sánh giữa Active FTP và Passive FTP
Client thiết lập kênh điều khiển, Server
thiết lập kênh dữ liệu
Client thiết lập kênh điều khiển, kênh dữ liệu
Cung cấp bảo mật cho FTP Server Không cung cấp bảo mật cho FTP Server
Có thể gặp sự cố vì tường lửa Không gặp sự cố kết nối vì tường lửa Không được sử dụng làm chế độ mặc
định của trình duyệt
Được sử dụng làm chế độ mặc định của Browser
FTP Client xác nhận kênh dữ liệu FTP Server xác nhận kênh dữ liệu
Client gửi lệnh PORT đến Server Client gửi lệnh PASV đến Server
bộ nhớ hoặc ổ đĩa không đủ dung lượng Do không được bảo mật trong quá trình truyền tệp nên TFTP thường được ứng dụng trong mạng cục bộ (LAN) để backup, import config IOS trên các thiết bị switch router firewall, hoặc cài đặt license cho các thiết bị này TFTP là công nghệ truyền file giữa các thiết bị mạng và là phiên bản đơn giản hóa của File Transfer Protocol (FTP) mạnh mẽ hơn TFTP được phát triển vào những năm
1970 dành cho các máy tính thiếu đủ bộ nhớ hoặc không gian ổ đĩa để cung cấp hỗ trợ FTP đầy đủ Ngày nay, TFTP được tìm thấy trên các router băng thông rộng tiêu dùng
và router mạng thương mại
1.4.2 Phương thức hoạt động
- TFTP sử dụng UDP để giao tiếp tệp, do đó nó lắng nghe yêu cầu sử dụng port 69 Sau khi nhận được yêu cầu từ máy khách, Server sử dụng port trong khoảng cho phép
để giao tiếp tệp
Trang 16- Có tổng cộng 6 loại gói tin TFTP:
Bảng 5 Các loại gói tin TFTP
- Một máy khách thường gửi RRQ một tệp nào đó trên Server để lưu về máy khánh
và khách chỉ gửi WRQ khi ta muốn lưu một tệp nào đó trong bộ nhớ Server
- Khi điều này được thực hiện, một kết nối được thiết lập và tệp được vận chuyển dưới dạng các gói nhỏ
- Tập tin được chia thành các gói nhỏ, trong đó mỗi gói mặc định sẽ có kích thước là
512 byte Nếu header của WRQ hoặc RRQ có tùy chọn blocksize thì kích thước của gói tin bằng giá trị blocksize ngoại trừ gói tin dữ liệu cuối cùng (có kích thước < kích thước gói dữ liệu trước đó)
- Khi một gói dữ liệu được truyền từ A đến B, máy A sẽ đợi nhận được thông báo từ máy B rằng gói đó đã được nhận bằng cách gửi gói xác nhận Khi nhận được xác nhận,
A sẽ gửi gói dữ liệu tiếp theo Điều này được thực hiện cho đến khi gói xác nhận cho gói dữ liệu cuối cùng được truyền từ phía máy B đến máy A