🌐 Nhập Môn Mạng Máy Tính

Mindmap Ôn Thi Giữa Kỳ — UIT 2025-2026

30 câu trắc nghiệm 40 phút 3 chương chính
~40%
Tầng Vận Chuyển
~35%
Tầng Ứng Dụng
~15%
Tổng Quan Internet
~10%
Khái Niệm Cơ Bản
🔥

Tầng Vận Chuyển (Transport Layer)

Chiếm nhiều câu hỏi nhất — TCP, UDP, RDT, GBN, SR

~40%

📡 TCP — Giao thức điều khiển truyền TRỌNG TÂM

  • TCP = Transmission Control Protocol — truyền tải tin cậy, đúng thứ tự
  • Hướng kết nối, full-duplex, point-to-point
  • Seq Number: STT byte đầu tiên trong segment hiện tại
  • ACK Number: STT byte tiếp theo bên nhận đang chờ
  • Window Size: số byte bên nhận có thể nhận thêm (điều khiển luồng)
  • MSS (Maximum Segment Size): giới hạn dữ liệu tối đa mỗi segment
  • ACK tích lũy (cumulative ACK)
  • Cơ chế pipelining với window size
📝 Câu hỏi thực tế
TCP viết tắt của gì? → B. Transmission Control Protocol
Seq Number biểu thị gì? → C. STT byte đầu tiên trong đoạn TCP hiện tại
Window Size dùng để làm gì? → A. Cho biết số byte bên nhận có thể nhận thêm
MSS giới hạn gì? → C. MSS (Maximum Segment Size)

🤝 Bắt tay 3 bước & Đóng kết nối

  • B1: Client → SYN → Server
  • B2: Server → SYN-ACK → Client
  • B3: Client → ACK → Server
  • Mục đích: Thiết lập và xác nhận kết nối TCP hai chiều
  • Đóng kết nối: Gửi FIN, nhận ACK. Mỗi bên đóng riêng
  • Khi A gửi FIN nhưng B chưa gửi FIN → A vẫn nhận dữ liệu từ B
📝 Câu hỏi thực tế
Three-Way-Handshake dùng để? → B. Thiết lập và xác nhận kết nối TCP giữa client và server
A gửi FIN, B chưa gửi FIN, điều gì xảy ra? → A. A vẫn nhận dữ liệu từ B

🔢 Tính toán Seq & ACK trong TCP

  • ACK = Seq + Length (của gói vừa nhận)
  • Ví dụ: gửi 3 gói pkt0,pkt1,pkt2 mỗi gói 500B, seq₀=100
  • ACK0 = 100+500 = 600
  • ACK1 = 600+500 = 1100
  • ACK2 = 1100+500 = 1600
  • Nếu ACK1 mất, chỉ nhận ACK0 và ACK2 → ACK tích lũy → tiếp tục gửi pkt3 (seq=1600)
📝 Câu hỏi thực tế
B gửi A: Seq=1000, ACK=2000, Window=4000. Đúng nhất? → D. A gửi tối đa 4000B tiếp theo từ byte 2000
ACK0, ACK1, ACK2 lần lượt là? → C. 600, 1100, 1600
ACK1 bị mất, nhận ACK0 và ACK2, A làm gì? → A. Tiếp tục gửi pkt3 (seq=1600)

📦 UDP — User Datagram Protocol

  • Không kết nối (connectionless), không tin cậy, best-effort
  • Header 8 byte: Src Port (2B) + Dst Port (2B) + Length (2B) + Checksum (2B)
  • Dữ liệu thực bắt đầu từ byte thứ 9
  • Length bao gồm cả header → Dữ liệu thực = Length - 8
  • Gói tin UDP được đối xử độc lập nhau
  • UDP socket = (IP đích, Port đích)
  • Ưu: nhanh, phù hợp streaming, DNS, VoIP
📝 Câu hỏi thực tế
UDP không chứa trường nào? → C. Sequence Number
Header UDP bao nhiêu byte? → D. 8 byte
Length=150, dữ liệu thực bao nhiêu? → B. 142 byte
UDP connectionless vì? → B. Gói tin được đối xử độc lập
Vùng dữ liệu UDP bắt đầu byte thứ? → D. 9

