Tổng quan về giáo trình

Tài liệu học tập Hướng Dẫn Thực Hành Lập Trình Mạng Máy Tính (mã học phần: CMP 381) do Trường Đại học Công nghệ TP.HCM (HUTECH) phát hành, được biên soạn bởi nhóm tác giả: TS. Văn Thiên Hoàng và KS. Nguyễn Trọng Minh Hồng Phước. Về mặt phân bổ trong chương trình đào tạo bậc đại học khối ngành Công nghệ Thông tin và Mạng máy tính, tài liệu đóng vai trò là học phần thực hành chuyên ngành, làm cầu nối trực tiếp giữa lý thuyết truyền thông dữ liệu với kỹ thuật triển khai phần mềm mạng thực tế.

Mục tiêu học tập của giáo trình hướng đến việc trang bị cho người học năng lực hiện thực hóa các giao thức truyền thông bằng ngôn ngữ lập trình Java. Sau khi hoàn thành học phần, sinh viên có khả năng:

  • Xây dựng các ứng dụng có kết nối cơ sở dữ liệu qua mạng bằng JDBC.
  • Làm chủ kỹ thuật xử lý luồng nhập xuất (I/O) tệp tin và dữ liệu nhị phân.
  • Định danh và phân tích địa chỉ máy chủ, tên miền thông qua giao thức Internet với lớp InetAddress.
  • Kiểm soát tiến trình đa luồng (Multi-threading) và lập trình đồng thời.
  • Thiết kế hệ thống mạng theo mô hình Client - Server trên nền tảng giao thức TCP, UDP và FTP.
  • Ứng dụng mô hình đối tượng phân tán Remote Method Invocation (RMI) vào giải quyết các bài toán phân tán.

