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ồngBÁ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
ĐẠ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 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 Mục lục PHẦN 1: LẬP TRÌNH MẠNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT I Bối cảnh II Mục tiêu III Giới thiệu giao thức FTP IV Giao thức TCP V Mơ hình hoạt động chương trình FTP VI Kênh liệu: Kết nối kênh liệu dạng chủ động - Active FTP Kết nối kênh liệu dạng bị dộng - Passive FTP 10 VII Kiểu liệu: 11 VIII Các phương thức truyền liệu FTP 12 Stream mode 12 Block mode .12 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 chứng thực FTP 14 II Các lệnh dùng chương trình: 14 III Các mã thông điệp hồi đáp 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 Demo chương trình kênh liệu bị động 17 Demo chương trình kênh liệu chủ động 20 II Kết luận hướng phát triển 22 Ưu điểm: .22 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 CƠ SỞ LÝ THUYẾT 23 I Giới thiệu luồng (Thread) 23 II Lập trình đa luồng Java .23 Tạo quản lý luồng 23 Trạng thái phương thức Thread 24 Quyền ưu tiên luồng .26 Đồng hóa đa luồng 26 CHƯƠNG PHÂN TÍCH THIẾT KẾ HỆ THỐNG .27 I Yêu cầu toán: 27 II Phân tích: 27 III Môi trường phát triển 27 CHƯƠNG TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ .28 I Demo chương trình 28 II Đánh giá kết 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 Hình 2: Cơ chế hoạt động FTP .6 Hình 3: Giao thức TCP Hình 4: Mơ hình hoạt động giao thức FTP .8 Hình 5: Kết nối liệu dạng chủ động 10 Hình 6: Kết nối kênh 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 gửi lệnh kênh liệu bị động 18 Hình 11:Server nhận lệnh kênh liệu bị động từ client gửi qua 18 Hình 12: Client chọn kiểu liệu Binary gửi file Test.zip lên server .19 Hình 13: Server đọc file từ client dạng Binary 19 Hình 14: Sau nhận file Test.zip thành công từ Client 20 Hình 15: Client đăng nhập 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 xác nhận kênh liệu Chủ động 21 Hình 17: Client gửi lệnh RETR tải file AMD.exe từ server đóng kết nối sau nhận thành cơng 21 Hình 18: Server nhận lệnh RETR từ client gửi qua 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 Thread 23 Hình 21: Server nhận kết nối từ client khác 28 Hình 22: Server nhận lệnh tải file AMD.exe từ client 28 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 với phát triển chóng mặt khoa học kỹ thuật, kỷ nguyên mở kỷ nguyên công nghệ thông tin Nhu cầu người lớn đặc biệt ngành khoa học kỹ thuật khác cần đến hỗ trợ cơng nghệ thơng tin Mọi người đếu có nhu cầu truy cập internet để cung cấp lấy thông tin cần thiết qua máy chủ Với lý 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 người có nhu cầu truyền nhận file giao thức FTP (File Transfer Protocol) thông qua mạng Internet Trong môi trường Internet, cần truyền nhận file file có kích thước lớ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ụ lấy file 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 vấn đề này, người sử dụng thường sử dụng chương trình chuyên dùng để lấy file ReGet để tiếp tục lấy file từ vị trí xảy lỗi Người sử dụng có xu hướng lấy đồng thời nhiều file server Internet Như 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 chương trình lấy đồng thời nhiều file site server hạn chế số kết nối đồng thời tới địa IP Người sử dụng có nhu cầu lấy file nhiều giao thức khác FTP (File Transfer Protocol), HTTP (HyperText Transfer Protocol), … Tuy nhiên phạm vi luận văn chúng em hỗ trợ việc lấy file giao thức FTP Mặt khác chương trình phải tạo 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 nội dung thư mục từ xa cục Từ giúp cho việc upload download dễ dàng II Mục tiêu Mục tiêu FTP: Khuyến khích việc chia sẻ file Giúp đỡ việc sử dụng gián tiếp (thông qua chương trình) máy tính từ xa Che thơng tin người sử dụng khỏi thay đổi hệ thống lưu trữ file máy chủ (host) Truyền liệu cách tin cậy hiệu Mục tiêu đề tài: Tạo ứng dụng FTP chạy máy Nghiên cứu tìm hiểu họ giao thức TCP/IP, cách thức hoạt động, ưu nhược điểm giao thức Nghiên cứu ngơn ngữ lập trình Java III Giới thiệu giao thức FTP FTP (viết tắt cùa File Transfer Protocol dịch "Giao thức truyền tập tin") thường 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 FTP cần có hai máy tính, máy chủ (server) 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 trình chủ, lắng nghe yêu cầu dịch vụ máy tính khác mạng lưới Máy khách chạy phần mềm FTP dành cho người sử dụng dịch vụ, gọi trình khách, khởi đầu liên kết với mảy Một hai máy liên kết với nhau, máy khách xử lý số thao tác tập tin, tải lập tin lên máy chủ, tải tập tin từ máy chủ xuống máy mình, đổi tên tập tin xóa tập tin máy chủ v.v FTP thường chạy hai cổng 20 vả 21, chạy riêng TCP Trình chủ FTP lắng nghe yêu cầu dịch vụ từ kết nối vào máy trình khách FTP, cổng 21 Đường kết nối cổng 21 tạo nên dòng truyền điều khiển, cho phép dòng lệnh chuyền qua trình chủ FTP Để truyền tải tập tin qua lại hai máy, cần phải có kết nối khác Tùy thuộc vào chế độ truyền tải sử dụng, trình khách (ở chế độ chủ động - active mode) trình chủ (ở chế độ bị động - passive mode) lắng nghe yêu cầu kết nối đến từ đầu 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 liệu), trình chủ trước tiên phải kết nối vào cổng 20, trước liên lạc kết nối với trình khách Hình 2: Cơ chế hoạt động FTP IV Giao thức TCP TCP giao thức điều khiển truyền vận (Transmission Control Protocol) thuộc giao thức cốt lõi giao thức TCP/IP Thông qua TCP, ứng dụng máy chủ nối mạng liên lạc với nhau, qua chúng trao đổi giữ liệu gói tin Giao thức đảm bảo chuyển giao liệu tới nhận cách đáng tin cậy thứ tự Hơn nữa, TCP có chức phân biệt liệu nhiều ứng dụng (như dịch vụ Web dịch vụ Email) đồng thời chạy máy chủ TCP giao thức hướng kết nối (connection-oriented), có nghĩa buộc phải thiết lập kết nối trước sau đến tiến trình truyền liệu Cung cấp chế đánh số thứ tự gói tin (sequencing): sử dụng để ráp gói tin xác điểm nhận, loại bỏ gói tin trùng lặp TCP có khả truyền nhận liệu lúc — song công (full-duplex) Cơ chế báo nhận (Acknowledgement): tức A gửi gói tin cho B, B nhận gửi thơng báo cho A, trường hợp A không nhận thông báo gửi lại gói tin tới B báo nhận thơi Tính phục hồi liệu bị đường truyền Hình 3: Giao thức TCP V Mơ hình hoạt động chương trình FTP FTP giao thức dạng client/server truyền thống, nhiên thuật ngữ client thông thường thay thuật ngữ user – người dùng – thực tế người sử dụng đối tượng trực tiếp thao tác lệnh FTP máy client Bộ phần mềm FTP cài đặt thiết bị gọi tiến trình Phần mềm FTP cài đặt máy Server gọi tiến trình Server-FTP, phần máy client gọi tiến trình User-FTP Do chức điều khiển liệu sử dụng kênh khác nhau, nên mơ hình hoạt động FTP chia phần mềm thiết bị làm hai thành phần logic tương ứng với kênh Thành phần Protocol Interpreter (PI) thành phần quản lý kênh điều khiển, với chức phát nhận lệnh Thành phần Data Transfer Process (DTP) có chức gửi nhận liệu 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 giao diện người dùng FTP - thành phần khơng có phía server Do đó, có hai tiến trình xảy phía server, ba tiến trình phía client Các tiến trình gắn với mơ hình FTP để mơ tả chi tiết hoạt động giao thức FTP Hình 4: Mơ hình hoạt động giao thức FTP Các tiến trình bên phía Client -User Interface: chương trình chạy máy tính, cung cấp giao diện xử lý cho người dùng Nó cho phép sử dụng lệnh đơn giản hướng người dùng, cho phép người điều khiển phiên FTP theo dõi thông tin kết xảy 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 việc phát yêu cầu tới phía Server- PI Khi kết nối thiết lập xử lý lệnh nhận giao diện người dùng, gửi chúng tới Server-PI, nhận phản hồi trở lại Nó quản lý tiến trình User DTP -User Data Transfer Process (User-DTP): phận DTP nằm phía người dùng, làm nhiệm vụ gửi nhận liệu từ Server-DTP User-DTP thiết lập lắng nghe yêu cầu kết nối kênh liệu 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 server Nó lắng nghe yêu cầu kết nối hướng tới từ users cổng dành riêng Khi kết nối thiết lập, nhận lệnh từ phía User-PI, trả lời lại, quản lý tiến trình truyền liệu server -Server DataTransfer Process (Server-DTP): làm nhiệm vụ gữi nhận file từ phận User-DTP Server-DTP vừa làm nhiệm thiết lập kết nối kênh liệu lắng nghe kết nối kênh liệu từ User Nó tương tác với server file hộ thống cục để đọc chép file Trong thời gian phiên làm việc FTP có hai kết nối mạng riêng biệt, PI DTP Kết nối PI gọi kết nối điều khiển (control connection) Kết nối DTP gọi kết nối liệu (data connection) Các kết nối điều khiển liệu thường sử dụng giao thức TCP Thường FTP server lắng nghe port thơng dụng port 21 cho yêu cầu kết nối điều khiển Việc lựa chọn port cho kết nối liệu phụ thuộc vào lệnh phát kênh điều khiển Theo quy ước, phía client gửi thông báo điều khiển cho biết số port phía client chuẩn bị sẵn để nhận yêu cầu kết nối liệu vào Việc sử dụng kết nối riêng biệt cho điều khiển liệu có lợi hai kết nối lựa chọn chất lượng dịch vụ khác như: khoảng trì hỗn tối thiểu cho kết nối điều khiển cực đại cho kết nối liệu, tránh vấn đề việc cung cấp mã thoát VI Kênh liệu: Mỗi cần phải truyền liệu server Client, kênh liệu cần phải tạo Kênh liệu kết nối phận User-DTP với Server-DTP Kết nối cần thiết cho hoạt động truyền file trực tiếp (gửi nhận file) việc truyền liệu ngầm, yêu cầu danh sách file thư mục server Chuẩn FTP chì định hai phương thức khác để tạo kênh liệu Khác biệt cua hai phương thức mặt thiết bị: phía Client hay phía server phía đưa yêu cầu khởi tạo kết nối Điều nghe qua đơn giàn, khơng thực lại quan trọng Kết nối kênh 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 liệu việc mở cổng TCP cho phía User-DTP Phía server sử dụng cổng dành riêng, cổng 20 cho kênh liệu Trên máy Client, giá trị cổng chọn theo mặc định cổng sử dụng kênh điều khiển, nhiên phía Client ln chọn hai cổng riêng biệt cho hai kênh Giả sử phía User-PI thiết lập kết nối điều khiển từ cổng 1678 Lệnh USER PASS Ý nghĩa Gửi tên đăng nhập lên máy chủ Gửi mật lên server (khơng mã hóa) tên đăng nhập lên server SYS Báo cáo loại hệ điều hành hệ thống từ xa CWD Thay đổi thư mục làm việc máy chủ LIST/NLIST Gửi danh sách tên file thư mục PWD Cho biết tên thư mục MKD Tạo thư mục RMD Xóa thư mục TYPE Chỉ thể kiểu file PASV Khởi tạo chế độ bị động, máy khách khởi tạo kết nối liệu đến máy chủ PORT Chỉ số cổng mà phần kết nối liệu phía máy khách khởi tạo RETR Tải liệu từ máy chủ STOR Gửi liệu từ máy khách lên máy chủ III Các mã thơng điệp hồi đáp chương trình: Đăng nhập: Client: Client gửi thông tin đăng nhập username password lên server USER PASS Server: 120: dịch vụ sẵn sàng nnn phút 220: dịch vụ sẵn sàng cho người dùng 331: username OK, cần password 230: đăng nhập thành công 257: "pathname" tạo 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 password Download: 220: dịch vụ sẵn sàng cho người dùng 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 trạng thái ổn, kết nối 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 trạng thái ổn, kết nối 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 Demo chương trình kênh liệu bị động 17 Hình 10: Client đăng nhập gửi lệnh kênh liệu bị động Hình 11: Server nhận lệnh kênh liệu bị động từ client gửi qua 18 Hình 12: Client chọn kiểu liệu Binary gửi file Test.zip lên server Hình 13: Server đọc file từ client dạng Binary 19