🔌 Socket & Multiplexing/Demultiplexing

  • Socket = "cửa ra vào" giữa tầng ứng dụng và vận chuyển
  • Socket TCP = (IP nguồn, Port nguồn, IP đích, Port đích)
  • Socket UDP = (IP đích, Port đích)
  • Multiplexing (bên gửi): gom dữ liệu từ nhiều socket → thêm header
  • Demultiplexing (bên nhận): phân phối segment đúng socket
  • Port: xác định tiến trình đang gửi/nhận dữ liệu
📝 Câu hỏi thực tế
Socket được định danh bởi? → B. (Địa chỉ IP, số cổng)
UDP socket xác định bởi? → C. IP đích, Port đích
Port trong TCP/UDP dùng để? → D. Xác định tiến trình gửi/nhận dữ liệu

🔄 Truyền Tin Cậy (RDT 1.0 → 3.0)

  • RDT 1.0: Kênh hoàn toàn tin cậy, không lỗi bit, không mất gói
  • RDT 2.0: Thêm checksum + ACK/NAK. Nhược: ACK/NAK bị hỏng?
  • RDT 2.1: Thêm sequence number (0-1) để tránh nhầm lẫn gói trùng
  • RDT 2.2: Loại bỏ NAK, chỉ dùng ACK + seq number. Nhược: không xử lý mất gói
  • RDT 3.0: Thêm timer → xử lý mất gói ACK, gói tin. Stop-and-wait
📝 Câu hỏi thực tế
RDT nào xử lý mất gói ACK? → C. RDT 3.0
RDT 2.1 thêm cơ chế gì? → B. Sequence number cho từng gói
Phát hiện lỗi gói tin dùng kỹ thuật gì? → D. Checksum
RDT 3.0 dùng số thứ tự 0-1, stop-and-wait → Đúng (đề 2025-2026 câu 15)

🪟 Go-Back-N & Selective Repeat

  • Go-Back-N: Gửi tối đa N gói không chờ ACK
  • ACK tích lũy (cumulative ACK)
  • Gói bị mất → bỏ tất cả gói sau, gửi ACK lặp gói cuối nhận đúng
  • Timeout → gửi lại toàn bộ từ gói bị mất
  • Selective Repeat: ACK riêng từng gói, buffer out-of-order
  • Chỉ gửi lại gói không được ACK
  • Pipelining: gửi nhiều gói cùng lúc, tăng hiệu suất
📝 Câu hỏi thực tế
GBN khi gói bị mất, bên nhận làm gì? → D. Bỏ gói sau, gửi ACK lặp cho gói cuối nhận đúng
Ghép nối: (1)Không kết nối=UDP, (2)Có kết nối=TCP, (3)Stop-and-wait=RDT3.0, (4)ACK tuần tự gửi lại toàn bộ=GBN, (5)ACK độc lập buffer out-of-order=SR → B. 1e,2a,3c,4g,5b

✅ Checksum

  • Dùng để phát hiện lỗi trong gói tin
  • Checksum UDP có độ dài 16 bit
  • Cách tính: Cộng 2 chuỗi 16-bit → lấy bù 1 (đảo bit)
  • Ví dụ: 10101100 01010001 + 01001001 11001100
  • Sum = 11110101 00011101 → Checksum = 00001010 11100010
📝 Câu hỏi thực tế
Tính checksum 2 chuỗi 16-bit: 10101100 01010001 + 01001001 11001100 → A. 00001001 11100010

Tầng Ứng Dụng (Application Layer)

HTTP, DNS, Email (SMTP/IMAP/POP3), FTP, Cookie

~35%

🌐 HTTP — HyperText Transfer Protocol

  • Giao thức tầng ứng dụng cho Web, mô hình Client-Server
  • Sử dụng TCP, cổng 80 (HTTPS: cổng 443, mã hóa TLS/SSL)
  • HTTP không lưu trạng thái (stateless)
  • Phương thức: GET (lấy nội dung), POST (gửi data), PUT (upload), HEAD
  • HTTP không bền vững (1.0): 1 đối tượng/kết nối → 2RTT + truyền file
  • HTTP bền vững (1.1): nhiều đối tượng/kết nối