Cấu trúc giáo trình được thiết kế theo phương pháp mô-đun hóa với 7 bài thực hành độc lập nhưng có tính kế thừa chặt chẽ. Mỗi bài học bắt đầu bằng mục tiêu chuẩn đầu ra, hệ thống hóa kiến thức lý thuyết cơ sở, kế tiếp là các bước hướng dẫn thao tác chi tiết từng bước (step-by-step) trên môi trường phát triển tích hợp (IDE), và kết thúc bằng hệ thống bài tập thực hành cùng bài tập mở rộng. Điểm đặc thù của tài liệu là phương pháp tiếp cận trực quan: gắn liền lý thuyết truyền thông mạng với giao diện đồ họa người dùng (Java Swing) và cơ sở dữ liệu thực tế, giúp sinh viên quan sát trực tiếp luồng trao đổi dữ liệu qua giao diện tương tác.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Nội dung tài liệu được phân bổ qua 7 bài thực hành cụ thể:

  • Bài 1: Lập trình kết nối cơ sở dữ liệu (Database Programming): Cung cấp kiến thức về kết nối ứng dụng Java với hệ quản trị cơ sở dữ liệu (DBMS) trong môi trường mạng. Giáo trình hướng dẫn chi tiết việc thiết lập và tương tác với hai hệ quản trị phổ biến là MySQL (thông qua gói WampServer, quản lý bằng phpMyAdmin, tích hợp thư viện mysql-connector-java-5.10) và Microsoft SQL Server (sử dụng SQL Server Management Studio Express và thư viện sqljdbc.jar). Trọng tâm thực hành gồm: cấu hình cổng mạng cho dịch vụ dữ liệu, thiết kế bảng dữ liệu taikhoan, xây dựng các lớp xử lý đối tượng MyConnection, DBAccess (thực thi Statement, ResultSet), và thiết kế giao diện đăng ký, đăng nhập người dùng bằng Java Swing.

  • Bài 2: Luồng nhập xuất (Input/Output Streams): Tập trung vào cơ chế thao tác tệp và thư mục trong các ứng dụng mạng truyền nhận dữ liệu. Nội dung chia làm hai phần: thao tác hệ thống tệp (sử dụng lớp File, bộ lọc FileFilter, và hộp thoại đồ họa JFileChooser) và thao tác luồng dữ liệu (so sánh xử lý đọc/ghi luồng nhị phân thông qua FileInputStream/mảng byte với luồng ký tự/văn bản qua FileReader, FileWriter và StringBuffer).

  • Bài 3: InetAddress: Nghiên cứu cơ chế định danh thiết bị mạng trong bộ giao thức TCP/IP. Giáo trình phân tích vai trò của địa chỉ IP (tĩnh/động, IPv4/IPv6) so với địa chỉ vật lý MAC. Lớp InetAddress được phân tích chi tiết với các thuộc tính đóng gói hostName, address và các phương thức truy vấn tĩnh liên kết tới máy chủ phân giải tên miền (DNS) như: getByName(), getAllByName(), getLocalHost(). Bài tập hướng dẫn xây dựng các công cụ: kiểm tra phiên bản IP, tra cứu tất cả IP của tên miền, phân giải tên miền ngược từ địa chỉ IP, lấy IP máy cục bộ, kiểm tra đặc tính địa chỉ (Loopback, Multicast), và so sánh IP giữa hai tên miền khác nhau.

  • Bài 4: Xử lý tiến trình và luồng (Thread & Concurrency): Hệ thống hóa khái niệm về đơn vị xử lý nhỏ nhất (Thread), đa nhiệm (Multitasking) dựa trên đơn tiến trình (Multiprocessing) so với đa luồng (Multi-threading). Tài liệu phân tích ưu thế tiết kiệm bộ nhớ và chuyển đổi ngữ cảnh (context switch) của cơ chế chia sẻ vùng nhớ giữa các Thread, đồng thời chỉ rõ các rủi ro về tranh chấp tài nguyên và khóa chết (Deadlock). Các trạng thái trong vòng đời luồng (runnable, waiting, timed waiting, blocked, terminated) được trực quan hóa qua sơ đồ trạng thái và minh chứng qua hai bài thực hành đồ họa bóng nảy: chuyển động đơn luồng (SingleThread gây đóng băng giao diện) đối chiếu với đa luồng (MultiThread kế thừa lớp Thread, chạy độc lập qua phương thức start()).

  • Bài 5: TCP Socket và Giao thức FTP: Phân tích kiến trúc phân tầng OSI và TCP/IP, xác định vị trí của Socket như một giao diện lập trình trung gian giữa tầng ứng dụng và tầng giao vận (Transport Layer), gắn với một số hiệu cổng (Port Number). Giáo trình hướng dẫn kỹ thuật tạo kết nối hai chiều tin cậy bằng ServerSocket và Socket. Đồng thời, tài liệu phân tích chi tiết giao thức truyền tệp FTP hoạt động trên cổng 20 (Data Connection) và cổng 21 (Control Connection), đối chiếu 3 phương thức truyền dữ liệu: Stream mode, Block mode và Compressed mode (sử dụng thuật toán nén run-length encoding). Phần thực hành yêu cầu xây dựng kiến trúc Client - Server đa luồng xử lý chuỗi ký tự qua mạng TCP.

  • Bài 6: UDP Socket: Nghiên cứu mô hình truyền thông phi kết nối (Connectionless) sử dụng Datagram Socket. Sinh viên được hướng dẫn xây dựng ứng dụng mạng dựa trên các lớp DatagramSocket và DatagramPacket, qua đó phân tích sự khác biệt về độ tin cậy, chi phí thiết lập liên kết và độ trễ so với giao thức TCP.

  • Bài 7: Lập trình đối tượng phân tán (RMI - Remote Method Invocation): Trình bày cơ chế cho phép một đối tượng chạy trên một máy ảo Java (JVM) có thể triệu gọi phương thức của một đối tượng đang cư trú trên một JVM khác thông qua mạng. Hướng dẫn các bước định nghĩa Remote Interface, hiện thực Interface, đăng ký đối tượng với dịch vụ RMI Registry, và xây dựng ứng dụng Client tìm kiếm, triệu gọi hàm từ xa.

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng hệ thống nền tảng vững chắc dựa trên các trụ cột:

  • Nguyên lý kiến trúc mạng: Mô hình tham chiếu OSI 7 tầng, bộ giao thức TCP/IP, cơ chế đóng gói (Encapsulation) và giải mã (Decapsulation) gói tin qua các tầng vật lý, giao vận và ứng dụng.
  • Kỹ thuật truyền thông liên tiến trình (IPC): Cơ chế định danh cổng mạng (Port), cơ chế bắt tay của giao thức hướng kết nối (Connection-oriented) của TCP so với giao thức phi kết nối (Connectionless) của UDP.
  • Kiến trúc ứng dụng phân tán: Mô hình Client - Server hai tầng (2-tier architecture), kiến trúc đối tượng phân tán RMI, và phân tách kênh điều khiển/kênh dữ liệu trong giao thức tầng ứng dụng (FTP).
  • Lập trình đồng thời (Concurrent Programming): Cơ chế quản lý tiểu trình của máy ảo Java (JVM Thread Scheduler), đồng bộ hóa dữ liệu trên vùng nhớ dùng chung, và xử lý khóa tài nguyên.

