Chương 1: Sơ Lược Về Lập Trình Mạng 1.1 Khái Niệm Lập Trình Mạng Lập trình mạng là một lĩnh vực của khoa học máy tính và công nghệ thông tin, nơi các ứng dụng và hệ thống được thiết kế
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN MÔN HỌC CHƯƠNG TRÌNH HỘI THẢO TỪ XA SỬ DỤNG PHƯƠNG THỨC TCP/IP VÀ MÔ
HÌNH CLIENT SERVE
Sinh viên thực hiện: Doãn Quốc Tuấn Lớp : 22ITE
Trang 2Chương 1: Sơ Lược Về Lập
Trình Mạng
1.1 Khái Niệm Lập Trình Mạng
Lập trình mạng là một lĩnh vực của khoa học máy tính và công nghệ thông tin, nơi các ứng dụng và hệ
thống được thiết kế để giao tiếp với nhau qua mạng Mục đích của lập trình mạng là cho phép các thiết
bị và ứng dụng trao đổi thông tin, giúp thực hiện các chức năng từ xa, quản lý dữ liệu, và đồng bộ hóa giữa các hệ thống khác nhau
Các ứng dụng lập trình mạng đóng vai trò quan trọng trong các dịch vụ hiện đại như web, ứng dụng di động, điện toán đám mây và IoT Để lập trình mạng hiệu quả, người lập trình phải hiểu các mô hình mạng, giao thức, công nghệ và ngôn ngữ phù hợp
Lập trình mạng nói một cách dễ hiểu là công việc của người sẽ phát triển ứng dụng tại hệ thống doanh nghiệp từ việc lập sổ sách nhân sự, quản lý tiền cho đến việc sáng tạo các trò chơi, điều khiển để thêm sức hấp dẫn thu hút hơn
Công thức để xây dựng lập trình mạng như sau:
Lập trình mạng = Kiến thức mạng + Mô hình lập trình mạng + Ngôn ngữ lập trình mạng
Theo công thức này thì sẽ rất dễ nhận thấy ba vấn đề chính cần quan tâm là kiến thức mạng truyền thông, mô hình lập trình và ngôn ngữ lập trình
Về kiến thức mạng truyền thông thì đây là kiến thức chung về mạng di động: mạng Bluetooth, hệ thống GPS, mạng Sensor… mà người làm quản trị cần nắm vững cách sử dụng để khai thác
Mô hình lập trình là kiến thức về tất cả các cách xây dựng hệ thống mạng, kiến thức về cơ sở dữ liệu, mô hình xây dựng các chương trình ứng dụng mạng
Mạng là gì ?
Với mục đích phân tích và nghiên cứu quá trình giao tiếp, Mạng máy tính đã được tạo ra như một bước tiến mới trong lịch sử Bởi nó liên kết toàn bộ các hệ thống máy tính khác nhau để trao đổi thông tin cần thiết
Do đó, việc kết nối mạng chỉ thực hiện được khi có mạng riêng của nó Có 4 loại mạng cơ bản là: LAN, MAN, WAN và PAN Người dùng cần chú ý cơ chế hoạt động của các mạng để lựa chọn phát triển
chương trình mạng được tốt nhất
Trang 3Hình 1 Mạng
Mạng LAN (Local Area Network)
Mạng LAN là mạng cục bộ nên có đường truyền ngắn Với giao thức TCP/IP, mạng LAN chủ yếu được sử dụng tại nơi diện tích nhỏ như: văn phòng, tòa nhà, trường học
Tất cả máy tính kết nối mạng LAN đều được sử dụng để kết nối vào máy chủ sau đó chờ quyền truy cập
để thực hiện lệnh in trên máy in
Hình 2 Local Area Network
Mạng MAN (Metropolitan Area Network)
Khác với mạng LAN, mạng đô thị MAN có phạm vị kết nối rộng hơn, hình thành nhờ sự kết nối nhiều mạng LAN với nhau
Đây là mô hình rộng cung cấp dịch vụ giá trị gia tăng; trên một đường truyền tốc độ nhanh để kết nối và
mở rộng triển khai các doanh nghiệp với nhau
Trang 4Hình 3 Metropolitan Area Network
Mạng WAN (Wide Area Network)
Mạng diện rộng WAN là sự kết hợp giữa mạng LAN và mạng MAN với việc sử dụng đường dây cáp quang hay thuê bao hoặc thông qua đường truyền vệ tinh
Phạm vi hoạt động của mạng rộng lớn hơn, bao gồm cả một quốc gia, khu vực địa lý hay thậm chí ở toàn cầu
Hình 4 Wide Area Network
Mạng PAN (Personal Area Network)
Mạng PAN có khả năng phát tín hiệu kết nối trong một diện tích nhỏ để truyền dữ liệu thông qua mạng trực tuyến
Trang 5Hình 5 Personal Area Network
Cá nhân có thể sử dụng mạng PAN giữa các thiết bị với nhau như di động máy tính để liên lạc thuận lợi hơn hoặc kết nối với các mạng cao cấp hơn
1.2 Các Mô Hình Mạng
Trong lập trình mạng, có hai mô hình chính:
a Mô Hình Mạng (Network Model)
Mô hình mạng là cấu trúc lý thuyết chia các tầng giao tiếp trong mạng nhằm tối ưu hóa việc truyền tải và
xử lý dữ liệu Hai mô hình chính thường được sử dụng là:
Mô hình OSI (Open Systems Interconnection): Chia thành 7 tầng gồm Application, Presentation,
Session, Transport, Network, Data Link, và Physical Mô hình này giúp chuẩn hóa các giao tiếp mạng và tạo ra tính nhất quán trong các hệ thống khác nhau
Mô hình TCP/IP: Đây là mô hình thực tế phổ biến với 4 lớp chính: Application, Transport,
Internet, và Network Access TCP/IP là nền tảng chính cho Internet và hầu hết các mạng hiện đại, đảm bảo kết nối và truyền dữ liệu liên tục
b Mô Hình Ứng Dụng (Application Model)
Mô hình ứng dụng định hướng cách thức các ứng dụng giao tiếp với nhau qua mạng Một số mô hình phổ biến bao gồm:
Mô hình Client-Server (Máy khách – Máy chủ): Máy khách (client) gửi yêu cầu đến máy chủ
(server), sau đó máy chủ xử lý và trả lại kết quả Mô hình này phổ biến trong các ứng dụng web, dịch vụ email, và cơ sở dữ liệu
Trang 6 Mô hình Peer-to-Peer (P2P): Trong mô hình này, các thiết bị hoạt động như các "nút" mạng có
thể vừa yêu cầu vừa cung cấp dịch vụ P2P thích hợp cho chia sẻ dữ liệu trực tiếp như các ứng dụng torrent hoặc giao tiếp giữa các thiết bị IoT
1.3 Các Giao Thức: Ưu, Nhược Điểm và Ví Dụ
Các giao thức mạng là những quy tắc định dạng và xử lý dữ liệu trong mạng Dưới đây là một số giao thức phổ biến cùng ưu, nhược điểm:
TCP (Transmission
Control Protocol) Đảm bảo dữ liệu khôngmất mát, đúng thứ tự Tốc độ chậm do quá trình kiểm tra lỗi Truyền file, email, truyền tải dữ liệu ngân
hàng
UDP (User Datagram
Protocol) Nhanh chóng do không kiểm tra lỗi Không đảm bảo tính chính xác của dữ liệu Game trực tuyến, videostream
HTTP (Hypertext
Transfer Protocol) Dễ triển khai, phổ biến cho ứng dụng web Không mã hóa dữ liệu Trình duyệt web, API
HTTPS (HTTP Secure) Bảo mật cao qua
SSL/TLS Tốc độ thấp hơn HTTP Các website thương mại điện tử, ngân hàng
FTP (File Transfer
Protocol) Quản lý và truyền tải file hiệu quả Không bảo mật (trừ khi dùng SFTP) Truyền tải dữ liệu lớn giữa các máy chủ
SMTP (Simple Mail
Transfer Protocol) Chuyên dùng để gửi email Thiếu bảo mật, cần mã hóa bổ sung Email clients (Outlook, Gmail)
1.4 Giới Thiệu Công Nghệ
Để lập trình mạng hiệu quả, các ngôn ngữ lập trình, thư viện và cơ sở dữ liệu đóng vai trò quan trọng Dưới đây là một số công nghệ phổ biến và ngắn gọn về công dụng của chúng trong lập trình mạng: Ngôn ngữ lập trình: Các ngôn ngữ phổ biến bao gồm Java, Python, C++, và Go Các ngôn ngữ này có thư viện mạnh mẽ cho việc quản lý kết nối, xây dựng và xử lý các giao thức mạng
Cơ sở dữ liệu: Các hệ quản trị cơ sở dữ liệu như MySQL, PostgreSQL, MongoDB thường được sử dụng để lưu trữ thông tin về người dùng, dữ liệu ứng dụng và đảm bảo tính nhất quán giữa các phiên làm việc của người dùng
Ví Dụ về Java trong Lập Trình Mạng
Trong Java, có nhiều thư viện và lớp hỗ trợ mạnh mẽ cho lập trình mạng:
Trang 7Thư viện java.net: Đây là thư viện tích hợp sẵn trong Java, hỗ trợ lập trình socket, quản lý URL và các
giao thức phổ biến
Lớp Socket: Hỗ trợ kết nối TCP, giúp tạo socket cho kết nối giữa client và server.
Lớp ServerSocket: Được sử dụng cho phía server để chấp nhận các kết nối từ client.
Chương 2 Phân tích thiết kế hệ thống
1 Giới thiệu bài toán
Bài toán ở đây là xây dựng một hệ thống gọi điện video và âm thanh qua mạng bằng Java, sử dụng giao thức TCP/IP, OpenCV để xử lý video và Java Sound API để xử lý âm thanh Hệ thống cần cho phép hai người dùng gọi video và audio qua lại trên một mạng bằng cách kết nối client và server
2 Mục tiêu và yêu cầu của hệ thống
Hệ thống sẽ bao gồm các chức năng cơ bản sau:
Kết nối giữa hai máy:
Người dùng có thể kết nối với nhau thông qua giao thức TCP/IP, sử dụng mô hình client-server
Xác định các cổng mạng (ví dụ: cổng 5000) để truyền video và âm thanh
Truyền video thời gian thực:
Sử dụng webcam để ghi hình và truyền hình ảnh qua mạng
Hiển thị video từ máy người dùng và từ máy bên kia trong giao diện
Truyền âm thanh thời gian thực:
Sử dụng micro để ghi âm và truyền âm thanh qua mạng
Phát âm thanh từ người gọi và người nhận để mô phỏng cuộc gọi thoại trực tiếp
Giao diện người dùng:
Giao diện đơn giản với các nút bấm như "Gọi" và "Hủy kết nối"
Trang 8Hiển thị video của hai máy khi đang trong cuộc gọi.
Trạng thái và nhật ký kết nối hiển thị để thông báo trạng thái cuộc gọi
3 Các chức năng chính
Hệ thống được thiết kế để có thể triển khai các chức năng sau:
Chức năng Kết nối và Khởi tạo cuộc gọi:
Cho phép người dùng thiết lập kết nối với máy chủ hoặc thiết lập máy như một server
Kết nối các luồng âm thanh và video sau khi người dùng chọn “Gọi”
Khởi tạo server và client đồng thời cho phép cả hai bên nhận và gửi dữ liệu
Chức năng truyền video và âm thanh:
Truyền Video:
Sử dụng OpenCV để ghi lại hình ảnh từ webcam và nén thành các gói ảnh
Truyền các gói ảnh này qua giao thức TCP tới client/server
Hiển thị video từ cả hai phía
Truyền Âm thanh:
Sử dụng Java Sound API để ghi lại âm thanh từ micro
Chuyển âm thanh thành các gói byte và truyền qua TCP
Phát lại các gói âm thanh này thông qua loa của máy bên kia
Chức năng Giao diện Người dùng (UI):
Cung cấp giao diện đơn giản với các nút:
"Gọi": Khởi tạo kết nối
"Hủy kết nối": Kết thúc cuộc gọi
Hiển thị trạng thái của cuộc gọi và cho phép người dùng quan sát video từ cả máy của họ và máy bên kia Chức năng Xử lý Lỗi và Thông báo Trạng thái:
Thông báo lỗi nếu không thể kết nối được hoặc mất kết nối giữa chừng
Trang 9Hiển thị thông báo khi một người dùng rời cuộc gọi hoặc khi máy không nhận được dữ liệu.
4 Mô hình hệ thống
Hệ thống được chia thành ba lớp chính:
Lớp Media:
Xử lý các hoạt động về âm thanh và video, bao gồm ghi và phát lại, gửi và nhận dữ liệu qua mạng Các lớp chính gồm AudioSender, AudioReceiver, VideoSender, và VideoReceiver
Lớp Network:
Quản lý kết nối TCP/IP giữa client và server
Các lớp chính gồm Client và Server, trong đó Server lắng nghe các yêu cầu kết nối và Client khởi tạo cuộc gọi
Lớp UI:
Quản lý giao diện người dùng, bao gồm các nút chức năng như “Gọi” và “Hủy kết nối”
Giao diện sẽ hiển thị cả video và trạng thái kết nối
5 Lưu đồ hoạt động cơ bản của hệ thống
Dưới đây là lưu đồ hoạt động cơ bản:
Bước 1: Người dùng chọn "Gọi" trên giao diện
Bước 2: Hệ thống kiểm tra IP và cổng của máy bên kia, tạo socket TCP cho client và server
Bước 3: Các luồng âm thanh và video bắt đầu truyền dữ liệu
Bước 4: Hệ thống hiển thị video và phát âm thanh từ cả hai bên
Bước 5: Người dùng có thể chọn "Hủy kết nối" để ngắt kết nối và dừng luồng truyền