📝 Câu hỏi thực tế
HTTP viết tắt của gì? → C. HyperText Transfer Protocol
Lấy nội dung trang web dùng phương thức nào? → A. GET
HTTP không bền vững, thời gian đáp ứng? → B. 2RTT + thời gian truyền file
HTTPS khác HTTP chỗ nào? → B. Dữ liệu mã hóa qua TLS/SSL
Web server chạy trên cổng? → D. Cổng 80

📊 Mã trạng thái HTTP

  • 200 OK — thành công
  • 301 Moved Permanently — chuyển hướng vĩnh viễn
  • 304 Not Modified — dùng cache, vẫn xem được nội dung
  • 400 Bad Request — yêu cầu lỗi
  • 404 Not Found — đối tượng không tồn tại
  • 500/502 — lỗi server
📝 Câu hỏi thực tế
Truy cập 4 lần nhận 200, 304, 404, 502. Mấy lần xem thành công? → B. 2 lần (200 và 304)
Mã 404 có ý nghĩa? → B. Đối tượng client yêu cầu không có
200 "OK" đúng hay sai? → A. Đúng

🍪 Cookie & Web Cache

  • Cookie: giữ phiên bản/trạng thái người dùng sau đăng nhập
  • 4 thành phần: header response, header request, file cookie trình duyệt, DB server
  • Web Cache (Proxy): lưu trang web, giảm thời gian phản hồi
  • Giảm tải cho origin server, tăng băng thông
📝 Câu hỏi thực tế
Kỹ thuật giữ phiên bản sau đăng nhập? → D. Cookies
Mục đích chính của web cache? → C. Giảm thời gian phản hồi và tăng băng thông

🔍 DNS — Hệ Thống Phân Giải Tên Miền

  • Chức năng: Phân giải tên miền ↔ IP
  • Sử dụng UDP, cổng 53
  • CSDL phân tán, phân cấp: Root → TLD → Authoritative
  • DNS cục bộ: nhận truy vấn đầu tiên từ host
  • Truy vấn tuần tự (iterative): DNS cục bộ tự hỏi lần lượt các server
  • Truy vấn đệ quy (recursive): server được hỏi tiếp tục hỏi server khác
  • DNS caching: lưu kết quả, có TTL
  • RR format: (name, value, type, ttl) — A, CNAME, NS, MX
📝 Câu hỏi thực tế
Trình duyệt phân giải tên miền bằng cách nào? → D. Gửi truy vấn đến DNS cục bộ
DNS cục bộ tự truy vấn tiếp, gọi là gì? → D. Truy vấn tuần tự (iterative)
DNS dùng cổng? → C. 53
Bản ghi (cnn.com, r1.infor.cnn.com, CNAME)? → A. cnn.com là tên rút gọn
Nhược điểm DNS tập trung? → D. Tất cả (tê liệt, quá tải, chi phí lớn)

✉️ Email — SMTP, IMAP, POP3

  • SMTP: gửi mail, TCP cổng 25, push protocol
  • IMAP: đọc/quản lý mail trên server
  • POP3: download mail, cổng 110
  • Mail gửi: User Agent → SMTP → Mail Server người gửi → SMTP → Mail Server người nhận (mailbox)
  • Bob gửi mail, Alice offline → mail ở mailbox Alice trên server Alice
  • Gửi và nhận mail đều dùng TCP
📝 Câu hỏi thực tế
Ghép đúng: Duyệt web=HTTP, Gửi mail=SMTP, Xem mail=POP, DNS=DNS, VoIP=SIP → A. 1-c, 2-a, 3-e, 4-f, 5-d
SMTP dùng cổng? → B. 25
Bob gửi mail, Alice offline, mail ở đâu? → D. Mailbox Alice trên server Alice
Gửi nhận mail đều cần dịch vụ TCP? → A. Đúng
Cặp FTP:UDP Port 22 đúng hay sai? → Sai (FTP dùng TCP Port 21)

📁 FTP & Các Giao Thức Khác

  • FTP = File Transfer Protocol, TCP cổng 21
  • Telnet: cổng 23
  • Bảng Port quan trọng:
  • HTTP: TCP 80 | HTTPS: TCP 443
  • SMTP: TCP 25 | POP3: TCP 110
  • FTP: TCP 21 | DNS: UDP 53
  • Telnet: TCP 23