Kỹ năng phát triển

Thông qua việc giải quyết toàn bộ bài tập và hướng dẫn kỹ thuật, sinh viên phát triển các nhóm kỹ năng cụ thể:

  • Kỹ năng kỹ thuật (Technical skills): Viết mã nguồn Java trên môi trường NetBeans; sử dụng thành thạo các thư viện mạng java.net.*, thư viện nhập xuất java.io.*, và thư viện cơ sở dữ liệu java.sql.*; thiết lập cấu hình kết nối TCP/IP và cấu hình cơ sở dữ liệu trên môi trường Windows Server/Desktop.
  • Kỹ năng phân tích (Analytical skills): Phân tích và lựa chọn giao thức truyền tải phù hợp (TCP hoặc UDP) dựa trên yêu cầu về tính toàn vẹn dữ liệu hay tốc độ truyền dẫn; phân tích nguy cơ xung đột luồng và lỗi khóa chết (deadlock) trong các tiến trình đọc/ghi tệp đồng thời.
  • Kỹ năng thực hành (Practical competencies): Tự thiết kế và hiện thực hóa các ứng dụng mạng hoàn chỉnh từ giao diện người dùng Swing, xử lý logic mạng nền tảng, đến lưu trữ dữ liệu tại máy chủ.

Phương pháp giảng dạy và học tập

Giáo trình tuân thủ mô hình sư phạm thực hành ứng dụng (Lab-based learning). Quy trình tiếp cận mỗi bài học được phân định thành 4 giai đoạn cụ thể:

  1. Tiếp nhận mục tiêu và lý thuyết: Sinh viên nắm bắt kết quả đầu ra cụ thể cùng các khái niệm lý thuyết cốt lõi được tóm lược bằng bảng biểu và sơ đồ phân tầng.
  2. Thực hành theo hướng dẫn (Guided Practice): Thực hiện chính xác các chỉ dẫn từng bước (Step-by-step), từ thiết lập môi trường (cài đặt WampServer, chỉnh cổng SQL Server), tạo lớp đối tượng (DBAccess, Ball, MyConnection), đến thiết kế giao diện bằng kéo thả trực quan và gắn sự kiện hành động (ActionPerformed).
  3. Thực hành bài tập chuẩn (Lab Exercises): Tự viết mã nguồn để giải quyết các bài toán mạng độc lập dựa trên khung kiến thức đã được hướng dẫn.
  4. Bài tập làm thêm mở rộng (Extended Assignments): Áp dụng kiến thức vào các bài toán phức tạp hơn, đòi hỏi khả năng tích hợp kỹ năng như: tạo các tiểu trình đọc/ghi tệp riêng biệt có đồng bộ hóa dữ liệu (FileTWrite, FileTReader), xử lý phân tách mảng số nguyên lưu tệp, hoặc xử lý kiểm tra số nguyên tố trên dữ liệu tệp nhị phân.

