Chương 6 Tầng vận chuyển MẠNG MÁY TÍNH Chức năng - 1 Cung cấp kênh truyền dữ liệu ở mức logic giữa 2 tiến trình trên 2 Application máy application transport network network Presentation data link network data link physical data link physical physical Session network data link physical Transport network data link physical Network network data link Data link physical Physical application application transport transport network network data data link link physical Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh physical 2 Nội dung Giới thiệu Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP Giao thức UDP Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 3 Nhắc lại source message M application segment Ht M transport packet Hn Ht M network frame Hl Hn Ht M link physical link physical switch destination Hn Ht M network M application Hl Hn Ht M link Hn Ht M Ht M transport physical Hn Ht M network link router Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 4 physical tầng vận chuyển - 1 P2 P3 M M application Process nhận? P1 transport Ht D Ht D P4 M Gởi đến Process? M network H n segment M application application Ht D DHt D transport transport network H n segment network Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 5 tầng vận chuyển - 2 Thực thi ở end-system Bên gởi: thực hiện Dồn kênh Nhận dữ liệu từ tầng ứng dụng (từ các socket) Phân đoạn thông điệp ở tầng ứng dụng thành các segment Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng Transport Chuyển các segment xuống tầng mạng (network layer) Bên nhận: thực hiện Phân kênh Nhận các segment từ tầng mạng Phân rã các segment thành thông điệp tầng ứng dụng Chuyển thông điệp lên tầng ứng dụng (đến socket tương ứng) Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 6 tầng vận chuyển - 3 Hỗ trợ Truyền dữ liệu đáng tin cậy • Điều khiển luồng • Điều khiển tắt nghẽn • Thiết lập và duy trì kết nối Truyền dữ liệu không đáng tin cậy • Nổ lực gởi dữ liệu hiệu quả nhất Không hỗ trợ Đảm bảo thời gian trễ Đảm bảo băng thông Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 7 Dồn kênh – Phân kênh - 1 Dồn kênh (Multiplexing): Thực hiện tại bên gởi Thu thập dữ liệu từ các socket dán nhãn dữ liệu với 1 header Phân kênh (Demultiplexing): Thực hiện tại bên nhận phân phối các segment nhận được cho socket tương ứng Khi đóng gói dữ liệu ở tầng transport, header sẽ thêm vào: Source port Destination port Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 8 Dồn kênh – Phân kênh - 2 32 bits source port # dest port # other header fields application data (message) Cấu trúc của một segment Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 9 Dồn kênh – Phân kênh - 3 P2 P1 P1 6428 5775 SP: 6428 DP: 5775 SP: 5775 server Client DP: 6428 IP: B IP:A Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 10 Nội dung Giới thiệu Giao thức UDP Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 11 UDP - 1 UDP: User Datagram Protocol [rfc768] Dịch vụ “nỗ lực” để truyền nhanh Gói tin UDP có thể: • Mất • Không đúng thứ tự Không kết nối: • Không có handshaking giữa bên gửi và nhận…
Tổng quan về giáo trình
Tài liệu học tập "Chương 6: Tầng vận chuyển" thuộc học phần Mạng máy tính, do Khoa Công nghệ Thông tin – Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia TP. Hồ Chí Minh biên soạn. Trong cấu trúc phân tầng của hệ thống mạng máy tính (Application, Transport, Network, Data Link, Physical), tầng vận chuyển giữ vị trí trung gian thiết yếu, chịu trách nhiệm thiết lập kênh truyền dữ liệu mức logic giữa các tiến trình ứng dụng (process-to-process) vận hành trên các hệ thống đầu cuối (end-systems).
Mục tiêu học tập của tài liệu tập trung vào các chuẩn đầu ra chính:
- Hiểu rõ nguyên lý hoạt động của tầng vận chuyển và cơ chế phân biệt giữa giao tiếp giữa hai máy chủ (host-to-host) ở tầng mạng với giao tiếp giữa hai tiến trình (process-to-process) ở tầng vận chuyển.
- Nắm vững cơ chế dồn kênh (multiplexing) tại bên gửi và phân kênh (demultiplexing) tại bên nhận thông qua việc sử dụng socket và số hiệu cổng (port numbers).
- Phân tích cấu trúc tiêu đề gói tin, đặc tính hoạt động và phạm vi ứng dụng của giao thức không kết nối UDP (User Datagram Protocol) theo chuẩn RFC 768.
- Nắm vững các nguyên lý xây dựng giao thức truyền dữ liệu đáng tin cậy (Reliable Data Transfer - RDT) trên nền tảng kênh truyền không tin cậy thông qua các mô hình máy trạng thái hữu hạn (Finite State Machine - FSM).
- Phân tích và so sánh các kỹ thuật truyền dữ liệu theo đường ống (pipelining) bao gồm giao thức Go-Back-N và giao thức Gửi lại có chọn lọc (Selective Repeat).
Tài liệu được cấu trúc theo phương pháp suy luận kỹ thuật tuần tự: đi từ việc định vị vai trò của tầng vận chuyển, phân tích giao thức phi kết nối đơn giản UDP, giải quyết bài toán cốt lõi về độ tin cậy qua các phiên bản RDT (từ rdt1.0 đến rdt3.0), và mở rộng sang các kỹ thuật tối ưu hóa băng thông bằng cơ chế cửa sổ trượt (sliding window). Điểm đặc sắc của tài liệu là việc chuẩn hóa các quy trình truyền thông bằng sơ đồ máy trạng thái FSM chi tiết cho cả bên gửi và bên nhận, kết hợp với các bài toán tính toán hiệu suất định lượng.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Nội dung bài giảng được chia thành 4 chủ đề kỹ thuật nối tiếp nhau:
-
Tổng quan Tầng vận chuyển và Cơ chế Dồn kênh/Phân kênh:
- Khái niệm: Cung cấp kênh truyền logic giữa các tiến trình chạy trên các máy khác nhau.
- Chức năng bên gửi (Dồn kênh - Multiplexing): Thu thập dữ liệu từ các socket ở tầng ứng dụng, chia nhỏ thành các đoạn dữ liệu (segment), dán nhãn tiêu đề (header) chứa cổng nguồn (Source Port) và cổng đích (Destination Port), sau đó chuyển xuống tầng mạng.
- Chức năng bên nhận (Phân kênh - Demultiplexing): Nhận segment từ tầng mạng, kiểm tra tiêu đề và phân phối dữ liệu đến đúng socket của tiến trình đang chờ.
- Phạm vi hỗ trợ: Hỗ trợ truyền tin cậy (điều khiển luồng, điều khiển tắc nghẽn, quản lý kết nối) hoặc truyền không tin cậy (nỗ lực tối đa - best-effort); không hỗ trợ đảm bảo giới hạn thời gian trễ và dung lượng băng thông.
-
Giao thức UDP (User Datagram Protocol - [RFC 768]):
- Đặc điểm: Dịch vụ truyền dữ liệu "nỗ lực tối đa" không kết nối (connectionless), không thực hiện bắt tay (handshaking), không duy trì trạng thái kết nối (no connection state), xử lý các gói tin hoàn toàn độc lập.
- Cấu trúc Segment (tiêu đề 32-bit): Gồm 4 trường thông tin: Source Port (16 bit), Destination Port (16 bit), Length (chiều dài gói tính cả header) và Checksum (kiểm tra lỗi bit), theo sau là dữ liệu tầng ứng dụng (Application Data).
- Trường hợp sử dụng: Các ứng dụng chấp nhận mất dữ liệu nhưng đòi hỏi tốc độ cao và độ trễ thấp như DNS, SNMP, TFTP và truyền phát đa phương tiện (multimedia).
-
Nguyên tắc truyền dữ liệu đáng tin cậy (Reliable Data Transfer - RDT):
- Phân tích sự phụ thuộc của độ phức tạp nghi thức vào đặc tính của kênh truyền bên dưới thông qua các mô hình FSM:
- rdt1.0: Kênh truyền lý tưởng, không có lỗi bit và không bị mất gói tin.
- rdt2.0: Kênh truyền có thể xuất hiện lỗi bit. Sử dụng mã kiểm tra (Checksum), gói tin báo nhận (ACK - Positive Acknowledgement) và báo lỗi (NAK - Negative Acknowledgement). Cơ chế dừng và chờ (Stop-and-Wait).
- rdt2.1: Giải quyết trường hợp gói tin ACK/NAK bị hỏng bằng cách bổ sung số thứ tự gói tin (Sequence Number) 1-bit (giá trị 0 và 1) để xử lý trùng lặp dữ liệu.
- rdt2.2: Loại bỏ gói tin NAK; bên nhận chỉ gửi ACK kèm số thứ tự của gói tin nhận đúng gần nhất (ACK 0, ACK 1). Bên gửi nhận ACK trùng lặp sẽ coi như gói tin bị lỗi và gửi lại.
- rdt3.0: Kênh truyền vừa có lỗi bit vừa có mất gói tin. Bổ sung bộ đếm thời gian (Countdown Timer) tại bên gửi để phát hiện mất gói dựa trên cơ chế hết thời gian chờ (Timeout) và kích hoạt gửi lại.
- Phân tích sự phụ thuộc của độ phức tạp nghi thức vào đặc tính của kênh truyền bên dưới thông qua các mô hình FSM:
-
Kỹ thuật truyền theo đường ống (Pipelining Protocols):
- Nguyên lý: Cho phép bên gửi truyền liên tiếp nhiều gói tin khi chưa nhận được ACK nhằm tăng tỷ lệ sử dụng kênh truyền ($U_{sender}$).
- Giao thức Go-Back-N (GBN): Sử dụng cửa sổ kích thước $N$ với số thứ tự $k$-bit. Bên nhận sử dụng cơ chế ACK tích lũy (Cumulative ACK) cho gói nhận đúng liên tục cao nhất và loại bỏ tất cả các gói đến sai thứ tự. Bên gửi chỉ duy trì một bộ đếm thời gian cho gói tin chưa được ACK cũ nhất; khi timeout, toàn bộ các gói tin trong cửa sổ chưa được ACK sẽ được gửi lại.
- Giao thức Gửi lại có chọn lọc (Selective Repeat - SR): Bên nhận gửi ACK độc lập cho từng gói tin nhận đúng và sử dụng bộ đệm (buffer) để lưu trữ các gói đến đúng nhưng sai thứ tự. Bên gửi duy trì bộ đếm thời gian riêng cho từng gói; khi xảy ra timeout ở gói nào, bên gửi chỉ truyền lại duy nhất gói đó.
Mô hình tiến hóa của các cơ chế truyền tin cậy:
rdt1.0 (Kênh lý tưởng)
Kiến thức nền tảng được xây dựng
- Lý thuyết phân tầng mạng: Mô hình tương tác giữa tầng ứng dụng, tầng vận chuyển và tầng mạng; cơ chế đóng gói (encapsulation) và mở gói (decapsulation) dữ liệu giữa các thực thể mạng.
- Lý thuyết thiết kế giao thức bằng máy trạng thái: Cách sử dụng FSM để mô hình hóa trạng thái chờ dữ liệu từ tầng trên (
Wait for call from above), chờ tín hiệu phản hồi (Wait for ACK/NAK), và chuyển trạng thái dựa trên các sự kiện kiểm tra (corrupt(),notcorrupt(),isACK()). - Nguyên lý kiểm soát lỗi và kiểm soát luồng: Các kỹ thuật phát hiện lỗi bit (Checksum, Parity checkbit, CRC), kỹ thuật truyền lại tự động (ARQ) và kỹ thuật quản lý bộ đệm cửa sổ trượt (Sliding Window).
Kỹ năng phát triển
- Kỹ năng kỹ thuật: Đọc hiểu và phân tích cấu trúc trường dữ liệu trong tiêu đề gói tin tầng vận chuyển; thiết kế sơ đồ FSM để cài đặt các giao thức truyền thông dữ liệu mạng.
- Kỹ năng phân tích: Tính toán định lượng hiệu suất sử dụng kênh truyền của bên gửi ($U_{sender}$) dựa trên các tham số băng thông (Bandwidth), độ trễ truyền lan (RTT/End-to-End Delay) và kích thước gói tin; phân tích xung đột giữa kích thước cửa sổ ($N$) và không gian số thứ tự trong giao thức Selective Repeat.
- Kỹ năng thực hành: Xác định và phân bổ số hiệu cổng kết nối mạng (Source Port, Destination Port) giữa các tiến trình Client - Server; lựa chọn giao thức vận chuyển (UDP hoặc các giao thức tin cậy) phù hợp với yêu cầu của từng lớp ứng dụng.
Phương pháp giảng dạy và học tập
Tài liệu áp dụng phương pháp tiếp cận sư phạm theo mô hình phát triển tăng dần (incremental engineering approach). Thay vì đưa ra trực tiếp một giao thức hoàn chỉnh, tài liệu dẫn dắt người học đi qua từng bước giải quyết bài toán kỹ thuật: bắt đầu từ điều kiện môi trường lý tưởng, từng bước đặt ra các giả định về sự cố mạng (lỗi bit, mất gói, trễ gói), phân tích nguyên nhân thất bại của phiên bản trước đó và thiết kế giải pháp bổ sung tương ứng cho phiên bản tiếp theo.
Kịch bản phát triển bài toán:
1. Kênh lý tưởng (Không lỗi, không mất gói) -> rdt1.0
2. Kênh có lỗi bit -> rdt2.0 (Checksum, ACK, NAK)
3. ACK/NAK bị lỗi -> rdt2.1 (Sequence Number 0, 1)
4. Tối ưu hóa phản hồi -> rdt2.2 (Bỏ NAK, dùng ACK + Seq)
5. Kênh có lỗi bit và mất gói tin -> rdt3.0 (Countdown Timer)
6. Kênh có băng thông lớn, trễ cao -> Pipelining (Go-Back-N, Selective Repeat)
Hệ thống bài tập và nghiên cứu tình huống trong tài liệu bao gồm:
- Phân tích định lượng hiệu năng: Khảo sát bài toán truyền dữ liệu trên đường truyền băng thông $1\text{ Gbps}$, độ trễ hai đầu ($15\text{ ms}$ end-to-end delay), kích thước gói tin $8\text{ Kb}$. Qua đó chứng minh cơ chế dừng và chờ (Stop-and-Wait) của rdt3.0 làm lãng phí phần lớn tài nguyên băng thông, dẫn đến yêu cầu bắt buộc phải chuyển đổi sang kỹ thuật đường ống (Pipelining).
- Phân tích ca sự cố (Trace Scenarios): Theo dõi chuỗi sự kiện truyền - nhận dữ liệu thông qua sơ đồ tương tác thời gian giữa bên gửi và bên nhận trong các tình huống: gói tin bị mất trên đường truyền, gói tin ACK bị mất, và bộ đếm thời gian timeout kích hoạt sớm trước khi ACK kịp đến nơi.
- Bài tập thiết kế và tính toán: Xác định mối quan hệ toán học giữa không gian số thứ tự gói tin ($k$-bit) và kích thước cửa sổ ($N$) trong giao thức Selective Repeat để ngăn ngừa hiện tượng bên nhận nhầm lẫn giữa gói tin mới và gói tin trùng lặp.
Phương pháp đánh giá học tập được xây dựng trên việc kiểm tra khả năng giải thích hoạt động của từng trạng thái trong FSM, vẽ lại biểu đồ luồng gói tin của giao thức Go-Back-N và Selective Repeat, và tính toán chính xác các chỉ số hiệu năng mạng.
Điểm nổi bật và cập nhật
Tài liệu thể hiện rõ tính chuẩn xác học thuật thông qua việc bám sát các tiêu chuẩn quốc tế và liên hệ trực tiếp với kiến trúc Internet thực tế:
| Tiêu chí | Nội dung thể hiện trong giáo trình |
|---|---|
| Tiêu chuẩn kỹ thuật | Tích hợp chuẩn đặc tả quốc tế RFC 768 cho giao thức UDP, mô tả chính xác định dạng gói tin nhị phân 32-bit. |
| Tính ứng dụng thực tế | Liên kết trực tiếp giao thức UDP với các dịch vụ mạng nền tảng đang hoạt động: Hệ thống phân giải tên miền (DNS), Giao thức quản lý mạng đơn giản (SNMP), Giao thức truyền tệp đơn giản (TFTP). |
| Phân định kiến trúc | Làm rõ ranh giới trách nhiệm giữa các tầng: giải thích cách tầng ứng dụng (Application Layer) có thể tự cài đặt cơ chế kiểm soát lỗi khi sử dụng giao thức vận chuyển không tin cậy như UDP. |
| Mô hình định tuyến thực tế | Minh họa cụ thể cơ chế ghép nối Socket bằng cặp thông tin Địa chỉ IP và Số hiệu cổng (Source IP/Port $\leftrightarrow$ Destination IP/Port) giữa máy Client ($IP: A, Port: 5775$) và máy Server ($IP: B, Port: 6428$). |
Đối tượng sử dụng giáo trình
Tài liệu được thiết kế chuyên biệt phục vụ các đối tượng cụ thể trong đào tạo đại học và nghiên cứu kỹ thuật:
- Sinh viên đại học: Sinh viên từ năm thứ hai hoặc năm thứ ba thuộc các chuyên ngành Công nghệ Thông tin, Mạng máy tính và Truyền thông dữ liệu, Khoa học Máy tính, Kỹ thuật Phần mềm, Hệ thống Thông tin.
- Yêu cầu kiến thức tiên quyết (Prerequisites):
- Đã hoàn thành học phần Nhập môn Lập trình và Cấu trúc Dữ liệu & Giải thuật.
- Nắm vững kiến thức nền tảng về kiến trúc máy tính, hệ thống số nhị phân và các phép toán logic trên bit (sử dụng trong Checksum, Parity, CRC).
- Có hiểu biết tổng quan về mô hình phân tầng mạng máy tính cơ bản.
- Giảng viên chuyên ngành: Sử dụng làm tài liệu khung để triển khai bài giảng lý thuyết trên lớp; làm căn cứ xây dựng ngân hàng câu hỏi thi kết thúc học phần liên quan đến máy trạng thái FSM, tính toán hiệu suất kênh truyền và phân tích giao thức mạng.
- Kỹ sư và người tự học: Tài liệu tham khảo chuẩn xác dành cho kỹ sư phát triển phần mềm hệ thống, kỹ sư mạng cần chuẩn hóa lại hiểu biết về cơ chế hoạt động của các tầng giao thức lõi trong mô hình TCP/IP.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Tài liệu được biên soạn phục vụ trực tiếp cho sinh viên đại học khối ngành Công nghệ Thông tin, kỹ sư mạng và lập trình viên cần nắm vững cơ chế hoạt động ở mức hệ thống của tầng vận chuyển.
2. Cần kiến thức nền nào để học?
Người học cần có kiến thức cơ bản về mô hình mạng phân tầng, biểu diễn dữ liệu nhị phân, thuật toán cơ bản và nguyên lý hoạt động của máy trạng thái hữu hạn (FSM).
3. Điểm khác biệt với giáo trình khác?
Tài liệu không chỉ liệt kê các giao thức sẵn có mà sử dụng phương pháp xây dựng giao thức tăng dần thông qua mô hình FSM toán học (rdt1.0 $\rightarrow$ rdt3.0), giúp người học hiểu rõ nguyên nhân xuất hiện của từng trường dữ liệu trong tiêu đề segment.
4. Làm sao để tự học hiệu quả?
Người học nên vẽ lại các sơ đồ chuyển trạng thái FSM của bên gửi và bên nhận trên giấy; thực hiện giải các bài toán tính toán hiệu suất kênh truyền $U_{sender}$ và mô phỏng từng bước quá trình dịch chuyển của cửa sổ trượt trong Go-Back-N và Selective Repeat.
5. Có tài liệu bổ trợ nào kèm theo?
Tài liệu kết hợp với văn bản đặc tả tiêu chuẩn RFC 768 (UDP), sơ đồ cấu trúc gói tin 32-bit và các bài tập mô phỏng sự cố mạng để đối chiếu quá trình xử lý gói tin.
Kết luận
Tài liệu "Chương 6: Tầng vận chuyển" của Khoa Công nghệ Thông tin – Trường Đại học Khoa học Tự nhiên TP. Hồ Chí Minh cung cấp hệ thống kiến thức nền tảng và có tính logic cao về cơ chế giao tiếp giữa các tiến trình mạng. Lộ trình học tập được định hình chặt chẽ từ việc hiểu rõ cơ chế dồn/phân kênh socket, nắm vững giao thức UDP [RFC 768], giải mã chi tiết các mô hình truyền dữ liệu đáng tin cậy RDT bằng máy trạng thái FSM, cho đến việc làm chủ các kỹ thuật tối ưu hóa đường truyền theo đường ống (Go-Back-N, Selective Repeat). Đây là khối kiến thức cốt lõi giúp người học có đầy đủ cơ sở lý thuyết để tiếp tục nghiên cứu sâu vào các giao thức phức tạp hơn như TCP ở các nội dung tiếp theo.