📝 Câu hỏi thực tế
FTP viết tắt? → A. File Transfer Protocol
Truyền file giữa 2 bên dùng gì? → B. FTP
SMTP:TCP Port 25 đúng? → D. Đúng
🌍

Tổng Quan Về Internet

Cấu trúc mạng, mô hình TCP/IP, đóng gói dữ liệu, Client-Server vs P2P

~15%

🏗️ Cấu Trúc Internet

  • Mạng biên (Edge): thiết bị đầu cuối — PC, smartphone, server
  • Mạng lõi (Core): router kết nối, định tuyến + chuyển tiếp
  • Mạng truy cập (Access): DSL, Cable, Ethernet, WiFi, 4G/5G
  • Chuyển mạch kênh: dành riêng tài nguyên, không tắc nghẽn, lãng phí
  • Chuyển mạch gói: chia sẻ tài nguyên, có thể tắc nghẽn
📝 Câu hỏi thực tế
Mạng biên bao gồm gì? → D. Thiết bị đầu cuối: PC, smartphone, máy chủ web

📚 Mô Hình TCP/IP & OSI

  • TCP/IP 5 tầng: Ứng dụng → Vận chuyển → Mạng → Liên kết → Vật lý
  • OSI 7 tầng: Thêm Session + Presentation giữa App và Transport
  • Session không thuộc TCP/IP
  • Đơn vị dữ liệu: Message → Segment → Datagram → Frame → Bit
  • Đóng gói: Mỗi tầng thêm header vào dữ liệu từ tầng trên
📝 Câu hỏi thực tế
Tầng nào không thuộc TCP/IP? → B. Session
Đơn vị dữ liệu tầng Ứng dụng? → A. Message
Dữ liệu từ App xuống Physical, mỗi tầng làm gì? → B. Thêm header của lớp mình

🖥️ Client-Server vs Peer-to-Peer

  • Client-Server: Server luôn hoạt động, IP cố định. Client liên lạc server
  • Ứng dụng: Email, Web (WWW)
  • P2P: Không server cố định, peer giao tiếp trực tiếp
  • Ứng dụng: Skype, BitTorrent, KaZaA
  • Hybrid: Kết hợp cả hai mô hình
📝 Câu hỏi thực tế
WWW thuộc mô hình nào? → B. Client/Server
Skype dùng mô hình? → D. P2P
Ứng dụng dùng TCP? → A. Web, truyền file, Email
Ứng dụng dùng UDP? → C. Hội thảo, VoIP, streaming
📐

Tính Toán & Công Thức

Transmission delay, Propagation delay, Throughput, RTT

~10%

⏱️ Các Loại Trễ (Delay)

d_trans = L / R  (L: kích thước gói bit, R: tốc độ bps)
d_prop = d / s  (d: khoảng cách m, s: tốc độ lan truyền m/s)
d_total = d_proc + d_queue + d_trans + d_prop
  • Trễ truyền (Transmission): thời gian đẩy hết gói ra đường truyền
  • Trễ lan truyền (Propagation): thời gian bit di chuyển hết đường truyền
  • Trễ xử lý (Processing): kiểm tra lỗi, xác định cổng ra
  • Trễ hàng đợi (Queueing): chờ trong buffer
📝 Câu hỏi thực tế
Gói 1500B, 2Mbps, 2000km, s=2×10⁸ m/s. Tổng trễ? → d_trans = 1500×8/(2×10⁶) = 0.006s, d_prop = 2×10⁶/(2×10⁸) = 0.01s → Tổng ≈ 0.016s → D. Khác
Gói 2000B, 2Mbps. Transmission delay? → D. 8ms (2000×8/2×10⁶)

📈 Throughput & RTT

Throughput = min(R₁, R₂, ..., Rₙ) — "nút thắt cổ chai"
RTT = thời gian gói tin đi từ client → server và quay lại
  • Throughput bị giới hạn bởi liên kết có tốc độ thấp nhất
  • RTT: Round Trip Time — khứ hồi 1 gói nhỏ
  • HTTP non-persistent: 2RTT + thời gian truyền file
  • HTTP persistent with pipelining: 3RTT + thời gian truyền (tất cả)
  • HTTP persistent without pipelining: (2+n)RTT + thời gian truyền
