Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server Bài tập lớn mạng máy tính lập trình socket ứng dụng chia sẻ file sử dụng cơ chế client server
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN MÔN
MẠNG MÁY TÍNH
Đề tài: LẬP TRÌNH SOCKET ỨNG DỤNG CHIA SẺ FILE
DÙNG CƠ CHẾ CLIENT – SERVER
Giảng viên hướng dẫn: TS Trần Quang Vinh
3 Nguyễn Ngọc Hiếu 20141528 Điện tử 07 – K59
4 Nghiêm Hoàng Long 20142663 Điện tử 06 – K59
5 Nguyễn Thị Mát 20142829 Điện tử 05 – K59
Hà Nội, tháng 11/2017
Trang 2MỤC LỤC
MỤC LỤC 1
DANH MỤC HÌNH VẼ, BẢNG BIỂU 2
LỜI NÓI ĐẦU 3
CHƯƠNG 1: GIỚI THIỆU CHUNG 4
1.1 Tổng quan về mạng máy tính 4
1.2 Tổng quan về TCP/IP 5
1.2.1 Bộ giao thức liên mạng (IP Protocol) 5
1.2.2 Bộ giao thức TCP 8
CHƯƠNG 2: NỘI DUNG 9
2.1 Lập trình SOCKET 9
2.1.1 Khái niệm 9
2.1.2 Mô hình TCP Socket 9
2.1.3 Nguyên tắc 10
2.2 Lập trình C# 12
2.2.1 Giới thiệu C# 12
2.2.2 Một số tính chất của ngôn ngữ C# 13
2.2.3 Các dạng chương trình ứng dụng với C# 15
2.3 Đặc tả kĩ thuật 16
2.3.1 Giới thiệu 16
2.3.2 Phân tích chương trình 17
2.3.3 Giao diện chương trình 18
KẾT LUẬN 21
DANH MỤC TÀI LIỆU THAM KHẢO 22
Trang 3DANH MỤC HÌNH VẼ, BẢNG BIỂU
Hình 1.1 Mô hình mạng cục bộ - LAN 4
Hình 1.2 Cấu trúc gói tin IP 6
Hình 1.3 Cấu trúc địa chỉ IP 7
Hình 1.4 Phân lớp địa chỉ IP 8
Hình 1.5 TCP Header 8
Hình 2 1 Kết nối TCP 9
Hình 2.2 Yêu cầu kết nối đến máy chủ 11
Hình 2.3 Mô hình kết nối tổng quát 11
Hình 2.4 Socket program giải phóng port 12
Hình 2.5 Quá trình nhận dữ liệu qua Socket 12
Hình 2.6 Giao diện chính của chương trình phía Server 18
Hình 2.7 Giao diện Server khi chọn file và đợi kết nối 19
Hình 2.8 Server gửi file cho Client 19
Hình 2.9 Giao diện chính của chương trình phía Client 20
Hình 2.10 Client sau khi kết nối Server và nhận file 20
Hình 2.11 Lưu file vào thư mục đã chọn 20
Trang 4LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin đã và đang được ứng dụng sâu rộng trong mọi lĩnh vực kinh tế - xã hội - y tế… Đây là công cụ không thể thiếu cho việc phát triển thương mại, vận hành hệ thống trong các tổ chức, doanh nghiệp và phục vụ nhu cầu công việc, giải trí cá nhân Trong đó, mạng máy tính và internet đóng vai trò hết sức quan trọng quyết định sự tồn tại của các tổ chức, doanh nghiệp Máy tính đã trở thành công cụ đắc lực và không thể thiếu của con người Các tổ chức, công ty hay các cơ quan cần phải xây dựng hệ thống mạng máy tính cho riêng mình để trao đổi dữ liệu giữa các bộ phận Dữ liệu được truyền đi trên mạng phải đảm bảo dữ liệu được truyền tới đích nhanh chóng
và đúng đắn Hầu hết dữ liệu truyền qua mạng là truyền dưới dạng file
Truyền file qua mạng là một trong những ứng dụng phổ biến trên mạng LAN và Internet như: tải xuống các file từ một máy chủ file ở xa, gửi/nhận thư điện tử Truyền file qua mạng dựa trên Socket TCP là một phương pháp truyền file có độ tin cậy cao bởi
vì trước khi truyền nó cần thiết lập thành công kênh truyền dữ liệu Không phải là phương pháp thay thế hoàn toàn những phương pháp truyền file khác mà ta đã từng sử dụng Bản chất của phương pháp truyền file dựa vào Socket TCP là nhằm tăng thêm hiệu xuất làm việc Đó là lý do chúng em chọn đề tài: “Lập trình SOCKET ứng dụng chia sẻ file sử dụng cơ chế client – server”
Chúng em cũng xin cảm ơn thầy TS Trần Quang Vinh đã tận tình hướng dẫn, giúp
đỡ chúng em để hoàn thành tốt đề tài này Chúng em chúc thầy luôn mạnh khỏe, công tác tốt và hướng dẫn nhiều thế hệ sinh viên hơn nữa
Trang 5CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Tổng quan về mạng máy tính
1.1.1 Khái niệm
Mạng máy tính hay hệ thống mạng (computer network hay network system) là sự kết
hợp các máy tính lại với nhau thông qua các thiết bị nối kết mạng và phương tiện truyền thông (giao thức mạng, môi trường truyền dẫn) theo một cấu trúc nào đó và các máy tính này trao đổi thông tin qua lại với nhau
Hình 1.1 Mô hình mạng cục bộ - LAN
1.1.2 Lợi ích của mạng máy tính
Lợi ích của mạng máy tính như sau:
Mạng tạo khả năng dùng chung tài nguyên cho các người dùng
Mạng cho phép nâng cao độ tin cậy
Mạng giúp cho công việc đạt hiệu suất cao hơn
Tiết kiệm chi phí
Tăng cường tính bảo mật thông tin
Việc phát triển mạng máy tính đã tạo ra nhiều ứng dụng mới
Trang 6ý tưởng nối các hệ thống máy tính không đồng nhất lại với nhau, DARPA đã cấp kinh phí nghiên cứu cho đại học Stanford, Bolt, Beranek, and Newman (BBN) về vấn đề này Kết quả của những nổ lực phát triển của dự án này là bộ giao thức Liên mạng đã được hoàn thành vào những năm cuối của thập niên bảy mươi Sau đó TCP/IP được tích hợp vào hệ điều hành UNIX phiên bản BSD (Berkeley Software Distribution) trở thành nền tảng cho mạng Internet và dịch vụ WWW (World Wide Web)
Giao thức liên mạng, thường gọi là giao thức IP (Internet Protocol) là một giao thức mạng hoạt động ở tầng 3 của mô hình OSI, nó qui định cách thức định địa chỉ các máy tính và cách thức truyền tải các gói tin qua một liên mạng IP được đặc tả trong bảng báo cáo kỹ thuật có tên RFC (Request For Comments) mã số 791 và là giao thức chủ yếu trong Bộ giao thức liên mạng Cùng với giao thức TCP, IP trở thành trái tim của bộ giao thức Internet IP có hai chức năng chính: cung cấp dịch vụ truyền tải dạng không nối kết
Trang 7để chuyển tải các gói tin qua một liên mạng; và phân mãnh cũng như tập hợp lại các gói tin để hỗ trợ cho tầng liên kết dữ liệu với kích thước đơn vị truyền dữ liệu là khác nhau
IP header
Hình 1.2 Cấu trúc gói tin IP
Ý nghĩa của các trường được mô tả như sau:
Version: Xác định phiên bản của giao thức đang được sử dụng
IP Header Length: Xác định chiều dài của phần tiêu đề của gói tin, tính bằng đơn vị là từ -32 bits
Total Length: Đặc tả chiều dài, tính bằng type, của cả gói tin IP, bao gồm cả phần dữ liệu và tiêu đề
Indentification: Số nguyên nhận dạng gói tin dữ liệu hiện hành Trường này được
sử dụng để lắp ráp lại các phân đoạn của gói tin
Flags: Gồm 3 bits, bit có trọng số nhỏ để xác định gói tin có bị phân đoạn hay không Bit thứ 2 xác định có phải đây là phân đoạn cuối cùng của gói tin hay không Bit có trọng số lớn nhất chưa sử dụng
Fragment Offset: Biểu thị vị trí của phân đoạn dữ liệu so với vị trí ban đàu của gói dữ liệu gốc, nó cho phép máy nhận xây dựng lại gói tin ban đầu
Time to live: Lưu giữ bộ đếm thời gian, giá trị sẽ được giảm dần đến khi nó có giá trị là 0 thì gói tin sẽ bị xóa Điều này giúp ngăn ngừa tình trạng gói tin được truyền đi lòng vòng không bao giờ đến được đích
Trang 8 Protocol: Biểu hiện giao thức ở tầng trên sẽ nhận gói tin khi nó đã được giao thức IP xử lý
Header Checksum: kiểm tra tính toàn vẹn của phần tiêu đề
Source address: Địa chỉ của máy gửi gói tin
Destination address: Địa chỉ của máy nhận gói tin
Options: Tùy chọn cho phép để hỗ trợ một số vấn đề, chẳng hạn vấn đề bảo mật
Data: Chứa dữ liệu của tầng trên gửi xuống cần truyền đi
Trang 9Hình 1.4 Phân lớp địa chỉ IP 1.2.2 Bộ giao thức TCP
Giới thiệu
TCP là giao thức vận chuyển tinh vi hơn, dùng để cung cấp dịch vụ vận chuyển tin cậy, hướng nối kết theo kiểu truyền thông tin bằng cách phân luồng các bytes TCP là giao thức truyền hai hướng đồng thời, nghĩa là mỗi một nối kết hỗ trợ hai luồng bytes chạy theo hai hướng Nó cũng bào gồm một cơ chế điều khiển thông lượng cho mỗi luồng bytes này, để cho phép bên nhận giới hạn lượng dữ liệu mà bên gởi có thể truyền tại một thời điểm nào đó TCP cũng hỗ trợ cơ chế đa hợp, cho phép nhiều tiến trình trên một máy tính có thể đồng thời thực hiện đối thoại với đối tác của chúng
TCP header
Hình 1.5 TCP Header
Trang 10CHƯƠNG 2: NỘI DUNG 2.1 Lập trình SOCKET
2.1.1 Khái niệm
Một Socket là một điểm cuối của một giao tiếp 2 chiều giữa hai chương trình chạy trên một mạng Socket được gắn với một cổng cụ thể để tầng TCP có thể định danh được ứng dụng mà dữ liệu gửi tới Địa chỉ Socket có dạng: {IP Address; Port Number} Các loại Socket:
- Socket hướng kết nối (TCP Socket)
- Socket không hướng kết nối (UDP Socket)
- Raw Socket
2.1.2 Mô hình TCP Socket
TCP là một giao thức có liên kết, nghĩa là cần phải thiết lập liên kết giữa hai thực thể TCP trước khi chúng trao đổi dữ liệu với nhau Một tiến trình ứng dụng trong một máy tính truy nhập vào các dịch vụ của giao thức TCP thông qua một cổng port của TCP
Số hiệu cổng TCP được thể hiện bởi 2 bytes
Hình 2 1 Kết nối TCP
Trang 11Một cổng TCP kết hợp với địa chỉ IP tạo thành một đầu nối TCP/IP (socket) duy nhất trong liên kết mạng Dịch vụ TCP được cung cấp nhờ một kiên kết logic giữa một cặp đầu nối TCP/IP Một đầu nối TCP/IP có thể tham gia nhiều liên kết với các đầu nối TCP/IP ở xa khác nhau Trước khi truyền dữ liệu giữa hai trạm cần thiết lập một liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên kết đó sẽ được giải phóng
2.1.3 Nguyên tắc
Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng
rất rộng rãi và là mô hình của mọi trang web hiện có Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) đến máy chủ (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách
Tại phía server:
Thông thường, một chương trình server chạy trên một máy tính cụ thể, chương trình này có một socket (server socket), socket được xác định bởi port number cụ thể Các chương trình cụ thể Các chương tình cụ thể phục vụ trên server chỉ chờ đợi, lắng nghe tại port number của nó để phục phục vụ khi có client kết nối
Tại phía client:
Các client biết địa chỉ của máy tính trên đó chương trình server đang chạy và danh sách các cổng máy chủ đang lắng nghe Để thực hiện kết nối, Client cố gắng tạo một liên kết với máy chủ tại cổng mà chương trình máy chủ đang lắng nghe Client cũng phải tự định danh chính nó với server để gắn với một cổng địa phương cái sẽ được dùng trong suốt quá trình kết nối này Thông thường nó được gán bởi hệ điều hành
Trang 12Hình 2.2 Yêu cầu kết nối đến máy chủ
Hình 2.3 Mô hình kết nối tổng quát Nếu mọi việc suôn sẻ chương trình máy chủ chấp nhận kết nối của client Khi chấp nhận, máy chủ có được một socket mới bị ràng buộc vào vùng cổng cùng cổng địa phương và thông tin đầu cuối (remote endpoint) của nó chính là port number của client
Nó đã tạo ra một socket mới để chăm sóc client vừa được chấp nhận kết nối và tiếp tục lắng nghe tại ổ cắm ban đầu (Server Socket) cho các yêu cầu khác kết nối
Trang 13Hình 2.4 Socket program giải phóng port
Về phía Client, nếu kết nối được chấp nhận, một ổ cắm được tạo thành công và Client có thể sử dụng socket để giao tiếp với chương trình chủ
Các Client và server có thể giao tiếp bằng cách ghi hay đọc từ ổ cắm của chúng
Hình 2.5 Quá trình nhận dữ liệu qua Socket
Dữ liệu ghi vào luồng đầu ra trên Socket của Client sẽ nhận được trên luồng đầu vào chủ Socket tại server Và ngược lại dữ liệu ghi vào luồng đầu ra trên Socket của Server
sẽ nhận được trên luồng đầu vào của Socket tại Client
2.2 Lập trình C#
2.2.1 Giới thiệu C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là
phần khởi đầu cho kế hoạch NET của họ Microsoft phát triển C# dựa
Trang 14trrên C++ và Java C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC
2.2.2 Một số tính chất của ngôn ngữ C#
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
Con trỏ được tích hợp vào ngôn ngữ C++ Chúng cũng là nguyên nhân gây ra những rắc rối của ngôn ngữ này C# loại bỏ những phức tạp và rắc rối phát sinh bởi con trỏ Trong C#, bộ thu gom bộ nhớ tự động và kiểu dữ liệu an toàn được tích hợp vào ngôn ngữ, sẽ loại bỏ những vấn đề rắc rối của C++
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
Mạnh mẽ và mềm dẻo
Như đã đề cập trước, với ngôn ngữ C# chúng ta chỉ bị giới hạn ở chính bởi bản thân hay là trí tưởng tượng của chúng ta Ngôn ngữ này không đặt những ràng buộc lên những việc có thể làm C# được sử dụng cho nhiều các dự án khác nhau như là tạo ra ứng dụng
xử lý văn bản, ứng dụng đồ họa, bản tính, hay thậm chí những trình biên dịch cho các ngôn ngữ khác
Trang 15C# là ngôn ngữ sử dụng giới hạn những từ khóa Phần lớn các từ khóa được sử dụng
để mô tả thông tin Chúng ta có thể nghĩ rằng một ngôn ngữ có nhiều từ khóa thì sẽ mạnh hơn Điều này không phải sự thật, ít nhất là trong trường hợp ngôn ngữ C#, chúng ta có thể tìm thấy rằng ngôn ngữ này có thể được sử dụng để làm bất cứ nhiệm vụ nào Bảng sau liệt kê các từ khóa của ngôn ngữ C#
modifier)
int
modifier)
Trang 16add alias ascending descending dynamic from get
2.2.3 Các dạng chương trình ứng dụng với C#
Ứng dụng Windows với Windows Form
Trước tiên, chúng ta cần phân biệt sự khác nhau giữa hai kiểu ứng dụng: Windows
và Web Khi các ứng dụng Web đầu tiên được tạo ra, người ta phân biệt hai loại ứng dụng trên như sau: ứng dụng Windows chạy trên Desktop hay trên một mạng cục bộ LAN (Local-Area Network), còn ứng dụng Web thì được chạy trên Server ở xa và được truy cập bằng trình duyệt Web (web browser) Sự phân biệt này không còn rõ ràng nữa
vì các ứng dụng Windows hiện nay có xu hướng dùng các dịch vụ của Web Ví dụ như phần mềm Outlook chuyển nhận thư thông qua kết nối Web
.NET cũng có sự phân biệt này, điển hình là có những bộ công cụ thích hợp cho từng loại ứng dụng: Windows hay Web Cả hai loại này đều dựa trên khuôn mẫu Form và sử dụng các điều khiển (Control) như là Buttons, ListBox, Text …
Ứng dụng Web với Web Form
Trang 17Công nghệ NET được dùng để xây dựng các ứng dụng Web là ASP.NET, nó cung cấp hai vùng tên khá mạnh và đầy đủ phục vụ cho việc tạo các ứng dụng Web
Web Forms được thiết để chạy trên bất kỳ trình duyệt nào, trang HTML gửi về sẽ được gọt giũa sao cho thích hợp với phiên bản của trình duyệt Ngoài dùng C#, ta cũng
có thể dùng ngôn ngữ VB.NET để tạo ra các ứng dụng Web tương tự
Web Forms chia giao diện người dùng thành hai phần: phần thấy trực quan (hay UI)
và phần trang mã phía sau của UI Quan điểm này thì tương tự với Windows Form, nhưng với Web Forms, hai phần này nằm trên hai tập tin riêng biệt Phần giao diện UI được lưu trữ trong tập tin có phần mở rộng là aspx, còn mã được lưu trữ trong tập tin có phần mở rộng là aspx.cs
Với môi trường làm việc được cung cấp bởi bộ Visual Studio NET, tạo các ứng dụng Web đơn giản chỉ là mở Form mới, kéo thả và viết mả quản lý sự kiện thích hợp Web Forms được tích hợp thêm một loạt các điều khiển thực thi trên Server, có thể tự kiểm tra sự hợp lệ của dữ liệu ngay trên máy khách mà ta không phải viết mã mô tả gì