Chuyên đề Mạng máy tính: mô hình phân tầng, HTTP, HTTPS, DNS, TCP, UDP, ARP và NAT
Chuyên đề Mạng máy tính này dành cho việc học backend và ôn tập phỏng vấn, sắp xếp các bài viết về mạng trên site theo thứ tự “mô hình phân tầng -> application layer -> transport layer -> network layer -> security”.
Dành cho ai
- Backend developer đang học Mạng máy tính một cách có hệ thống.
- Người chuẩn bị cho phỏng vấn network tại các công ty vừa và lớn, dù là ứng viên mới ra trường hay đã có kinh nghiệm.
- Người đọc chỉ học thuộc rời rạc các kiến thức như HTTP, HTTPS, TCP, DNS, Socket.
- Kỹ sư muốn liên hệ kiến thức mạng với RPC, gateway, load balancing và system design.
Trọng tâm học
- Giá trị cốt lõi của phân tầng mạng là chia nhỏ một vấn đề giao tiếp phức tạp; mỗi tầng chỉ giải quyết phần việc của mình.
- HTTP, HTTPS, DNS là những kiến thức application layer được sử dụng thường xuyên nhất trong phát triển backend.
- Các điểm thường được hỏi về TCP tập trung ở quản lý kết nối, truyền tin cậy, congestion control, TIME_WAIT và Keepalive.
- Kiến thức network layer như ARP, NAT giúp hiểu giao tiếp trong LAN, truy cập mạng nội bộ và mạng bên ngoài, cũng như xử lý sự cố.
- Trong phỏng vấn, cần biết kết hợp một request hoàn chỉnh để xâu chuỗi protocol, connection, encryption, resolution và transmission.
Thứ tự đọc đề xuất
- Tổng hợp câu hỏi phỏng vấn Mạng máy tính thường gặp (phần 1) và Tổng hợp câu hỏi phỏng vấn Mạng máy tính thường gặp (phần 2): trước tiên xây dựng danh sách câu hỏi trọng tâm.
- Giải thích chi tiết mô hình bảy tầng OSI và mô hình bốn tầng TCP/IP: hiểu cách phân tầng mạng và trách nhiệm của từng tầng.
- Điều gì thực sự xảy ra từ lúc nhập URL đến khi trang được hiển thị?: dùng một quy trình hoàn chỉnh để liên kết DNS, TCP, HTTP và quá trình xử lý của trình duyệt.
- HTTP vs HTTPS, RSA và ECDHE trong HTTPS handshake, Tổng hợp HTTP status code thường gặp: bổ sung các vấn đề trọng tâm ở application layer.
- TCP three-way handshake và four-way termination, Đảm bảo tính tin cậy khi truyền dữ liệu TCP, Giải thích chi tiết TCP TIME_WAIT: tập trung nắm vững TCP.
Bài viết cốt lõi
Tổng quan và nền tảng
- Tổng hợp câu hỏi phỏng vấn Mạng máy tính thường gặp (phần 1): bao quát các vấn đề nền tảng như mô hình mạng, HTTP, HTTPS, DNS.
- Tổng hợp câu hỏi phỏng vấn Mạng máy tính thường gặp (phần 2): tiếp tục hệ thống hóa các vấn đề thường gặp về TCP, UDP, Socket và network security.
- Giải thích chi tiết mô hình bảy tầng OSI và mô hình bốn tầng TCP/IP: hiểu mô hình mạng, phân tầng protocol và quá trình đóng gói dữ liệu.
- Điều gì thực sự xảy ra từ lúc nhập URL đến khi trang được hiển thị?: xâu chuỗi các kiến thức mạng thường gặp bằng một request.
Application layer
- Tổng hợp các protocol thường gặp ở application layer: hệ thống hóa các protocol như HTTP, WebSocket, SMTP, FTP, SSH, DNS.
- HTTP vs HTTPS: hiểu HTTPS encryption, certificate, authentication và integrity protection.
- RSA và ECDHE trong HTTPS handshake: phân biệt các phương thức key exchange và forward secrecy.
- HTTP 1.0 vs HTTP 1.1: hiểu sự khác biệt về persistent connection, cache, Host header và các khía cạnh khác.
- Tổng hợp HTTP status code thường gặp: nắm được ý nghĩa và trường hợp sử dụng của status code từ 1xx đến 5xx.
- Giải thích chi tiết hệ thống tên miền DNS: hiểu domain resolution, recursive query, iterative query và cache.
- Có HTTP rồi, tại sao vẫn cần RPC?: làm rõ mối quan hệ về tầng giữa HTTP và RPC.
Transport layer, network layer và security
- TCP three-way handshake và four-way termination: nắm được việc thiết lập, ngắt connection và các state quan trọng.
- Đảm bảo tính tin cậy khi truyền dữ liệu TCP: hiểu sequence number, acknowledgment, retransmission, flow control và congestion control.
- Giải thích chi tiết TCP TIME_WAIT: hiểu vai trò, ảnh hưởng và giới hạn tối ưu hóa TIME_WAIT.
- TCP Keepalive và HTTP Keep-Alive khác nhau thế nào?: phân biệt keepalive ở transport layer và persistent connection ở application layer.
- Tại sao TCP là byte stream còn UDP là datagram?: hiểu sự khác biệt về ranh giới dữ liệu giữa TCP và UDP.
- Giải thích chi tiết giao thức ARP, Giải thích chi tiết giao thức NAT, Tổng hợp các phương thức network attack thường gặp: bổ sung kiến thức cơ bản về network layer và security.
Câu hỏi thường gặp
- Mô hình bảy tầng OSI và mô hình bốn tầng TCP/IP khác nhau thế nào?
- Từ lúc nhập URL đến khi trang được hiển thị, phần network diễn ra thế nào?
- HTTP và HTTPS khác nhau thế nào? Quá trình HTTPS handshake diễn ra ra sao?
- Điểm khác biệt cốt lõi giữa HTTP 1.0, 1.1 và 2.0 là gì?
- Các HTTP status code thường gặp lần lượt biểu thị điều gì?
- Tại sao TCP three-way handshake và four-way termination không thể thiếu?
- TCP đảm bảo truyền tin cậy thế nào? Congestion control và flow control khác nhau thế nào?
- Tại sao TIME_WAIT tồn tại? Làm thế nào để chẩn đoán khi có quá nhiều TIME_WAIT?
- TCP Keepalive và HTTP Keep-Alive khác nhau thế nào?
- DNS, ARP và NAT lần lượt giải quyết vấn đề gì?
Chuyên đề liên quan
- Hệ thống kiến thức máy tính cơ bản
- Chuyên đề Operating System
- Hệ thống kiến thức Distributed System
- Chuyên đề RPC
- Hệ thống kiến thức High-Performance
Lời cuối
Nếu nội dung hữu ích với bạn, hãy tiện tay tặng JavaGuide một Star miễn phí để ủng hộ: GitHub | Gitee.
JavaGuide đã được duy trì gần bảy năm, tích lũy 6100+ commit, với sự chung tay hoàn thiện của 620+ contributor. Star, phản hồi và PR của bạn đều là động lực để dự án tiếp tục cập nhật.
Nếu bạn đang chuẩn bị phỏng vấn backend / phát triển ứng dụng AI, có thể tham khảo Knowledge Planet của tôi, bao gồm các project thực tế về backend và AI, tối ưu CV, hỏi đáp 1-1 và tài liệu về các trọng điểm thường gặp, đã được duy trì liên tục sáu năm.