📝 Câu hỏi thực tế
RTT là gì? → C. Thời gian gửi gói nhỏ từ client đến server và quay lại
HTTP non-persistent response time? → B. 2RTT + thời gian truyền file
📋

Bảng Tổng Hợp Port & Giao Thức

Ghi nhớ nhanh các cổng dịch vụ quan trọng

Giao thức Port TCP/UDP Chức năng
HTTP80TCPDuyệt web
HTTPS443TCPWeb mã hóa TLS/SSL
SMTP25TCPGửi email
POP3110TCPNhận email (download)
IMAP143TCPQuản lý email trên server
FTP21TCPTruyền file
DNS53UDPPhân giải tên miền
Telnet23TCPTruy cập từ xa
🧠 Mindmap Tổng Quan Toàn Bộ Kiến Thức

🖱️ Kéo để di chuyển • Cuộn để zoom • Click nút ⚪ để mở/đóng nhánh

🧩

Mẹo Ghi Nhớ Nhanh (Mnemonics)

Các câu thần chú giúp nhớ lâu

🔢 Nhớ Port — "HTTP 80, Sợ Mất Tiền Phí 25"

80 - 443 - 25 - 110 - 53 - 21 - 23
HTTP(80) HTTPS(443) SMTP(25) POP3(110) DNS(53) FTP(21) Telnet(23)

🎯 Mẹo nhớ theo cặp:

  • Web: 80 (HTTP) ↔ 443 (HTTPS) — «Tám mươi bốn bốn ba»
  • Mail gửi: 25 (SMTP) — «Hai năm gửi thư»
  • Mail nhận: 110 (POP3) — «Một trăm mười nhận thư»
  • Tên miền: 53 (DNS) — «Năm ba phân giải»
  • File: 21 (FTP) — «Hai mốt truyền file»

🔄 Nhớ RDT — "Một Hai Ba Bốn Năm"

1.0 → 2.0 → 2.1 → 2.2 → 3.0
Tốt → Checksum → SeqNum → Bỏ NAK → Timer
  • 1.0: Kênh tốt → không cần gì
  • 2.0: Có lỗi bit → thêm Checksum + ACK/NAK
  • 2.1: ACK/NAK hỏng? → thêm Sequence Number
  • 2.2: Đơn giản hóa → bỏ NAK, chỉ dùng ACK
  • 3.0: Mất gói? → thêm Timer ⏱️
💡 Mỗi phiên bản giải quyết 1 vấn đề mới. Hỏi xử lý mất gói = RDT 3.0!

⚔️ TCP vs UDP — "Tin cậy vs Tốc độ"

TCPUDP
Kết nối✅ Có❌ Không
Tin cậy✅ Đúng thứ tự❌ Best-effort
Header20+ bytes8 bytes
Seq Number✅ Có❌ Không
Flow Control✅ Window❌ Không
Ứng dụngWeb, Email, FTPDNS, VoIP, Stream
⚡ Hỏi "không chứa Seq Number" → UDP. Hỏi "header 8 byte" → UDP

🏗️ GBN vs Selective Repeat

Go-Back-NSelective Repeat
ACKTích lũy (cumulative)Riêng từng gói
Mất góiGửi lại TẤT CẢ từ gói mấtChỉ gửi lại gói mất
Buffer nhận❌ Hủy out-of-order✅ Lưu out-of-order
Đơn giản✅ Hơn❌ Phức tạp hơn
💡 GBN = "Quay lại N" → gửi lại hết. SR = "Chọn lọc" → gửi lại đúng gói mất

📧 Luồng Email — Ai gửi cho ai?

UA → SMTP → MS₁ → SMTP → MS₂ → POP3/IMAP → UA
User Agent → Mail Server Gửi → Mail Server Nhận → User Agent
  • SMTP = GỬI (push), port 25 — luôn dùng giữa các mail server
  • POP3 = NHẬN + download, port 110
  • IMAP = NHẬN + quản lý trên server, port 143
  • Alice offline? Mail nằm ở mailbox Alice trên server Alice
