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 ở
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
-oOo-Đề tài:
BÁO CÁO BÀI TẬP LỚN
MẠNG MÁY TÍNH
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
Sinh viên thực hiện:
Trịnh Thanh Chương 20192725Nguyễn Long Cầm 20192715
Lê Quang HưngLưu Văn Bắc
2019289120192705
Hà Nội, 04-2023
Trang 2LỜ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ọilĩnh vực Đâ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 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 Máy tính đã trở thànhcông cụ đắc lực và không thể thiếu của con người Các tổ chức, công ty cần phải xâydựng hệ thống mạng máy tính riêng cho 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 nhanhchó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ó độ tincậ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ìnhSOCKET ứ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 3MỤC LỤC
DANH MỤC HÌNH ẢNH 4
CHƯƠNG 1: GIỚI THIỆU CHUNG 5
1.1 Tổng quan về mạng máy tính 5
1.1.1 Khái niệm 5
1.1.2 Phương thức hoạt động của mạng máy tính 5
1.2 Tổng quan về TCP/IP 6
1.2.1 Bộ giao thức liên mạng (IP Protocol) 6
1.2.2 Bộ giao thức TCP 9
CHƯƠNG 2: NỘI DUNG 11
2.1 Lập trình SOCKET 11
2.1.1 Khái niệm 11
2.1.2 Phương thức hoạt động của Socket 11
2.1.3 Nguyên tắc 12
2.2 Lập trình C# 15
2.3 Chạy chương trình 16
KẾT LUẬN 20
DANH MỤC TÀI LIỆU THAM KHẢO 21
Trang 4DANH MỤC HÌNH ẢNH
Hình 1 1: Mô hình mạng cục bộ LAN 5
Hình 1 2: Cấu trúc gói tin IP 7
Hình 1 3: Cấu trúc của địa chỉ IP 8
Hình 1 4: Phân lớp địa chỉ IP 8
Hình 1 5: Cấu trúc TCP Header 10
Hình 2 1: Lập trình SOCKET 11
Hình 2 2: Kết nối Client - Server 13
Hình 2 3: Mô hình Client - Server 13
Hình 2 4: Quá trình nhận dữ liệu qua socket 14
Hình 2 5: Ngôn ngữ C# 15
Hình 2 6: Giao diện Server ban đầu 17
Hình 2 7: File cần gửi 18
Hình 2 8: Thông báo gửi file thành công 18
Hình 2 9: Thông báo nhận thành công 19
Hình 2 10: Kết quả thu được 19
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úcnà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 Phương thức hoạt động của mạng máy tính
Một số thiết bị chyên dụng như thiết bị chuyển mạch, bộ định tuyến và điểmtruy cập tạo thành một hệ thống của mạng máy tính
Công tắc kết nối giúp bảo mật nội bộ của máy tính với các thiết bị khác đượckết nối mạng trong tổ chức.Điểm truy cập chính là công tắc kết nối thiết bị với mạng mà không cần sử dụng dây cáp
Bộ định tuyến kết nối mạng với các nhà mạng khác và hoạt động giống như một nhà điều phối Bộ định tuyết kết nối mạng bên trong nhà và doanh nghiệp vớithế giơi và giúp bảo vệ thông tin khỏi các mối đe dọa bảo mật bên ngoài
Công tắc xác định duy nhất một thiết bị bằng địa chỉ MAC, bộ định tuyến xácđịnh duy nhất kết nối mạng của thiết bị bằng dịa chỉ IP được chỉ định mạng
Trang 6Địa chỉ MAC và IP xác định duy nhất các thiết bị và kết nối mạng tương ứngtrong một mang.
1.2 Tổng quan về TCP/IP
1.2.1 Bộ giao thức liên mạng (IP Protocol)
Các giao thức liên mạng là bộ giao thức cho các hệ thống mở nổi tiếng nhấttrên thế giới bởi vì chúng có thể được sử dụng để giao tiếp qua bất kỳ các liên mạngnào cũng như thích hợp cho các giao tiếp trong mạng LAN và mạng WAN Các giaothức liên mạng bao gồm một bộ các giao thức truyền thông, trong đó nổi tiếng nhất
là Giao thức điều khiển truyền tải (TCP - Transmission Control Protocol) và Giaothức liên mạng (IP – Internet Protocol) hoạt động ở tầng 4 và tầng 3 trên mô hìnhOSI
Ngoài hai giao thức này, bộ giao thức IP còn đặc tả nhiều giao thức cho tầngứng dụng, ví dụ như giao thức cho dịch vụ thư điện tử, giao thức mô phỏng thiết bịđầu cuối và giao thức truyền tải tập tin Bộ giao thức liên mạng lần đầu tiên đượcphát triển vào giữa những năm của thập niên 70 khi Văn phòng các dự án nghiêncứu chuyên sâu của bộ quốc phòng Mỹ (DARPA-Defense Advanced ResearchProjects Agency) quan tâm đến việc xây dựng một mạng chuyển mạch gói(packetswitched network) cho phép việc trao đổi thông tin giữa các hệ thống máytính khác nhau của các viện nghiên cứu trở nên dễ dàng hơn Sau đó TCP/IP đượctí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 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áchthức truyền tải các gói tin qua một liên mạng Cùng với giao thức TCP, IP trở thànhtrá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 để chuyển tải các gói tin qua một liên mạng; và phânmã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íchthước đơn vị truyền dữ liệu là khác nhau
Cấu trúc IP header
Trang 7Hình 1 2: Cấu trúc gói tin IP
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
Type of Service: Đặc tả mức độ quan trọng mà giao thức phía trên muốn xử
Fragment Offset: Biểu thị vị trí của phân đoạn dữ liệu so với vị trí ban đàucủ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; giúp ngăn ngừa tình trạng gói tin đượctruyền đi lòng vòng không bao giờ đến được đích
Protocol: Biểu hiện giao thức ở tầng trên sẽ nhận gói tin khi nó đã được giaothứ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
Trang 8Options: 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
Cấu trúc địa chỉ IP
Mỗi máy tính trên mạng TCP/IP phải được gán một địa chỉ luận lý có chiềudài 32 bits, gọi là địa chỉ IP
Hình 1 3: Cấu trúc của địa chỉ IP
32 bits của địa chỉ IP được chia thành 2 phần: Phần nhận dạng mạng(network id) và phần nhận dạng máy tính (Host id) Phần nhận dạng mạng đượcdùng để nhận dạng một mạng và phải được gán bởi Trung tâm thông tin mạngInternet (InterNIC – Internet Network Information Center) nếu muốn nối kết vàomạng Internet Phần nhận dạng máy tính dùng để nhận dạng một máy tính trong một
mạng
Hình 1 4: Phân lớp địa chỉ IP
Trang 91.2.2 Bộ giao thức TCP
Transmission Control Protocol (TCP) là giao thức tiêu chuẩn trên Internet đảm bảo trao đổi thành công các gói dữ liệu giữa các thiết bị qua mạng TCP là giao thứctruyền tải cơ bản cho nhiều loại ứng dụng, bao gồm máy chủ web và trang web, ứngdụng email, FTP và các ứng dụng ngang hàng
TCP hoạt động với giao thức Internet (IP) để chỉ định cách dữ liệu được trao đổitrực tuyến IP chịu trách nhiệm gửi từng gói đến đích của nó, trong khi TCP đảm bảo rằng các byte được truyền theo thứ tự mà chúng được gửi mà không có lỗi hoặcthiếu sót nào Hai giao thức kết hợp với nhau được gọi là TCP/IP
Phương thức hoạt động của TCP
Máy khách gửi cho máy chủ một gói SYN — một yêu cầu kết nối từ portnguồn của nó đến port đích đến của máy chủ
Máy chủ phản hồi bằng gói SYN/ACK, xác nhận việc nhận được yêu cầu kếtnối
Máy khách nhận gói SYN/ACK và trả lời bằng gói ACK của chính nó
Sau khi kết nối được thiết lập, TCP hoạt động bằng cách chia nhỏ dữ liệu đãtruyền thành các segment (phân đoạn), mỗi segment được đóng gói thành một gói
dữ liệu và được gửi đến đích của nó
Cấu trúc TCP Header
Trang 10Hình 1 5: Cấu trúc TCP Header
Source port (16 bit): Số cổng của thiết bị gửi
Destination port (16 bit): Số cổng của thiết bị nhận
Sequence number (32 bit): Dùng để đánh số thứ tự gói tin (từ số sequense
nó sẽ tính ra được số byte đã được truyền)
Acknowledgment 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
Data Offset (4 bit): Cho biết toàn bộ header dài bao nhiêu tính theo đơn vịword (1 Word = 4 byte)
RSV (4 bit): Đều được thiết lập bằng 0
Flags (9 bit): Được sử dụng để thiết lập kết nối, gửi dữ liệu và chấm dứt kêtnối
Windows (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
Trang 11CHƯƠNG 2: NỘI DUNG2.1 Lập trình SOCKET
2.1.1 Khái niệm
Socket là một điểm cuối end-point trong liên kết truyền thông hai chiều biểu diễnkết nối giữa Client – Server Các lớp Socket được rang buộc với một cổng port để cátầng TCP có thể định danh tương ứng mà dữ liệu sẽ được gửi tới
Hình 2 1: Lập trình SOCKETĐị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 Phương thức hoạt động của Socket
Chức năng của Socket chính là kết nối giữa Client – Server thông qua TCP/IP vàUDP để truyền cũng như nhận dữ liệu qua Internet Giao diện Socket chỉ có thể hoạtđộng khi đã có số hiệu cổng của 2 ứng dụng cần trao đổi dữ liệu và thông số IP.Socket chỉ hoạt động khi 2 ứng dụng cần truyền thông tin đã đáp ứng đủ cácđiều kiện:
2 ứng dụng có thể cùng nằm trên một máy hoặc nằm trên 2 máy khác nhau
Trang 12Nếu ứng dụng cùng nằm trên một máy thì số hiệu cổng phải không trùng với nhau.
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 portnumber cụ thể Các chương trình cụ thể Các chương tình cụ thể phục vụ trên serverchỉ 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ắngtạ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ươngcá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 13Hình 2 2: Kết nối Client - Server
Hình 2 3: Mô hình Client - ServerNếu chương trình máy chủ chấp nhận kết nối của client Khi chấp nhận, máychủ 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ụclắng nghe tại ổ cắm ban đầu (Server Socket) cho các yêu cầu khác kết nối
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à
Trang 14server có thể giao tiếp bằng cách ghi hay đọc từ ổ cắm của chúng.
Hình 2 4: Quá trình nhận dữ liệu qua socket
Ta có thể chia quá trình nhận dữ liệu qua socket ở giữa Client và Server ở hình 2.4thành 4 giai đoạn như sau:
Trang 15Giai đoạn 1: Server tạo Socket, gán số hiệu cổng và lắng nghe yêu cầu nối kết Server sẵn sàng phục vụ Client.socket(): Server yêu cầu tạo một socket
để có thể sử dụng các dịch vụ của tầng vận chuyển
bind(): Server yêu cầu gán số hiệu cổng (port) cho socket
listen(): Server lắng nghe các yêu cầu nối kết từ các client trên cổng đãđược gán
Giai đoạn 2: Client tạo Socket, yêu cầu thiết lập một nối kết với Server.socket(): Client yêu cầu tạo một socket để có thể sử dụng các dịch vụ củatầng vận chuyển, thông thường hệ thống tự động gán một số hiệu cổng còn rảnh cho socket của Client
connect(): Client gởi yêu cầu nối kết đến server có địa chỉ IP và Port xácđịnh
accept(): Server chấp nhận nối kết của client, khi đó một kênh giao tiếp ảođược hình thành, Client và server có thể trao đổi thông tin với nhau thông qua kênh ảo này
Giai đoạn 3: Trao đổi thông tin giữa Client và Server
Sau khi chấp nhận yêu cầu nối kết, thông thường server thực hiện lệnh read() và nghẽn cho đến khi có thông điệp yêu cầu (Request Message) từclient gởi đến
Server phân tích và thực thi yêu cầu Kết quả sẽ được gởi về client bằnglệnh write()
Sau khi gởi yêu cầu bằng lệnh write(), client chờ nhận thông điệp kết quả(ReplyMessage) từ server bằng lệnh read()
Giai đoạn 4: Kết thúc phiên làm việc
Các câu lệnh read(), write() có thể được thưc hiện nhiều lần (ký hiệubằng hình ellipse)
Kênh ảo sẽ bị xóa khi Server hoặc Client đóng socket bằng lệnh close()
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 Socketcủ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#
Hình 2 5: Ngôn ngữ C#
Trang 16C# 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 trê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ổitiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC
C# là một ngôn ngữ lập trình thuần hướng đối tượng Lập trình hướng đối tượng (OOP: Object-oriented programming) là một phương pháp lập trình có 4 tínhchất Đó là tính trừu tượng (abstraction), tính đóng gói (encapsulation), tính đa hình(polymorphism) và tính kế thừa (inheritance) C# hỗ trợ cho chúng ta tất cả những đặc tính trên
2.3 Chạy chương trình
2.3.1 Giới thiệu
Trao đổi dữ liệu giữa hai máy tính trong mạng thực chất là sự trao đổi dữ liệugiữa hai chương trình ứng dụng chạy trên hai máy tính đó Một chương trình đượcgán nhãn là server và một chương trình được gán nhãn là client, phương pháp sửdụng phổ biến là lập trình ứng dụng mạng dựa trên cơ chế socket Trong chươngtrình này sẽ trình bày một ứng dụng lập trình socket TCP xây dựng chương trìnhchia sẻ file qua mạng bằng C#
2.3.2 Phân tích chương trình
Chương trình truyền file sử dụng socket qua mạng LAN được chia làm 2 phần: Server và Client
Server: Phần mềm tại Server sẽ chạy đầu tiên
Server sẽ thông báo đã hoạt động và sẵn sàng nhân file.Client: Sau khi server kích hoạt xong, tiến hành chạy ở Client.Chọn file cần truyền bằng cách nhấn truyền đường dẫn để chọn file có sẵn trong máy
Sau khi Server truyền file thành công Để nhận file , chọn thử mục Receive File bây giờ đã có trong đường dẫn nhận file đã cài đặt
Để truyền các file tiếp theo làm tương tự những bước trên