Tìm hiểu lập trình socket trong java và ứng dụng truyền file qua mạng
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… ĐỒ ÁN …………………………………………………………………………………… …………………………………………………………………………………… CÔNG LẬP TRÌNH MẠNG …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Đề tài: …………………………………………………………………………………… TÌM HIỂU LẬP TRÌNH SOCKET TCP TRONG JAVA VÀ …………………………………………………………………………………… ỨNG DỤNG TRUYỀN FILE QUA MẠNG …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… GVHD : ThS Trần Hồ Thuỷ Tiên …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Lớp : 10T4 …………………………………………………………………………………… Nhóm : 11B …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… Đà Nẵng, tháng năm 2014 …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… ĐỒ ÁN LẬP TRÌNH MẠNG LỜI CẢM ƠN Để hoàn thành Đồ án Lập Trình Mạng với đề tài “ Tìm hiểu lập trình Socket Java ứng dụng truyền File qua mạng”, bên cạnh nổ lực nhóm vận dụng kiến thức tiếp thu trường, tìm tòi học hỏi thu thập thông tin số liệu có liên quan đến đề tài chúng em nhận giúp đỡ, hướng dẫn tận tình thầy cô với lời động viên khuyến khích từ phía bạn bè lúc em gặp khó khăn Chúng em xin gửi lời cảm ơn đến Ban chủ nhiệm khoa CNTT Đại Học Bách Khoa Đà Nẵng Em xin chân thành cảm Cô Trần Hồ Thủy Tiên, người hướng dẫn em làm đề tài này, cô tạo điều kiện thuận lợi nguồn động lực quan trọng để em hoàn thành đề tài Em xin gửi lời cảm ơn đến thầy Mai Văn Hà.Thầy trực tiếp giảng dạy cấp cho chúng em kiến thức đầy đủ tổng quan môn Lập Trình Mạng tạo điều kiện tốt cho em áp dụng số phương pháp vào đề tài nhóm Xin cảm ơn bạn khóa 10T bạn thuộc nhóm học phần 11B người hỗ trợ chúng em hoàn thành đồ án Với thời gian khả hạn chế, Đề tài đồ án chúng em tránh khỏi thiếu sót Chúng em mong nhận góp ý chân tình từ thầy cô bạn Chúng em xin chân thành cảm ơn! ĐỒ ÁN LẬP TRÌNH MẠNG MỤC LỤC BỐI CẢNH ĐỀ TÀI, MỤC TIÊU, NHIỆM VỤ CƠ SỞ LÝ THUYẾT Căn mạng máy tính Mô hình tham chiếu OSI 10 Mô hình kiến trúc TCP/IP 13 Địa IP-Các địa dành riêng, cổng giao tiêp (PORT) 14 Giao thức mạng 17 Mô hình Client/Server .19 Giao thức truyền File FTP 20 LẬP TRÌNH MẠNG VỚI SOCKET 21 Tìm hiểu ngôn ngữ Java .21 Tìm hiểu Socket TCP lập trình Java 21 XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 24 10 Phân tích yêu cầu đề tài 24 11 Giải Thuật 24 12 Sơ đồ hoạt động .26 13 Demo chương trình 27 ĐÁNH GIÁ CHƯƠNG TRÌNH HƯỚNG PHÁT TRIỂN 29 14 Ưu điểm: 29 15 Nhược điểm: .29 16 Hướng phát triển: 29 TÀI LIỆU THAM KHẢO VÀ PHỤ LỤC 29 17 Tài liệu tham khảo 29 18 Phụ Lục .29 ĐỒ ÁN LẬP TRÌNH MẠNG DANH MỤC BẢNG BIỂU VÀ HÌNH ẢNH ĐỒ ÁN LẬP TRÌNH MẠNG ĐỒ ÁN LẬP TRÌNH MẠNG LỜI MỞ ĐẦU Lập trình mạng nhiệm vụ để phát triển ứng dụng doanh nghiệp Một chương trình mạng viết để chương trình máy tính khác truyền tin với cách hiệu an toàn cho dù chúng cài đặt mạng LAN, WAN hay mạng toàn cầu Internet, điều thành công nhiều hệ thống Hiểu tầm quan trọng Khoa công nghê thông tìn Trường Đại Học Bách Khóa Đà Nẵng tiến hành đưa vào học tập giảng dạy môn Lập Trình Mạng Môn lý thuyết Lập Trình Mạng cung cấp cho sinh viên kiến thức mặt lý thuyết Còn đễ hiểu đưa lý thuyết thực tế, đánh giá trình tiếp thu môn học điều mà môn Đồ án Lập Trình Mạng hướng đến Báo cáo Đồ án yêu cầu mà Cô hướng dẫn yêu cầu sinh viên phải hoàn thành, đễ đánh giá thề trình học tập sinh viên Nó thể hầu hết yêu cầu đề tài mà học sinh đăng ký Đề Tài nhóm em chọn : Tìm hiểu lập trình Socket Java ứng dụng truyền File qua mạng Mặc dù cố găng trình làm tránh khỏi sai sót Chúng em mong thầy hướng dẫn bạn giúp đễ làm chúng em hoàn thiện Chúng em xin chân thành cảm ơn! ĐỒ ÁN LẬP TRÌNH MẠNG BỐI CẢNH ĐỀ TÀI, MỤC TIÊU, NHIỆM VỤ Giới thiệu đề tài Hiện vấn đề toàn cầu hoá thông tin tốc độ phát triển khoa học công nghệ diễn cách nhanh chóng, kỷ nguyên mở kỷ nguyên xã hội hóa thông tin Máy tính trở thành công cụ đắc lực thiếu người Các tổ chức, công ty hay quan cần phải xây đựng hệ thống mạng máy tính cho riêng để trao đổi liệu phận Dữ liệu truyền mạng phải đảm bảo: liệu chuyển tới đích nhanh chóng đắn Hầu hết liệu truyền qua mạng truyền dạng file Truyền file qua mạng ứng dụng phổ biến mạng LAN Internet như: tải xuống file từ máy chủ file xa, gửi/nhận thư điện tử, Truyền file qua mạng dựa Socket TCP phương pháp truyền file có độ tin cậy cao trước truyền cần thiết lập thành công kênh truyền liệu, Dữ liệu gửi theo chê độ bảo đảm: Có kiểm tra lỗi truyền lại gói tin lỗi hay bảo đảm thứ tự đến gói tin Nhận thấy đề tài để tài không phù hợp với môn học khả nhóm em Dù lực hạn chế nhiều điều chưa rõ trình vừa làm vừa học hỏi khiến chúng em phát triển Đó lý chúng em chọn đề tài Mục tiêu • Tìm hiểu cách thức làm việc mô hình Client-Server • Tìm hiểu loại giao thức mạng TCP, UDP, mô hình hoạt động mạng máy tính • Tìm hiểu mô hình OSI TCP/IP • Khái niệm socket, socket java số lớp lập trình java socket • Xây dựng chương trình ứng dụng truyền file qua mạng: Mô hình số giao diện chương trình phía server phía client Yêu cầu • Tìm hiểu rõ phần lý thuyết bổ trợ cho đề tài • Xây dựng ứng dụng truyền File qua mạng, giao diện người dùng client/server • Chương trình phải hoạt động tốt , truyền nhận File • Lập báo cáo định kỳ thông đồ án theo lịch giáo viên hướng dẫn ĐỒ ÁN LẬP TRÌNH MẠNG Lựa chọn ngôn ngữ Lý lựa chọn ngôn ngữ : Những ứng dụng mạng kiểu gọn gàng viết Java, với Java có dòng mã hơn, dòng dễ dàng giải thích với người lập trình bắt đầu Những chương trình ứng dụng mô hình clients/server lập trình bang Java gia tăng ngày thông dụng.Ngoài Java có chế bẫy lỗi (điều quản ngoại lệ), giải hàu lỗi xảy trình xuất/nhập CƠ SỞ LÝ THUYẾT Căn mạng máy tính 1.1 Khái niệm mạng máy tính Mạng máy tính tập hợp máy tính nối với đường truyền theo cấu trúc thông qua máy tính trao đổi thông tin qua lại cho Đường truyền hệ thống thiết bị truyền dẫn có dây hay không dây dùng để chuyển tín hiệu điện tử từ máy tính đến máy tính khác Các tín hiệu điện tử biểu thị giá trị liệu dạng xung nhị phân (on - off) Tất tín hiệu truyền máy tính thuộc dạng sóng điện từ Tùy theo tần số sóng điện từ dừng đường truyền vật lý khác để truyền tín hiệu, đường truyền kết nối dây cáp đồng trục, cáp xoắn, cáp quang, dây điện thoại, sóng vô tuyến Các đường truyền liệu tạo nên cấu trúc mạng Hai khái niệm đường truyền cấu trúc đặc trưng mạng máy tính Ngày nay,với lượng lớn thông tin, nhu cầu xử lý thông tin ngày cao, mạng máy tính trở nên quen thuộc lĩnh vực như: khoa học, quân sự, quốc phòng, thương mại, dịch vụ, giáo dục Người ta thấy việc kết nối máy tính thành mạng cho chủng ta khả to lớn như: -Sử dụng chung tài nguyên: tài nguyên (như thiết bị, chương trinh, liệu) trở thành tài nguyên chung thành viên mạng tiếp cận mà không quan tâm tới tài nguyên đỏ đâu -Tăng độ tin cậy hệ thống: người ta đễ dàng bảo trì máy móc, lưu trữ (backup) liệu chung có trục trặc hệ thống chúng khôi phục nhanh chóng, Trong trường hợp có trục trặc trạm làm việc người ta sử dụng trạm khác thay -Nâng cao chất lưọng hiệu khai thác thông tin: thông tin sử đụng chung mang lại cho người sử dụng khả tổ chức lại ĐỒ ÁN LẬP TRÌNH MẠNG công việc 1.2 Phân loại mạng máy tính Dựa theo phạm vi phân bố mạng ta phân loại mạng sau: - Mạng cục LAN (Local Area Network): Mạng LAN nhóm máy tính thiết bị truyền thông mạng nối kết với khu vực nhỏ tòa nhà cao ốc, khuôn viên trường đại học, khu giải trí Các mạng LAN thường có đặc điểm sau: + Băng thông lớn, cỏ khả chạy ứng dụng trực tuyến xem phim, hội thảo qua mạng + Kích thước mạng bị giới hạn thiết bị + Chi phí thiết bị mạng LAN tương đối rẻ + Quản trị đơn giản - Mạng đô thị MAN (Metropolitan Area Network): Mạng MAN gần giống mạng LAN giói hạn thành phố hay quốc gia Mạng MAN nối kết mạng LAN lạ với thông qua phương tiện truyền dẫn khác (cáp quang, cáp đồng, sóng ) phương thức truyền thông khác + Băng thông mức trung binh, đủ để phục vụ ứng dụng cấp thành phố hay quốc gia phủ điện tử, thương mại điện tử, ứng dụng ngân hàng + Do MAN nối kết nhiều LAN với nên độ phức tạp tăng đồng thời công tác quản trị khó khăn + Chi phí thiết bị mạng MAN tương đối đắt tiền - Mạng diện rộng WAN (Wide Area Network): Mạng WAN bao phủ vùng địa lý rộng lớn quốc gia, lục địa hay toàn cầu Mạng WAN thường mạng công ty đa quốc gia hay toàn cầu, điển hình mạng internet Do phạm vi rộng lớn mạng WAN nên thông thường mạng WAN tập hợp mạng LAN, WAN nối lại với phương tiện như: vệ tinh (satellites), sóng biva (microwave), cáp quang, cáp điện thoại - Đặc điểm mạng WAN: - + Băng thông thấp, dễ kết nối, thường phù hơp với ứng dụng offme e-mail, web, ftp., - + Phạm vi hoạt động rộng lớn không giói hạn - + Do kết nối nhiều LAN, WAN lại với nên mạng phức tạp có tính toàn cầu nên thường có tổ chức quốc tế đứng quản trị - + Chi phí cho thiết bị công nghệ mạng WAN đắt tiền Mạng Internet: Là trường hợp đặc biệt mạng WAN, cung cấp dịch ĐỒ ÁN LẬP TRÌNH MẠNG vụ toàn cầu mail, web, chat, ftp phục vụ miễn phí cho người Mô hình tham chiếu OSI Mô hình OSI (Open System Interconnection): mô hình tổ chức ISO đề xuất từ 1977 công bố lần đầu vào 1984 Để máy tính thiết bị mạng truyền thông với phải có qui tắc giao tiếp bên chấp nhận Mô hình OSI khuôn mẫu giúp hiểu liệu xuyên qua mạng đồng thời giúp hiểu chức mạng diễn lớp Trong mô hình OSI có bảy lớp, lớp mô tả phần chức độc lập Sự tách lớp mô hình mang lại lợi ích sau: Chia hoạt động thông tin mạng thành phần nhỏ hơn, đơn giản giúp dễ khảo sát tìm hiểu Chuẩn hóa thành phần mạng phép phát triển mạng từ nhiều nhà cung cấp sản phẩm Ngăn chặn tình trạng thay đổi lớp làm ảnh hưởng đến lớp khác, giúp lớp phát triển độc lập nhanh chóng Mô hình tham chiếu OSI định nghĩa qui tắc cho nội dung sau: Cách thức thiết bị giao tiếp truyền thông với Các phương pháp để thiết bị mạng truyền liệu, không Các phương pháp để đảm bảo truyền liệu bên nhận Cách thức vận tải, truyền, xếp kết nối với Cách thức đảm bảo thiết bị mạng trì tốc độ truyền liệu thích hợp Cách biểu diễn bit thiết bị truyền dẫn Hình 1: Mô hình tham chiếu OSI 10 ĐỒ ÁN LẬP TRÌNH MẠNG 4.1.3 Lớp địa chỉ: Có lớp địa IP để tạo mạng có kích thước khác gồm: Lớp A, Lớp B, Lớp C, Lớp D, Lớp E - TCP/IP hỗ trợ gán địa lớp A, lớp B, lớp C cho trạm - Các lớp có chiều dài phần NET ID HOST ID khác nên số lượng Mạng số lượng Trạm mạng khác nhau: + Lớp A: Được gán cho Mạng có kích thước cực lớn Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt Byte lại xác định Host ID Do lớp A cấp cho 126 Mạng với 16.777.214 Trạm Mạng + Lớp B: Được gán cho Mạng có kích thước vừa lớn Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt Byte lại xác định Host ID Do lớp B cấp cho 16.384 Mạng với 65.534 Trạm Mạng + Lớp C: Được gán cho Mạng có kích thước nhỏ Trong lớp địa Byte xác định NET ID, Bit cao Byte đặt 1 Byte cuối xác định Host ID Do lớp C cấp cho 2.097.152 Mạng với 254 Trạm Mạng + Lớp D: Các địa lớp sử dụng cho Truyền Đa Hướng (Multicast) nhóm Multicast chứa nhiều Trạm Trong lớp Bit cao Byte đặt 1 0, Bit lại định nghĩa nhóm Multicast Địa lớp D không chia thành Net ID Host ID Các gói(Packets) Multicast truyền tới nhóm Trạm cụ thể có Trạm đăng kí vào nhóm nhận gói + Lớp E: Là lớp địa thực nghiệm, không thiết kế cho mục đích sử dụng chung Lớp E dự phòng cho ứng dụng tương lai Các Bit cao Byte đặt 1 1 4.2 Port – Cổng giao tiếp Trong giao thức TCP UDP, port số nguyên 16 bit chèn vào phần đầu (header) gói tia Chẳng hạn, phía người dùng (client) yêu cầu máy chủ Internet cung cấp dịch vụ chia sẻ tập tin (file) qua máy chủ FTP Đe đáp ứng yêu càu này, lớp phần mềm TCP máy bạn phải nhận diện port số 21 (đăng ký sẵn cho dịch vụ FTP) số port 16 bit số nguyên ghép theo gói tin yêu cầu bạn Tại máy chủ, lớp TCP đọc port 21 chuyển tiép yêu càu đén máy chủ FTP Hay nói cách khác, với địa IP, xác định máy tính mạng, nhiên máy tính chạy nhiều dịch vụ khác chứng phải phân biệt khái niệm port Ví dụ, máy chủ A (Server A) 15 ĐỒ ÁN LẬP TRÌNH MẠNG có dịch vụ web, DNS FTP server, có địa IP 210.245.126.14 Các máy tốđi khác muốn đến Server A cần đến địa IP (hay tên miền), để phân biệt dịch vụ web, DNs hay FTP, cần xác định thêm port Chẳng hạn, máy в muốn truy nhập dịch vụ web server Ạ, gói tin gửi đi, IP đích 210.245.126.14 port đích 80 Cùng lúc có máy с trụy nhập đến dịch vụ DNS server A ừong gói tin IP gửi đi, IP đích 210.245.126.14 port đích 53 Tương tự, máy D truy cập đến dịch vụ FTP server A, IP đích 210.245.126.14 port 21 Thông thường ứng dụng thường ẩn port để giảm tính phức tạp giao thức TCP/IP Có tất 65535 cổng (port) chia thành đoạn; Well Known Port (WKP), Registered Port (RP) Dynamic/Private Port (D/PP) WKP gồm port từ đến 1023 giữ cho ứng dụng phổ biến web (port 80), mail (port 25), ftp (port 21) RP gồm port từ 1024 đến 49151 Còn D/PP port từ 49152 đến 65535 IANA qui định WKP RP phải đãng ký vói IANA (iana.org) trước sử dụng Danh sách Port thông dụng: 20 TCP File Transfer - FTP data 21 TCP File Transfer - FTP control 22 TCP/UDP SSH Remove Login Protocol/ pcAnywhere 23 TCP Telnet 25 TCP Simple Mail Transfer Protocol (SMTP) 38 TCP UDP Route Access Protocol(RAP) 42 UDP Host Name Server - Microsoft WINS 45 TCP Message Processing Modile(recieve) 46 TCP Message Processing Module (send) 50 TCP UDP Remote Mail Checking Protocol (RMCP) 66 TCP UDP Oracle SQL*NET 69 TCP UDP Trivial File Transfer Protocol (TFTP) 88 TCP UDP Kerberos Network Authentication Servive 101 TCP UDP Network Infomation Center (NIC) Hostname Server 110 TCP UDP Post Office Protocol (POP) Version 118 TCP UDP SQL Services 119 TCP UDP Network News Transfer Protocol 130 TCP UDP Cisco FNATIVE 143 TCP UDP Internet Message Access Protocol (IMAP) Mail Server 161 TCP UDP SNMP Hình 4:Danh sách Port thông dụng 16 ĐỒ ÁN LẬP TRÌNH MẠNG Giao thức mạng Giao thức mạng tập quy tắc, quy ước để trao đổi thông tin hai hệ thống máy tính hai thiết bị máy tính vói Nói cách hình thức giao thức mạng ngôn ngữ máy tính mạng sủ dụng để trao đổi liệu với Có nhiều loại giao thức sử dụng mạng máy tính như: Apple Talk, DLC, NetBEUI, giao thức sử dựng phổ biến mạng máy tính giao thức TCP/IP 5.1 Giao thức TCP Giao thức TCP (Transmission Control Protocol ):Giao thức điều khiển truyền vận giao thức cốt lõi giao thức TCP/IP Sử dụng TCP, ứng dụng máy chủ nối mạng tạo kết nối với nhau, mà qua chúng trao đổi liệu gói tin Giao thức đảm bảo chuyển giao liệu tới nơi nhận cách đáng tin cậy thứ tự TCP phân biệt liệu nhiều ứng dụng (chẳng hạn, dịch vụ Web dịch vụ thư điện tử) đồng thời chạy máy chủ Các trường header liệt kê bảng sau: Trường Độ dài Mô tả Cổng nguồn (source bytes Số hiệu cổng nguồn port) Cổng đích bytes Số hiệu cổng đích (destination port) Số thứ tự (Sequence bytes Số thứ tự tạo nguồn sử dụng Number) đích để xếp lại gói tin để tạo thông điệp ban đầu, gửi xác thực tới nguồn Acknowledge bytes Number Data offset bits Các chi tiết nơi liệu gói tin bắt đầu Reserved bit Dự phòng Control Window Size bytes Trường kích thước vùng đệm nhận Phía nhận thông báo cho phía gửi kích thước liệu tối đa mà gửi cách sử dụng thông điệp xác thực Checksum bytes Checksum cho header liệu để xác định xem gói tin có bị hỏng không Urgent Pointer bytes Trường thông báo cho phía nhận biết có liệu khẩn Options Padding Hình 5:Các trường Header giao thức TCP 17 ĐỒ ÁN LẬP TRÌNH MẠNG Giao thức TCP giao thức phức tạp thời gian chế bắt tay, giao thức đảm bảo gói tin đến đích Một số giao thức ứng dụng sử dụng TCP HTTP, FTP, SMTP, Telnet TCP yêu cầu liên kết phải thiết lập trước liệu gửi Ứng dụng server phải thực thao tác mở thụ động để tạo liên kết với số hiệu cổng cho trước 5.2 Giao thức UDP UDP (User Datagram Protocol) :là giao thức không hướng kết nối, gửi gói liệu độc lập gọi datagram từ máy tính đến máy tính khác mà không đảm bảo việc liệu tới đích Ngược với giao thức TCP, UDP giao thức có tốc độ truyền tin nhanh xác định chế tối thiểu để truyền liệu Tất nhiên điều có số nhược điểm Các thông điệp nhận theo thứ tự Thông điệp gửi nhận sau Không có đảm bảo gói tin đến đích, thông điệp bị thất lạc, chí nhận hai thông điệp UDP không cần giai đoạn thiết lập liên kết, liệu gửi cần UDP không gửi thông điệp xác thực, liệu nhận bị thất lạc Nếu cần truyền liệu có độ tin cậy phải thực giao thức mức cao Vậy đâu ưu điểm giao thức UDP, lại cần sử dụng giao thức có độ tin cậy thấp vậy? Để hiểu lý ta lại phải sử dụng giao thức UDP ta cần phân biệt truyền unicast, broadcast multicast Một thông điệp unicast gửi từ nút tới nút khác Kiểu truyền tin truyền tin điểm-điểm Giao thức TCP hỗ trợ truyền tin unicast Nếu server muốn truyền tin với nhiều client cách sử dụng giao thức UDP, client phải thiết lập liên kết, thông điệp gửi tới nút Truyền tin broadcast nghĩa thông điệp gửi tới tất nút mạng Multicast cho phép thông điệp truyền tới nhóm nút lựa chọn UDP sử dụng cho truyền tin unicast cần tới tốc độ truyền tin nhanh, truyền tin đa phương tiện, ưu điểm UDP truyền tin broadcast truyền tin multicast Thông thường không muốn tất nút gửi xác thực cho server làm cho server tải Header UDP ngắn đơn giản nhiều so với TCP Trường thông tin Độ dài Source port (Cổng nguồn) byte Destination Port Length byte byte Mô tả Xác định cổng nguồn tùy chọn với UDP Nếu trường sử dụng, phía nhận thông điệp gửi phúc đáp tới cổng Số hiệu cổng đích Chiều dài thông điệp bao gồm header 18 ĐỒ ÁN LẬP TRÌNH MẠNG Checksum byte liệu Để kiểm tra tính đắn Hình 6:Các trường Header giao thức UDP Mô hình Client/Server Mô hình Client/Server hệ thống gồm máy chủ ( Server ) máy trạm ( Workstation hay Client ) nối vào máy chủ thông qua môi trường mạng Trên Server cài đặt hệ điều hành mạng ( Network Operating System ) để điều khiển hệ thống Trên Client cài đặt phần mềm nào, miễn có khả giao tiếp với Server Hệ thống mạng mạng cục hay mạng diện rộng Đôi Server đóng vai trò Client yêu cầu tài nguyên từ Server khác Có thể nói mô hình Client/Server mô hình có ảnh hưởng lớn đến ngành Công nghệ thông tin Mô hình Client/Server biến máy tính riêng lẻ có khả xử lí thấp thành mạng máy chủ máy trạm có khả xử lí gấp hàng ngàn lần máy tính mạnh Mô hình Client/Server cho phép ứng dụng chia thành nhiều nhiệm vụ Mỗi nhiệm vụ thực môi trường khác hệ điều hành khác nhau, giao thức mạng khác nhau, phát triển trì độc lập thực nhiều máy tính khác mạng Client thông qua phần mềm gởi yêu cầu truy vấn thông tin cập nhật thông tin xem dung lượng đĩa, sửa đổi hay xoá bỏ tập tin, thư mục.v.v cho Server, Server nhận yêu cầu, sau kiểm tra quyền truy cập người dùng, tiến hành giải yêu cầu gởi trả cho Client Khi nhận yêu cầu cập nhật thông tin, việc kiểm tra quyền cập nhật, Server đảm bảo tính hoàn thiện việc cập nhật Mô hình Client/Server giúp phát triển phương thức ứng dụng việc phân chia ứng dụng thành nhiều thành phần, thành phần thực chức chuyên biệt Thông thường ứng dụng chia làm 03 phần : Giao diện người dùng ( User interface ) : Thành phần liên quan đến chức tương tác với người dùng phát yêu cầu liệu người dùng cách thức đón nhận liệu từ người sử dụng Để tiến hành thực giao diện thuộc phần Logic trình bày Logic trình bày ( Presentation Logic ) : Thành phần cầu nối người dùng ứng dụng cung cấp chức ứng dụng cho người dùng nhận lệnh từ người dùng cho ứng dụng Vì thành phần đảm đương trách nhiệm hiển thị, định dạng thành phần giao tiếp với người dùng định dạng hình, quản lí hộp thoại, cửa sổ, đọc ghi thông tin hình, điều khiển bàn 19 ĐỒ ÁN LẬP TRÌNH MẠNG phím, chuột, chế trợ giúp theo ngữ cảnh, kiểm tra quyền truy cập thành phần thiết kế cho thân thiện với người dùng tốt Logic ứng dụng ( Application Logic ) : Thành phần đóng vai trò quan trọng, phần lõi chương trình Nó đảm đương việc thực thi ứng dụng, cung cấp tất chức có chương trình cho thành phần logic trình bày đáp ứng yêu cầu từ người dùng, quản lí sở liệu, Thông thường gồm hai phần : Thao tác liệu ( Data Processing logic ) Xử lí liệu (Database Processing) Giao thức truyền File FTP FTP (viết tắt tiếng Anh File Transfer Protocol, "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 (chang hạn Internet - mạng ngoại - intranet - mạng nội bộ) Hoạt động cúa FTP cần có hai máy tính, máy máy khách) Mảy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi trình 7.1 Mô hình hoạt động FTP: Các tiến trình phía server: Các tiến trình phía server bao gồm hai giao thức: - 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 Các tiến trình phía client: -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 ServerPI 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 - User Interface: 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 7.2 Thiết lập kênh điều khiển chứng thực người dùng FTP Mô hình hoạt động FTP mô tả rõ kênh liệu điều khiển thiết lập FTP client FTP server Trước kết nối sử dụng để thực truyền 20 ĐỒ ÁN LẬP TRÌNH MẠNG file, kênh điều khiển cần phải thiết lập Một tiến trình định sau dùng để tạo kết nối tạo phiên FTP lâu bền thiết bị để truyền files 7.3 Quản lý kênh liệu FTP Kênh điều khiển tạo Server-PI User-PI sử dụng trình thiết lập kết nối chứng thực trì suốt phiên kết nối FTP Các lệnh hồi đáp trao đổi phận PI (Protocol Interpreter) qua kênh điều khiển, liệu không 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 chuyể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 định hai phương thức khác để tạo kênh liệu Khác biệt 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, lại quan trọng LẬP TRÌNH MẠNG VỚI SOCKET Tìm hiểu ngôn ngữ Java Lần xuất vào năm 1992 ngôn ngữ dùng nội tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển xử lý bên máy điện thoại cầm tay, lò vi sóng, thiết bị điện tử dân dụng khác Không ngôn ngữ, Java tảng phát triển triển khai ứng dụng máy ảo Java, thông dịch có vai trò trung tâm Sun, công ty phát minh ngôn ngữ Java, thức ban hành Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để nhà phát triển tải về, học Java, xây dựng ứng dụng Java triển khai chúng hệ điều hành có hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển Applet, ứng dụng nhúng vào trình duyệt, góp phần làm sinh động trang web tĩnh vốn tẻ nhạt hồi Tuy nhiên, với phát triển công nghệ thông tin nhu cầu xã hội, Java Applet dần vị trí thay vào đó, công ty, cộng đồng ủng hộ Java phát triển theo hướng khác Tìm hiểu Socket TCP lập trình Java 9.1 Socket ngôn ngữ Java Java hỗ trợ lập trình mạng thông qua lớp gói java.net Một số lớp tiêu biểu dùng cho lập trình Client-Server sử dụng socket làm phương tiện giao tiếp như: • InetAddress: Lớp quản lý địa Internet bao gồm địa IP tên máy tính • Socket: Hỗ trợ phương thức liên quan đến Socket cho chương trình Client chế độ có nối kết 21 ĐỒ ÁN LẬP TRÌNH MẠNG • • • ServerSocket: Hỗ trợ phương thức liên quan đến Socket cho chương trình Server chế độ có nối kết DatagramSocket: Hỗ trợ phương thức liên quan đến Socket chế độ không nối kết cho Client Server DatagramPacket: Lớp cài đặt gói tin dạng thư tín người dùng (Datagram Packet) giao tiếp Client Server chế độ không nối kết 9.2 Xây dựng chương trình Client Server với Socket TCP 9.2.1 Xây dựng chương trình Client chế độ có nối kết Các bước tổng quát: - Mở socket nối kết đến server biết địa IP (hay tên miền) số hiệu cổng - Lấy InputStream OutputStream gán với Socket - Tham khảo Protocol dịch vụ để định dạng liệu trao đổi với Server - Trao đổi liệu với Server nhờ vào InputStream OutputStream - Đóng Socket trước kết thúc chương trình Lớp java.net.Socket Lớp Socket hỗ trợ phương thức cần thiết để xây dựng chương trình client sử dụng socket chế độ có nối kết Dưới số phương thức thường dùng để xây dựng Client: public Socket(String HostName, int PortNumber) throws IOException Phương thức dùng để nối kết đến server có tên HostName, cổng PortNumber Nếu nối kết thành công, kênh ảo hình thành Client Server HostName: Địa IP tên logic theo dạng tên miền PortNumber: có giả trị từ 65535 Ví dụ: Mở socket nối kết đến Web Server đăng ký tín Bách Khoa Đà Nẵng Socket s=new Socket(“www.tinchi.dut.udn.vn”,80); Socket s = new Socket(“203.162.36.149”,80); public InputStream getInputStream() Phương thức trả InputStream nối với Socket Chương trình Client dùng InputStream để nhận liệu từ Server gởi Ví dụ: Lấy InputStream Socket s: InputStream is = s.getInputStream(); public OutputStream getOutputStream() Phương thức trả OutputStream nối với Socket Chương trình Client dùng OutputStream để gởi liệu cho Server Ví dụ: Lấy OutputStream Socket s: 22 ĐỒ ÁN LẬP TRÌNH MẠNG OutputStream os = s.getOutputStream(); public close() Phương thức đóng Socket lại, giải phóng kênh ảo, xóa nối kết Client Server Ví dụ: Đóng Socket s: s.close(); 9.2.2 Xây dựng chương trình Server chế độ có nối kết Lớp java.net.ServerSocket Lớp ServerSocket hỗ trợ phương thức cần thiết để xây dụng chương trình Server sử dụng socket chế độ có nối kết Dưới số phương thức thường dùng để xây dựng Server: public ServerSocket(int PortNumber); Phương thức tạo Socket với số hiệu cổng PortNumber mà sau Server lắng nghe cổng Ví dụ: Tạo socket cho Server với số hiệu cổng 7: ServerSocket ss = new ServerSocket(7); public Socket accept() Phương thức lắng nghe yêu cầu nối kết Client Đây phương thức hoạt động chế độ nghẽn Nó bị nghẽn có yêu cầu nối kết client gởi đến Khi có yêu cầu nối kết Client gởi đến, chấp nhận yêu cầu nối kết, trả Socket đầu kênh giao tiếp ảo Server Client yêu cầu nối kết Ví dụ: Socket ss chờ nhận yêu cầu nối kết: Socket s = ss.accept(); Server sau lấy InputStream OutputStream Socket s để giao tiếp với Client Server sau lấy InputStream OutputStream Socket s để giao tiếp với Client Xây dựng chương trình Server phục vụ Một Server cài đặt để phục vụ Client theo hai cách: phục vụ phục vụ song song Trong chế độ phục vụ tuần tự, thời điểm Server chấp nhận yêu cầu nối kết Các yêu cầu nối kết Client khác không đáp ứng (đưa vào hàng đợi) Ngược lại chế độ phục vụ song song, thời điểm Server chấp nhận nhiều yêu cầu nối kết phục vụ nhiều Client lúc Các bước tổng quát Server phục vụ tuần tự: − Tạo socket gán số hiệu cổng cho server − Lắng nghe yêu cầu nối kết − Với yêu cầu nối kết chấp nhận thực bước sau: − Lấy InputStream OutputStream gắn với Socket kênh ảo vừa hình thành − Lặp lại công việc sau: − Chờ nhận yêu cầu (công việc) 23 ĐỒ ÁN LẬP TRÌNH MẠNG − − − − Phân tích thực yêu cầu Tạo thông điệp trả lời Gởi thông điệp trả lời Client Nếu không yêu cầu Client kết thúc, đóng Socket quay lại bước Server phục vụ song song Server phục vụ song song gồm phần thực song song nhau: Phần 1: Xử lý yêu cầu nối kết Lắng nghe yêu cầu nối kết khách hàng Chấp nhận yêu cầu nối kết Tạo kênh giao tiếp ảo với khách hàng Tạo Phần để xử lý thông điệp yêu cầu khách hàng Phần 2: Xử lý thông điệp yêu cầu từ khách hàng Chờ nhận thông điệp yêu cầu khách hàng Phân tích xử lý yêu cầu Gởi thông điệp trả lời cho khách hàng Phần kết thúc kênh ảo bị xóa XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 10 Phân tích yêu cầu đề tài Yêu cầu đầu vào : Phía Server : • Số hiệu cổng (Port) • Số lượng Client • Đường dẫn tới File Tên File (Nếu Server truyền ) Phía Client : • Địa Chỉ IP máy chủ • Số hiệu cổng máy chủ • Đường dẫn tới File Tên File (Nếu Client truyền) Yêu cầu đầu ra: Thông báo có File gửi đến, xác nhận nhận File, nhận File thành công 11 Giải Thuật Tại Client: Xét trình gửi file: Socket gọi clientSocket Còn luồng (stream) inFromHardDisk có kiểu FileInputStream, luồng nhập đến chương trình; đính kèm với ổ cứng máy tính Một ta chọn đường dẫn tên file liệu file “chảy” vào luồng inFromHardDisk Còn luồng outToServer có kiểu ObjectOutputStream luồng xuất chương trình; đính kèm với clientSocket Dữ liệu mà client gửi đến mạng chảy luồng outToServer Xét trình nhận File: Luồng inFromServer có kiểu ObjectInputStream, luồng nhập đến chương trình; đính kèm với socket Dữ liệu đến từ network chảy vào luồng inFromServer Còn luồng outToHardDisk có kiểu FileOutputStream, luồng xuất chương trình; đính kèm với ổ cứng, liệu từ luồng inFromServer vào luồng outToHardDisk, từ ghi file ổ cứng máy tính 24 ĐỒ ÁN LẬP TRÌNH MẠNG Tại Server: Quá trình giao nhận file send file diễn tương tự bên client với luồng inFromHardDisk, outToHardDisk, inFromClient, outToClient connectionSocket Chỉ có ý quan trọng ứng dụng cho phép giao nhận file server nhiều máy đồng thời hệ thống mạng nên để tối ưu hoá trình hoạt động ta khai báo thêm lớp gọi ThreadedConnectionSocket, lớp định nghĩa đối tượng socket tương tự connectionSocket mô tả lớp lớp mở rộng lớp Thread, điều tận dụng tính đa xâu (multithreading) Java Và ThreadedConnectionSocket lại đưa vào lớp Vector Kết ta giao nhận file server nhiều client mạng với tốc độ xử lý tối ưu Xây dựng chương trình Server phục vụ Một Server cài đặt để phục vụ Client theo hai cách: phục vụ phục vụ song song Trong chế độ phục vụ tuần tự, thời điểm Server chấp nhận yêu cầu nối kết Các yêu cầu nối kết Client khác không đáp ứng (đưa vào hàng đợi) Ngược lại chế độ phục vụ song song, thời điểm Server chấp nhận nhiều yêu cầu nối kết phục vụ nhiều Client lúc Các bước tổng quát Server phục vụ tuần tự: − Tạo socket gán số hiệu cổng cho server − Lắng nghe yêu cầu nối kết − Với yêu cầu nối kết chấp nhận thực bước sau: − Lấy InputStream OutputStream gắn với Socket kênh ảo vừa hình thành − Lặp lại công việc sau: − Chờ nhận yêu cầu (công việc) − Phân tích thực yêu cầu − Tạo thông điệp trả lời − Gởi thông điệp trả lời Client − Nếu không yêu cầu Client kết thúc, đóng Socket quay lại bước 25 ĐỒ ÁN LẬP TRÌNH MẠNG 12 Sơ đồ hoạt động Server: : Hình 7:Sơ dồ hoạt dộng phía Server Mô tả : Server tạo serverSocket lắng nghe kết nối từ client, có kết nối chập nhận trình kết nối,và thông báo lỗi kết nối thất bại Sau kết nối hình thành :Hai trình đồng thời xảy lằng lắng nghe tín hiệu có File từ Client chuyển đến trình gửi File đến Client Ở trình gửi File tới Client ta tiến hành chọn File gửi, File gửi xong ta lựa chọ tiếp tục gưi File hay kết thúc Ở trình lắng nghe tin hiệu File từ client : Client gửi đến thông điệp ”chuỗi” Server nhận dạng đồng ý nhận File không nhận Client: 26 ĐỒ ÁN LẬP TRÌNH MẠNG Hình 8:Sơ đồ hoạt động phía Client Mô tả : Client tạo Socket kết nối tới, có kết nối nối kết nối thất bại thông báo thị Sau kết nối hình thành :Hai trình đồng thời xảy lằng lắng nghe tín hiệu có File từ Server chuyển đến trình gửi File đến Server Ở trình gửi File tới Server ta tiến hành chọn File gửi, File gửi xong ta lựa chọ tiếp tục gưi File hay kết thúc Ở trình lắng nghe tin hiệu File từ Server: Server gửi đến thông điệp ”chuỗi”, Client nhận dạng đồng ý nhận File không nhận 13 Demo chương trình 13.1 Demo Server: 13.1.1 Chương trình sever 27 ĐỒ ÁN LẬP TRÌNH MẠNG Hình 9:Giao diện chương trình Server 13.1.2 Thông báo File gửi Hình 10:Thông báo File gửi thành công 13.2 Demo Client: 13.2.1 Chương trình Client Hình 11:Giao diện chương trình Client 28 ĐỒ ÁN LẬP TRÌNH MẠNG 13.2.2 Thông báo xác nhận có nhận File không Hình 12:Thông báo có File gửi đến chương trình 13.2.3 Thông báo nhận File thành công Hình 13:Thông báo File nhận thành công ĐÁNH GIÁ CHƯƠNG TRÌNH HƯỚNG PHÁT TRIỂN 14 Ưu điểm: 15 Nhược điểm: 16 Hướng phát triển: TÀI LIỆU THAM KHẢO VÀ PHỤ LỤC 17 Tài liệu tham khảo Giáo trình lập trình mạng thầy Mai Văn Hà( Khoa CNTT-ĐHBK) Mô hình Client- Server :www.wikipedia.org/wiki/Client-Server Tại liệu Internet Và tài liệu mạng khác … 18 Phụ Lục 29 [...]... nhúng vào trình duyệt, góp phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi đó Tuy nhiên, cùng với sự phát triển của công nghệ thông tin và nhu cầu của xã hội, Java Applet đã dần mất đi vị trí của nó và thay vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển nó theo một hướng khác 9 Tìm hiểu về Socket TCP trong lập trình Java 9.1 Socket dưới ngôn ngữ Java Java hỗ trợ lập trình mạng. .. ổ cứng, dữ liệu từ luồng inFromServer sẽ đi vào luồng outToHardDisk, từ đó nó sẽ ghi file ra ổ cứng máy tính 24 ĐỒ ÁN LẬP TRÌNH MẠNG Tại Server: Quá trình giao nhận file và send file cũng diễn ra tương tự như bên client với 4 luồng inFromHardDisk, outToHardDisk, inFromClient, outToClient và connectionSocket Chỉ có một chú ý quan trọng là trong ứng dụng này cho phép giao nhận file giữa một server và. .. thông qua các lớp trong gói java. net Một số lớp tiêu biểu được dùng cho lập trình Client-Server sử dụng socket làm phương tiện giao tiếp như: • InetAddress: Lớp này quản lý địa chỉ Internet bao gồm địa chỉ IP và tên máy tính • Socket: Hỗ trợ các phương thức liên quan đến Socket cho chương trình Client ở chế độ có nối kết 21 ĐỒ ÁN LẬP TRÌNH MẠNG • • • ServerSocket: Hỗ trợ các phương thức liên quan đến Socket. .. 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 7.2 Thiết lập kênh điều khiển và chứng thực người dùng trong FTP Mô hình hoạt động của FTP mô tả rõ các kênh dữ liệu và điều khiển được thiết lập giữa FTP client và FTP server Trước khi kết nối được sử dụng để thực sự truyền 20 ĐỒ ÁN LẬP TRÌNH MẠNG file, ... triển và triển khai ứng dụng trong đó máy ảo Java, bộ thông dịch có vai trò trung tâm Sun, công ty đã phát minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm 1996 hoàn toàn miễn phí để các nhà phát triển có thể tải về, học Java, xây dựng các ứng dụng Java và triển khai chúng trên các hệ điều hành có hỗ trợ Java Ban đầu, Java chủ yếu dùng để phát triển các Applet, các ứng dụng. ..ĐỒ ÁN LẬP TRÌNH MẠNG Mô hình tham chiếu OSI được chia thành bảy lớp với các chức năng sau: Lớp ứng dụng (Application Layer): là giao diện giữa các chương trình ứng dụng của người dùng và mạng Lớp Application xử lý truy nhập mạng chung, kiểm soát luồng và phục hồi lỗi Lớp này không cung cấp các dịch vụ cho lớp nào mà nó cung cấp dịch vụ cho các ứng dụng như: truyền file, gởi nhận E-mail,... nối Điều này nghe qua có vẻ khá đơn giản, nhưng kỳ thực nó lại khá quan trọng LẬP TRÌNH MẠNG VỚI SOCKET 8 Tìm hiểu về ngôn ngữ Java Lần đầu tiên xuất hiện vào năm 1992 như là một ngôn ngữ dùng trong nội bộ tập đoàn Sun Microsystems để xây dựng ứng dụng điều khiển các bộ xử lý bên trong máy điện thoại cầm tay, lò vi sóng, các thiết bị điện tử dân dụng khác Không chỉ là một ngôn ngữ, Java còn là một nền... đầu ra: Thông báo có File gửi đến, xác nhận nhận File, và nhận File thành công 11 Giải Thuật Tại Client: Xét quá trình gửi file: Socket thì được gọi là clientSocket Còn luồng (stream) inFromHardDisk có kiểu là FileInputStream, là một luồng nhập đến chương trình; nó thì đính kèm với ổ cứng máy tính Một khi ta đã chọn được đường dẫn và tên file thì dữ liệu của file đó sẽ được “chảy” vào luồng inFromHardDisk... thành :Hai quá trình đồng thời xảy ra lằng lắng nghe tín hiệu có File từ Client chuyển đến và quá trình gửi File đến Client Ở quá trình gửi File tới các Client ta tiến hành chọn File và gửi, khi File gửi xong ta có thể lựa chọ tiếp tục gưi File hay kết thúc Ở quá trình lắng nghe tin hiệu File từ client : Client sẽ gửi đến một thông điệp ”chuỗi” Server sẽ nhận dạng và đồng ý nhận File hoặc không... phải được thiết lập Một tiến trình chỉ định sau đó được dùng để tạo kết nối và tạo ra phiên FTP lâu bền giữa các thiết bị để truyền files 7.3 Quản lý kênh dữ liệu 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