Về phương pháp đánh giá môn học, tài liệu quy định rõ cơ cấu điểm số:

  • Điểm đánh giá quá trình (50%): Bao gồm điểm kiểm tra thường xuyên trong quá trình học tập tại phòng máy, điểm kiểm tra giữa học phần, điểm làm bài tập trên lớp và điểm chuyên cần.
  • Điểm thi kết thúc học phần (50%): Tổ chức theo hình thức thi thực hành lập trình trực tiếp trên máy tính trong thời gian 90 phút. Quy chế thi quy định thí sinh không được mang tài liệu vào phòng thi. Nội dung đề thi bao gồm các câu hỏi lý thuyết ngắn và bài tập lập trình tương đương với các dạng bài đã được hướng dẫn và làm thêm trong giáo trình.

Về phương pháp tự học, tài liệu đưa ra khuyến nghị cụ thể: Người học cần chủ động đọc trước các nội dung lý thuyết trước khi lên lớp; tham gia đầy đủ các buổi thực hành; thực hành lại toàn bộ mã nguồn ví dụ sau giờ học; và tìm đọc thêm tài liệu chuyên sâu để hoàn thành các bài tập nâng cao.


Điểm nổi bật và cập nhật

Tài liệu thể hiện rõ định hướng thực hành trực quan và tính hệ thống trong cách tiếp cận lập trình mạng máy tính:

  • Tích hợp đồng bộ môi trường phát triển: Toàn bộ các bài thực hành đều được chuẩn hóa thao tác trên môi trường NetBeans IDE, phối hợp cùng các hệ quản trị cơ sở dữ liệu phổ biến tại các doanh nghiệp như MySQL và SQL Server. Giáo trình hướng dẫn từ bước cơ bản nhất như nạp tệp thư viện .jar (sqljdbc.jar, mysql-connector-java), cấu hình thông số kết nối cổng mạng đến xử lý ngoại lệ kết nối.
  • Hệ thống sơ đồ trực quan: Tài liệu sử dụng nhiều sơ đồ kỹ thuật chi tiết để trừu tượng hóa các khái niệm mạng phức tạp, bao gồm:
    • Sơ đồ định vị Socket trong mô hình phân tầng OSI và TCP/IP (Hình 5.1).
    • Sơ đồ tương tác luồng thông điệp giữa ServerSocket và Socket trong mô hình Client - Server TCP (Hình 5.2).
    • Sơ đồ phân tách tiến trình điều khiển (Control Connection - Port 21) và tiến trình dữ liệu (Data Connection - Port 20) của giao thức FTP (Hình 5.4).
    • Sơ đồ các trạng thái trong vòng đời của một tiểu trình Java (Hình 4.2).
  • Gắn liền xử lý mạng với giao diện đồ họa: Thay vì sử dụng giao diện dòng lệnh (Console) đơn điệu, các bài học đều yêu cầu sinh viên xây dựng giao diện người dùng Java Swing (JFrame, JPanel, JButton, JTextField, JFileChooser). Cách tiếp cận này giúp sinh viên thấy rõ mối liên hệ giữa các sự kiện người dùng (Event-driven programming) và các tiến trình truyền nhận dữ liệu nền tảng qua mạng.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng cụ thể trong đào tạo đại học và tự nghiên cứu:

  • Sinh viên chuyên ngành: Phù hợp với sinh viên năm thứ hai hoặc năm thứ ba thuộc các ngành Công nghệ Thông tin, Kỹ thuật Phần mềm, Mạng máy tính và Truyền thông dữ liệu, Hệ thống Thông tin.
  • Yêu cầu kiến thức tiên đề (Prerequisites): Người học bắt buộc phải có kiến thức khái quát về Mạng máy tính (các tầng giao thức, địa chỉ IP, cổng, mô hình truyền thông) và kỹ năng Lập trình cơ bản bằng ngôn ngữ Java (cú pháp, lập trình hướng đối tượng, xử lý ngoại lệ, luồng dữ liệu).
  • Giảng viên bộ môn: Giáo trình đóng vai trò là tài liệu hướng dẫn giảng dạy tại phòng thực hành (Lab Manual), cung cấp khung bài giảng, mã nguồn mẫu, kịch bản hướng dẫn sinh viên thao tác trên máy tính, và ngân hàng bài tập để xây dựng đề kiểm tra quá trình cũng như đề thi kết thúc học phần 90 phút.
  • Người tự học và kỹ sư phần mềm: Lập trình viên có nhu cầu củng cố kiến thức nền tảng về lập trình hệ thống mạng, cơ chế hoạt động của Socket, giao thức FTP, quản lý tiểu trình và kiến trúc đối tượng phân tán trên nền tảng tảng công nghệ Java.