⚠️ Bẫy thường gặp: Hỏi "SMTP dùng để lấy mail" → SAI! SMTP chỉ GỬI

🌐 DNS — Tuần tự vs Đệ quy

  • Tuần tự (Iterative): DNS cục bộ TỰ HỎI lần lượt → "Tao hỏi từng đứa"
  • Đệ quy (Recursive): Server được hỏi sẽ HỎI TIẾP → "Mày hỏi giùm tao"
Iterative = Tự hỏi | Recursive = Nhờ hỏi
DNS cục bộ "tự truy vấn tiếp" = Iterative (tuần tự) ← HAY RA THI!
⚠️ Đề hay đánh lừa: "DNS cục bộ tự truy vấn" → Trả lời Iterative, KHÔNG phải Recursive!
🎯

Chiến Thuật Làm Bài Thi

30 câu / 40 phút ≈ 1.3 phút/câu

✅ Bước 1: Câu dễ trước (15 phút)

  • Làm ngay các câu nhớ kiến thức: Port, viết tắt, chức năng giao thức
  • Câu hỏi dạng "X viết tắt của gì" → trả lời ngay
  • Ghép nối giao thức-chức năng → thuộc bảng port
  • Mục tiêu: ~15-18 câu trong 15 phút

⏱️ Bước 2: Câu phân tích (15 phút)

  • TCP Seq/ACK: ACK = Seq + Length
  • Delay: nhớ đổi byte → bit (×8)
  • UDP Length: Dữ liệu = Length - 8
  • Câu so sánh GBN/SR/RDT → dùng bảng so sánh
⚡ Công thức hay quên: d_trans = L(bit)/R(bps) — nhớ L phải ×8 nếu đề cho byte!

🚨 Bước 3: Câu khó / bẫy (10 phút)

  • Đọc kỹ "đúng nhất", "sai", "không"
  • Câu FIN: A gửi FIN ≠ đóng kết nối hoàn toàn
  • HTTP 304 = vẫn xem được (dùng cache)
  • DNS iterative vs recursive — đề HAY đánh lừa
⚠️ TOP BẪY: "SMTP lấy mail" (SAI), "UDP có Seq Number" (SAI), "Session thuộc TCP/IP" (SAI)

🔥 Top 5 Dạng Câu Hay Ra Nhất

  • #1: Tính Seq/ACK trong TCP (mỗi đề đều có)
  • #2: Ghép nối giao thức ↔ chức năng/port
  • #3: So sánh RDT các phiên bản
  • #4: Tính delay (transmission + propagation)
  • #5: Phân biệt TCP vs UDP / GBN vs SR
🏆 Nắm chắc 5 dạng này = 70-80% điểm thi!

Bảng So Sánh Nhanh

Các cặp hay nhầm lẫn trong đề thi

🔀 HTTP Persistent vs Non-Persistent

Non-Persistent (1.0)Persistent (1.1)
Kết nốiĐóng sau 1 objectGiữ mở nhiều object
Thời gian2RTT + filePipeline: 3RTT + file
Hiệu quảKém (mở đóng liên tục)Tốt hơn

🔀 Iterative vs Recursive DNS

Iterative (Tuần tự)Recursive (Đệ quy)
Ai hỏiLocal DNS tự hỏiServer hỏi giùm
TảiPhân tán đềuNặng ở cấp trên
Kết quảTrả về referralTrả về answer

📦 Đơn vị dữ liệu theo tầng

TầngĐơn vịGiao thức
Ứng dụngMessageHTTP, SMTP, DNS
Vận chuyểnSegmentTCP, UDP
MạngDatagramIP
Liên kếtFrameEthernet
Vật lýBit
💡 Nhớ: M-S-D-F-B = Message-Segment-Datagram-Frame-Bit

📊 Mã HTTP hay thi

Ý nghĩaXem được?
200OK — thành công✅ Có
304Not Modified — dùng cache✅ Có
301Moved Permanently⚠️ Chuyển hướng
404Not Found❌ Không
502Bad Gateway❌ Không
⚡ 200 + 304 = xem được nội dung (2 lần). 404, 502 = không xem được!