Câu hỏi thường gặp

1. Giáo trình này phù hợp nhất với những ai?

Giáo trình được thiết kế dành riêng cho sinh viên ngành Công nghệ Thông tin và Mạng máy tính tại các trường đại học, cao đẳng đang theo học học phần Thực hành Lập trình mạng, cũng như những người muốn nắm vững nguyên lý lập trình mạng thông qua ngôn ngữ Java.

2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học?

Theo đề cương mô tả môn học, người học cần có kiến thức khái quát về mạng máy tính (mô hình OSI, TCP/IP, địa chỉ IP, cổng dịch vụ) và kỹ năng lập trình Java căn bản (hướng đối tượng, xử lý ngoại lệ, cấu trúc dữ liệu).

3. Điểm khác biệt lớn nhất giữa giáo trình này và các tài liệu lý thuyết là gì?

Tài liệu tập trung 100% vào năng lực thực thi (hands-on). Mọi khái niệm lý thuyết (như Socket, FTP, Thread, RMI) đều được cụ thể hóa bằng các bước triển khai trực quan: hướng dẫn cấu hình phần mềm, mã nguồn chi tiết, thiết kế giao diện đồ họa Swing và kiểm thử trực tiếp trên môi trường máy cục bộ và mạng LAN.

4. Làm thế nào để tự học giáo trình này đạt hiệu quả cao nhất?

Người học nên tuân thủ nguyên tắc: đọc trước lý thuyết của từng bài, tự tay gõ lại mã nguồn mẫu thay vì sao chép, tự sửa các lỗi phát sinh trong quá trình biên dịch/kết nối, và bắt buộc phải tự giải quyết các bài tập làm thêm ở cuối mỗi bài học để rèn luyện tư duy độc lập.

5. Có những tài liệu hoặc môi trường bổ trợ nào cần chuẩn bị kèm theo giáo trình?

Người học cần cài đặt môi trường máy tính gồm: Java Development Kit (JDK), NetBeans IDE, bộ cài đặt WampServer (cho MySQL và phpMyAdmin), Microsoft SQL Server Management Studio Express, cùng các tệp thư viện điều khiển kết nối cơ sở dữ liệu (mysql-connector-java và sqljdbc.jar).


Kết luận

Giáo trình Hướng Dẫn Thực Hành Lập Trình Mạng Máy Tính của TS. Văn Thiên Hoàng và KS. Nguyễn Trọng Minh Hồng Phước là tài liệu học tập chuẩn mực về mặt kỹ năng lập trình mạng tại Đại học Công nghệ TP.HCM (HUTECH). Giá trị cốt lõi của tài liệu nằm ở tính sư phạm rõ ràng, kết hợp nhuần nhuyễn giữa nền tảng mạng máy tính với kỹ thuật lập trình Java hiện đại. Lộ trình học tập từ kết nối cơ sở dữ liệu, thao tác tệp, phân giải địa chỉ mạng, kiểm soát luồng xử lý đến xây dựng hệ thống Client - Server qua TCP/UDP/FTP và phân tán RMI tạo nên một hệ thống kiến thức toàn diện cho sinh viên chuyên ngành. Để hoàn thiện nội dung tài liệu học tập, ban biên tập tiếp nhận các ý kiến đóng góp thông qua hòm thư điện tử chính thức: tailieuhoctap@hutech.vn.