TCP có kết nối, bảo đảm gói tới đủ và đúng thứ tự, tự gửi lại khi mất. UDP không kết nối, không bảo đảm gì — đổi lại nhẹ và độ trễ thấp hơn, phù hợp khi mất vài gói không nghiêm trọng bằng việc chậm.
Câu 2·TCP/IP & Vận chuyển
Bắt tay ba bước của TCP gồm những gói nào?
A.GET, 200 OK, ACK
B.SYN, ACK, FIN
C.SYN, SYN-ACK, ACK
D.HELLO, ACCEPT, CONFIRM
Đáp án: C
SYN (client xin mở) → SYN-ACK (server chấp nhận và mở chiều ngược lại) → ACK (client xác nhận). Sau ba bước này hai bên đã đồng bộ số thứ tự và kết nối sẵn sàng truyền dữ liệu.
Câu 3·HTTP & Mã trạng thái
Mã 301 và 302 khác nhau thế nào?
A.301 là tạm thời, 302 là vĩnh viễn
B.Hai mã giống nhau, chỉ khác cách viết
C.301 vĩnh viễn, còn 302 là tạm thời
D.301 dùng cho HTTP, 302 dùng cho HTTPS
Đáp án: C
301 = chuyển hướng vĩnh viễn: trình duyệt cache lại rất lâu và công cụ tìm kiếm chuyển giá trị sang URL mới. 302 = tạm thời: không cache lâu, URL cũ vẫn được coi là địa chỉ chính.
A trỏ tên miền tới một địa chỉ IPv4 (AAAA cho IPv6). CNAME là bí danh trỏ tới một tên miền khác, nên phải phân giải thêm một bước nữa mới ra IP.
Câu 5·TLS & Bảo mật
HTTPS bảo vệ được điều gì so với HTTP?
A.Chỉ giấu tên miền đang truy cập khỏi nhà mạng
B.Mã hóa, chống sửa đổi, xác thực máy chủ
C.Bảo đảm ứng dụng phía sau không có lỗ hổng
D.Chỉ mã hóa nội dung, không xác thực máy chủ
Đáp án: B
Ba thứ: bí mật (bên thứ ba không đọc được nội dung), toàn vẹn (không sửa được trên đường), xác thực máy chủ (chứng chỉ chứng minh bạn đang nói chuyện với đúng tên miền đó).
Câu 6·HTTP & Mã trạng thái
Phương thức HTTP nào được coi là "an toàn" (safe) theo đặc tả?
A.DELETE
B.PUT
C.GET
D.POST
Đáp án: C
GET (cùng với HEAD và OPTIONS) là phương thức an toàn — chỉ đọc, không làm đổi trạng thái. Khái niệm này khác với bất biến khi lặp (idempotent): GET, PUT, DELETE đều bất biến khi lặp, còn POST thì không.
Tài nguyên được coi là còn mới trong 3600 giây: trong khoảng đó trình duyệt dùng thẳng bản trong cache, không gửi yêu cầu nào tới máy chủ. Hết hạn thì nó chuyển sang trạng thái cần kiểm chứng lại, chứ không phải bị xóa.
Độ trễ (latency) và băng thông (bandwidth) khác nhau thế nào?
A.Hai khái niệm này luôn tỉ lệ nghịch với nhau
B.Độ trễ đo thời gian, băng thông đo dung lượng
C.Băng thông quyết định hoàn toàn tốc độ tải trang
D.Độ trễ là lượng dữ liệu, băng thông là thời gian đi về
Đáp án: B
Độ trễ là thời gian một gói đi và về (mili giây). Băng thông là lượng dữ liệu truyền được mỗi giây. Nâng băng thông không làm giảm độ trễ — và với trang web nhiều yêu cầu nhỏ, độ trễ mới là thứ quyết định.
Câu 9·Cache & CDN
Reverse proxy khác forward proxy ở điểm nào?
A.Hai khái niệm chỉ khác nhau ở cách gọi tên
B.Reverse proxy chỉ dùng cho HTTPS, forward cho HTTP
C.Reverse proxy đứng trước máy chủ dịch vụ
D.Reverse proxy đứng trước client, forward proxy trước máy chủ
Đáp án: C
Reverse proxy đứng trước máy chủ, nhận yêu cầu thay cho dịch vụ (phân tải, chấm dứt TLS, cache, chặn tấn công). Forward proxy đứng trước client, đại diện người dùng đi ra ngoài (lọc nội dung, ẩn địa chỉ, kiểm soát truy cập trong mạng nội bộ).
Câu 10·HTTP & Mã trạng thái
Mã 502 và 504 khác nhau ở chỗ nào?
A.502 là hết thời gian chờ, 504 là phản hồi không hợp lệ
B.502 do client gây ra, 504 do máy chủ gây ra
C.Hai mã tương đương nhau về nguyên nhân
D.502 phản hồi không hợp lệ, 504 quá hạn chờ
Đáp án: D
502 Bad Gateway: proxy nhận được phản hồi không hợp lệ từ dịch vụ phía sau (hoặc dịch vụ đó chết). 504 Gateway Timeout: proxy không nhận được phản hồi kịp trong thời gian chờ đã đặt.
B.PUT tạo mới, PATCH chỉ dùng khi tài nguyên đã tồn tại
C.PUT gửi dữ liệu dạng JSON, PATCH gửi dạng văn bản
D.PATCH nhanh hơn vì gửi ít dữ liệu hơn
Đáp án: A
PUT thay thế toàn bộ tài nguyên bằng nội dung gửi lên — trường không có trong body coi như bị xoá. PATCH chỉ mô tả phần cần đổi. Vì vậy PUT là idempotent một cách tự nhiên, còn PATCH thì tuỳ định dạng patch được dùng.
API tạo tài nguyên và xử lý xong ngay nên trả mã nào?
A.202 vì server đã nhận yêu cầu
B.204 vì không cần trả nội dung gì thêm
C.201 kèm header Location tới tài nguyên mới
D.200 vì thao tác đã thành công
Đáp án: C
Trả 201 Created kèm header Location trỏ tới tài nguyên mới. Nếu việc xử lý còn đang chạy nền thì dùng 202 Accepted kèm cách theo dõi tiến độ. 204 No Content dùng cho thành công mà không cần trả body, phổ biến với xoá.
Các dải địa chỉ IP riêng (private) dùng để làm gì?
A.Đánh địa chỉ nội bộ, không định tuyến Internet
B.Dùng cho các kết nối được mã hoá đầu cuối
C.Dành riêng cho các máy chủ cần bảo mật cao
D.Dành cho thiết bị chỉ kết nối qua IPv6
Đáp án: A
Các dải riêng (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) dùng cho mạng nội bộ và không được định tuyến trên Internet. Nhờ vậy nhiều tổ chức dùng chung cùng dải mà không xung đột, và thiết bị ra Internet phải qua NAT.
HEAD trả về đúng header như GET nhưng không có body. Dùng để kiểm tra kích thước file, thời điểm sửa hoặc loại nội dung trước khi quyết định tải; hoặc để xác nhận một đường dẫn còn tồn tại mà không tốn băng thông.
C.Số kết nối đồng thời tối đa của một giao diện mạng
D.Kích thước gói tin lớn nhất trên một chặng
Đáp án: D
MTU là kích thước gói tin lớn nhất truyền được trên một chặng mà không phải chia nhỏ, thường là 1500 byte trên mạng Ethernet. Gói lớn hơn phải được phân mảnh, và phân mảnh làm giảm hiệu năng đồng thời tăng nguy cơ mất dữ liệu.
Nó liệt kê các chặng trung gian trên đường tới đích cùng độ trễ tới từng chặng. Nhờ đó khoanh được vùng có vấn đề: độ trễ tăng vọt ở chặng đầu là mạng nội bộ, ở giữa là nhà cung cấp, ở cuối là phía đích.
D.Để nội dung tham số không bị đọc trộm trên đường truyền
Đáp án: A
Vì các ký tự như ?, &, =, /, #mang ý nghĩa cấu trúc trong URL. Một giá trị chứa chúng mà không mã hoá sẽ bị hiểu nhầm thành phần phân tách. Mã hoá phần trăm biến chúng thành dạng an toàn để truyền nguyên vẹn.
C.TCP, đo thời gian thiết lập kết nối tới một cổng
D.HTTP, đo thời gian máy chủ web phản hồi
Đáp án: A
Nó dùng ICMP để đo thời gian đi và về tới một địa chỉ, và thống kê tỷ lệ gói không nhận được phản hồi. Vì hoạt động ở tầng mạng, nó cho biết đường đi có thông không mà không cần dịch vụ nào đang chạy ở phía đích.
C.Định tuyến gói tin qua các thiết bị mạng trung gian
D.Phân biệt dịch vụ và kết nối trên một địa chỉ
Đáp án: D
Cổng cho phép nhiều dịch vụ cùng chạy trên một địa chỉ: hệ điều hành dựa vào cặp địa chỉ và cổng để biết gói tin thuộc về tiến trình nào. Một số cổng có quy ước sẵn (80 cho HTTP, 443 cho HTTPS, 22 cho SSH) để client biết kết nối tới đâu.
Header Content-Type với phần charset có tác dụng gì?
A.Cho client biết loại dữ liệu và bảng mã
B.Nén dữ liệu theo bảng mã đã khai báo
C.Giới hạn kích thước tối đa của nội dung
D.Xác định ngôn ngữ hiển thị của nội dung
Đáp án: A
Nó cho client biết loại dữ liệu và bảng mã ký tự để giải mã đúng. Thiếu phần bảng mã, client phải đoán — và đoán sai là nguyên nhân kinh điển khiến tiếng Việt hiển thị thành ký tự lạ.
Ghép nhiều luồng trên một kết nối: HTTP/1.1 phải chờ xong yêu cầu trước mới gửi yêu cầu sau trên cùng kết nối, nên trình duyệt phải mở nhiều kết nối song song. HTTP/2 gửi nhiều yêu cầu cùng lúc trên một kết nối, cộng thêm nén header.
Câu 2·TLS & Bảo mật
Yêu cầu preflight của CORS được kích hoạt khi nào?
A.Chỉ khi yêu cầu có kèm cookie xác thực
B.Với mọi yêu cầu đi tới tên miền khác
C.Chỉ khi máy chủ trả về mã lỗi ở lần gọi trước
D.Khi yêu cầu vượt khỏi nhóm đơn giản
Đáp án: D
Khi yêu cầu không thuộc nhóm đơn giản: dùng phương thức ngoài GET/HEAD/POST, có header tùy chỉnh (ví dụ Authorization hoặc X-Request-Id), hoặc Content-Type ngoài ba loại được coi là đơn giản. Trình duyệt gửi OPTIONS hỏi trước rồi mới gửi yêu cầu thật.
Là định danh phiên bản của tài nguyên. Khi bản cache hết hạn, client gửi lại ETag qua If-None-Match; nếu nội dung chưa đổi, máy chủ trả 304 Not Modified không kèm thân phản hồi — tiết kiệm băng thông mà vẫn bảo đảm dữ liệu mới.
Hạn chế việc gửi cookie khi yêu cầu xuất phát từ trang khác — lớp phòng vệ chính chống CSRF. Strict không gửi trong mọi điều hướng từ ngoài; Lax gửi khi người dùng bấm liên kết dẫn sang; None gửi mọi lúc nhưng bắt buộc phải kèm Secure.
Vì sao đổi bản ghi DNS xong mà một số người dùng vẫn vào địa chỉ cũ?
A.Bản ghi cũ còn trong cache tới khi hết TTL
B.Máy chủ tên có thẩm quyền cập nhật theo lịch hằng ngày
C.Bản ghi mới cần được duyệt thủ công trước khi có hiệu lực
D.Do bản ghi mới chưa được ký bằng chứng chỉ
Đáp án: A
Vì TTL: các phân giải trung gian và chính máy người dùng còn giữ bản ghi cũ trong cache cho tới khi hết thời gian sống. Muốn đổi nhanh, hãy hạ TTL xuống trước vài ngày rồi mới đổi bản ghi.
Câu 6·Hiệu năng mạng
Chọn cơ chế nào cho tính năng máy chủ đẩy thông báo một chiều xuống trình duyệt?
A.WebSocket
B.Server-Sent Events
C.Tải lại trang định kỳ
D.Hỏi lại máy chủ mỗi giây (polling)
Đáp án: B
Server-Sent Events — luồng một chiều từ máy chủ xuống trình duyệt, chạy trên HTTP thường, tự động kết nối lại, và đơn giản hơn WebSocket. Dùng WebSocket khi cần hai chiều thật sự (chat, cộng tác thời gian thực, game).
Câu 7·Cache & CDN
Khóa cache (cache key) ở CDN quyết định điều gì?
A.Nội dung có được nén trước khi gửi hay không
B.Hai yêu cầu có được coi là giống nhau
C.Thời gian nội dung được giữ trong cache
D.Điểm biên nào của CDN sẽ phục vụ yêu cầu
Đáp án: B
Quyết định hai yêu cầu có được coi là giống nhau hay không. Mặc định thường gồm tên miền, đường dẫn và tham số truy vấn. Thiếu một thành phần quan trọng thì người dùng này nhận nội dung của người kia; thêm thành phần thừa thì tỉ lệ trúng cache tụt.
Vì sao thao tác tạo đơn hàng qua POST cần khóa chống trùng (idempotency key)?
A.Vì POST không mã hóa dữ liệu trong thân yêu cầu
B.Vì POST có giới hạn kích thước dữ liệu gửi lên
C.Vì POST không bất biến khi gọi lặp lại
D.Vì POST không được trình duyệt cache lại
Đáp án: C
Vì POST không bất biến khi lặp: gọi hai lần tạo ra hai đơn. Mà gọi lại là chuyện thường xuyên — mạng chập chờn, client tự thử lại, người dùng bấm hai lần. Khóa chống trùng cho phép máy chủ nhận ra lần gọi lặp và trả về kết quả cũ thay vì tạo mới.
B.Thời gian trình duyệt hiển thị nội dung đầu tiên
C.Thời gian tới byte đầu tiên của phản hồi
D.Thời gian phân giải tên miền thành địa chỉ IP
Đáp án: C
Thời gian từ lúc gửi yêu cầu tới khi nhận byte đầu tiên của phản hồi. Nó gộp nhiều phần: phân giải DNS, bắt tay TCP và TLS, đường truyền, và thời gian máy chủ xử lý — nên TTFB cao chưa nói được lỗi nằm ở đâu.
Câu 10·TCP/IP & Vận chuyển
Dải địa chỉ 192.168.1.0/24 có bao nhiêu địa chỉ?
A.256 địa chỉ
B.24 địa chỉ
C.1024 địa chỉ
D.512 địa chỉ
Đáp án: A
256 địa chỉ (từ .0 tới .255). Ký hiệu /24 nghĩa là 24 bit đầu cố định cho phần mạng, còn 8 bit cho phần host nên có 2 mũ 8 địa chỉ. Trong đó thường chỉ 254 dùng được cho máy vì .0 là địa chỉ mạng và .255 là quảng bá.
Câu 11·Hiệu năng mạng
Nén nội dung bằng brotli so với gzip có đặc điểm gì?
A.Không cần trình duyệt hỗ trợ vì nén ở tầng TCP
B.Tỉ lệ nén tốt hơn nhưng tốn CPU hơn ở mức nén cao
C.Nén nhanh hơn gzip ở mọi mức cấu hình
D.Chỉ nén được nội dung dạng hình ảnh
Đáp án: B
Brotli cho tỉ lệ nén tốt hơn với nội dung văn bản, đổi lại tốn CPU hơn ở mức nén cao. Cách dùng chuẩn: nén sẵn tệp tĩnh ở mức cao ngay lúc build, còn nội dung động thì nén ở mức thấp hoặc trung bình khi phục vụ.
Câu 12·TLS & Bảo mật
Header HSTS (Strict-Transport-Security) có tác dụng gì?
A.Mã hóa thêm một lớp nữa cho nội dung phản hồi
B.Buộc trình duyệt chỉ kết nối bằng HTTPS trong thời gian quy định
C.Chặn các yêu cầu đến từ tên miền khác
D.Tự động gia hạn chứng chỉ TLS khi sắp hết hạn
Đáp án: B
Buộc trình duyệt chỉ dùng HTTPS với tên miền đó trong khoảng thời gian khai báo, kể cả khi người dùng gõ http://. Nó loại bỏ lần chuyển hướng đầu tiên qua HTTP — đúng chỗ mà kẻ tấn công ở giữa có thể can thiệp.
D.Đổi địa chỉ riêng thành địa chỉ công khai khi ra internet
Đáp án: D
Đổi địa chỉ riêng của thiết bị trong mạng nội bộ thành địa chỉ công khai khi đi ra internet, và ánh xạ ngược lại khi phản hồi về. Nhờ vậy cả một mạng dùng chung một địa chỉ công khai.
Câu 14·DNS
Máy chủ DNS đệ quy (recursive resolver) khác máy chủ có thẩm quyền (authoritative) thế nào?
A.Đệ quy đi hỏi giúp client, có thẩm quyền giữ dữ liệu gốc
B.Đệ quy dùng cho IPv4, có thẩm quyền dùng cho IPv6
C.Hai loại này chỉ khác nhau ở nhà cung cấp dịch vụ
D.Đệ quy giữ dữ liệu gốc, có thẩm quyền đi hỏi hộ client
Đáp án: A
Resolver đệ quy nhận yêu cầu từ client rồi tự đi hỏi lần lượt từ máy chủ gốc xuống, và cache kết quả. Máy chủ có thẩm quyền giữ dữ liệu gốc của một vùng và trả lời chính thức cho vùng đó.
Câu 15·HTTP & Mã trạng thái
WebSocket bắt đầu kết nối bằng cách nào?
A.Bằng cách mở thẳng socket không qua HTTP
B.Bằng cách hỏi lại máy chủ liên tục cho tới khi được chấp nhận
C.Bằng một kết nối UDP riêng trên cổng cố định
D.Bằng một yêu cầu HTTP xin nâng cấp giao thức
Đáp án: D
Bằng một yêu cầu HTTP có header Upgrade: websocket. Máy chủ chấp nhận thì trả mã 101 Switching Protocols, sau đó cùng một kết nối TCP chuyển sang giao thức WebSocket hai chiều.
Vì sao mất gói (packet loss) làm giảm thông lượng TCP mạnh hơn nhiều so với tỉ lệ mất?
A.Vì mỗi gói mất phải gửi lại toàn bộ tệp từ đầu
B.Vì gói mất làm hỏng dữ liệu đã nhận trước đó
C.Vì TCP hiểu mất gói là tắc nghẽn nên tự giảm tốc độ gửi
D.Vì mất gói buộc phải thiết lập lại toàn bộ kết nối
Đáp án: C
Vì TCP coi mất gói là dấu hiệu tắc nghẽn nên chủ động cắt giảm cửa sổ gửi rồi tăng lại từ từ. Nên chỉ vài phần trăm gói mất cũng có thể làm thông lượng tụt rất sâu, nhất là trên đường truyền có độ trễ cao.
Câu 17·Cache & CDN
Directive stale-while-revalidate trong Cache-Control có tác dụng gì?
A.Cho phép trả bản cũ ngay và làm mới ngầm phía sau
B.Chặn việc dùng bản cache khi nội dung đã hết hạn
C.Chỉ cho phép cache ở trình duyệt, không cho phép ở CDN
D.Yêu cầu máy chủ gửi lại toàn bộ nội dung mỗi lần
Đáp án: A
Cho phép trả bản đã hết hạn ngay lập tức trong một khoảng thời gian, đồng thời làm mới ở phía sau để lần yêu cầu sau có bản mới. Người dùng không phải chờ lần lấy lại từ gốc.
Tầng ứng dụng — HTTP dùng dịch vụ của TCP ở tầng vận chuyển, TCP dùng IP ở tầng mạng, IP dùng tầng liên kết. Mỗi tầng chỉ cần biết giao diện của tầng ngay dưới nó.
Câu 19·HTTP & Mã trạng thái
API trả về 429. Client nên xử lý thế nào cho đúng?
A.Chuyển sang gọi một endpoint khác của cùng API
B.Thử lại ngay lập tức cho tới khi thành công
C.Chờ theo header Retry-After rồi thử lại có giãn cách
D.Bỏ qua và coi như yêu cầu đã thành công
Đáp án: C
429 Too Many Requests nghĩa là bạn đã vượt giới hạn tần suất. Đọc header Retry-After nếu có, chờ đúng khoảng đó rồi thử lại với giãn cách tăng dần. Thử lại ngay chỉ làm tình hình xấu hơn cho cả hai bên.
Chuỗi chứng chỉ (certificate chain) dùng để làm gì?
A.Cho phép một chứng chỉ dùng cho nhiều tên miền
B.Lưu lịch sử các lần gia hạn chứng chỉ
C.Tăng độ dài khóa mã hóa của kết nối
D.Nối chứng chỉ máy chủ tới một gốc mà trình duyệt tin cậy
Đáp án: D
Nối chứng chỉ của máy chủ tới một chứng chỉ gốc nằm sẵn trong kho tin cậy của trình duyệt, qua một hoặc vài chứng chỉ trung gian. Không có chuỗi đầy đủ, trình duyệt không xác minh được và báo lỗi dù chứng chỉ vẫn còn hạn.
Câu 21·Cache & CDN
Trình duyệt gửi header If-None-Match và nhận về 304. Điều gì đã xảy ra?
A.Client không có quyền truy cập tài nguyên đó
B.Nội dung không đổi nên không gửi lại body
C.Nội dung đã đổi và client cần gửi lại request
D.Server không tìm thấy tài nguyên được yêu cầu
Đáp án: B
Client đã có bản cache kèm ETag, gửi lại giá trị đó để hỏi còn hợp lệ không. Server so thấy nội dung chưa đổi nên trả 304 Not Modified không kèm body — client dùng lại bản trong cache. Đây là cách tiết kiệm băng thông khi cache đã hết hạn nhưng nội dung chưa đổi.
Request theo khoảng byte (Range) phục vụ nhu cầu nào?
A.Giới hạn tốc độ tải xuống của client
B.Chia file thành nhiều phần để lưu ở nhiều máy chủ
C.Nén file trước khi truyền để giảm dung lượng
D.Tải một phần file, tiếp tục khi đứt, tua video
Đáp án: D
Client gửi Range: bytes=1000-2000 để lấy đúng phần cần. Server trả 206 Partial Content kèm Content-Range. Đây là nền của việc tiếp tục tải khi đứt kết nối, tải song song nhiều phần, và tua video tới giữa mà không tải từ đầu.
B.Báo cho client biết nội dung sẽ thay đổi thường xuyên
C.Cho cache biết header nào làm đổi nội dung
D.Chỉ định thứ tự ưu tiên khi client hỗ trợ nhiều định dạng
Đáp án: C
Vary liệt kê các header của request ảnh hưởng tới nội dung phản hồi. Cache dùng nó để tạo các bản riêng cho từng giá trị — ví dụ Vary: Accept-Encoding giữ bản nén và bản không nén riêng biệt thay vì phục vụ nhầm cho nhau.
Thương lượng nội dung (content negotiation) hoạt động thế nào?
A.Client khai báo ưu tiên, server chọn bản phù hợp
B.Server gửi mọi định dạng và client tự chọn
C.Client gửi nhiều request cho tới khi nhận được định dạng cần
D.Định dạng được quyết định bằng phần mở rộng trong đường dẫn
Đáp án: A
Client gửi các header Accept, Accept-Language, Accept-Encoding kèm trọng số ưu tiên; server chọn bản phù hợp nhất trong số nó có và báo lại bằng Content-Type, Content-Language, Content-Encoding, kèm Vary để cache xử lý đúng.
Thuộc tính Domain và Path của cookie quyết định điều gì?
A.Tên miền được phép đọc cookie bằng JavaScript
B.Thời gian cookie còn hiệu lực trên trình duyệt
C.Kích thước tối đa mà cookie được phép chiếm
D.Phạm vi request mà trình duyệt gửi kèm cookie
Đáp án: D
Chúng quyết định cookie được gửi kèm cho những request nào. Domain mở rộng phạm vi ra các tên miền con; Path giới hạn theo tiền tố đường dẫn. Không khai báo Domain thì cookie chỉ gửi cho đúng máy chủ đã đặt nó.
Header X-Content-Type-Options: nosniff ngăn chặn điều gì?
A.Trang bị nhúng trong iframe của site khác
B.Script từ nguồn ngoài được tải vào trang
C.Trình duyệt gửi header Referer sang site khác
D.Trình duyệt tự đoán loại nội dung khác khai báo
Đáp án: D
Nó chặn việc trình duyệt tự đoán loại nội dung dựa trên phần đầu của dữ liệu thay vì tin Content-Type khai báo. Nếu không có nó, một file người dùng tải lên được khai báo là văn bản thuần có thể bị đoán là HTML và thực thi script bên trong.
Vì sao tái sử dụng kết nối (keep-alive) làm giảm độ trễ đáng kể?
A.Server xử lý request nhanh hơn trên kết nối đã mở
B.Băng thông khả dụng của kết nối tăng lên
C.Dữ liệu được nén tốt hơn khi dùng chung kết nối
D.Bỏ được bắt tay TCP và TLS cho request sau
Đáp án: D
Mỗi kết nối mới cần bắt tay TCP rồi bắt tay TLS, tốn vài lượt đi về trước khi gửi được byte dữ liệu đầu tiên. Với độ trễ 100ms mỗi lượt, đó là vài trăm mili giây cho mỗi kết nối. Tái sử dụng bỏ được toàn bộ phần này cho các request tiếp theo.
Mã hoá truyền theo khối (chunked transfer encoding) dùng khi nào?
A.Khi server chưa biết tổng kích thước lúc gửi
B.Khi kết nối không ổn định và có thể bị đứt
C.Khi nội dung lớn hơn một ngưỡng dung lượng nhất định
D.Khi client yêu cầu tải xuống theo nhiều phần
Đáp án: A
Dùng khi server chưa biết tổng kích thước lúc bắt đầu gửi — nội dung được sinh dần, kết quả truy vấn được truyền theo luồng, hoặc phản hồi được tạo trong lúc xử lý. Mỗi khối có độ dài riêng, và một khối rỗng báo hiệu kết thúc.
Ứng dụng phía sau load balancer thấy mọi request đến từ cùng một địa chỉ. Cách lấy địa chỉ thật là gì?
A.Yêu cầu client gửi kèm địa chỉ của mình trong body
B.Đọc địa chỉ nguồn của kết nối TCP
C.Đọc header chuyển tiếp, chỉ tin phần proxy thêm
D.Tra ngược từ phiên đăng nhập của người dùng
Đáp án: C
Đọc header X-Forwarded-For (hoặc Forwarded theo chuẩn). Điểm quan trọng: header này client gửi được nên có thể chứa giá trị giả. Chỉ tin phần do các proxy của chính bạn thêm vào, tính từ phải sang trái, và bỏ qua phần client tự khai.
no-cache và no-store trong Cache-Control khác nhau thế nào?
A.no-cache phải xác thực lại, no-store cấm lưu
B.no-cache cấm lưu, no-store cho lưu nhưng không dùng
C.no-cache áp cho trình duyệt, no-store áp cho CDN
D.Hai chỉ thị tương đương, chỉ khác cách viết
Đáp án: A
no-cachecho phép lưu nhưng bắt buộc xác thực lại với server trước mỗi lần dùng — nếu nội dung chưa đổi thì server trả 304 và bản cache được dùng lại. no-storecấm ghi bản sao ở bất kỳ đâu, dành cho dữ liệu nhạy cảm.
Header Retry-After trong phản hồi 429 hoặc 503 có ý nghĩa gì với client?
A.Cho biết nên chờ bao lâu rồi thử lại
B.Cho biết request sẽ được server tự động thực hiện lại
C.Cho biết thời gian còn lại của phiên đăng nhập
D.Cho biết thời điểm bảo trì tiếp theo của hệ thống
Đáp án: A
Nó cho client biết nên chờ bao lâu trước khi thử lại, dưới dạng số giây hoặc một mốc thời gian cụ thể. Client tôn trọng giá trị này sẽ không dồn thêm tải lên hệ thống đang quá tải, và cũng không phải đoán khoảng chờ.
Bản ghi TXT trong DNS thường được dùng cho mục đích gì?
A.Trỏ tên miền tới địa chỉ IP của máy chủ
B.Lưu ghi chú nội bộ cho người quản trị tên miền
C.Chuyển hướng người dùng sang một tên miền khác
D.Xác minh quyền sở hữu và cấu hình xác thực email
Đáp án: D
Hai nhóm dùng chính: xác minh quyền sở hữu tên miền cho các dịch vụ bên ngoài, và cấu hình xác thực email (SPF, DKIM, DMARC). Cả hai đều dựa trên việc chỉ chủ sở hữu mới đặt được bản ghi cho tên miền đó.
Một lần phân giải tên miền đi qua những lớp cache nào?
A.Cache ứng dụng, hệ điều hành, máy chủ phân giải
B.Chỉ có cache trong trình duyệt của người dùng
C.Không có lớp cache nào, mỗi lần đều hỏi lại từ đầu
D.Chỉ có cache ở máy chủ phân giải của nhà mạng
Đáp án: A
Ba lớp phổ biến: cache của ứng dụng hoặc trình duyệt, cache của hệ điều hành, và cache ở máy chủ phân giải. Mỗi lớp có thời hạn riêng, nên sau khi đổi bản ghi, một số người dùng vẫn tới địa chỉ cũ cho tới khi mọi lớp hết hạn.
Nó chống giả mạo câu trả lời: các bản ghi được ký số, nên bên hỏi xác minh được câu trả lời đúng là do chủ sở hữu công bố. Nó không mã hoá truy vấn — ai đứng giữa vẫn thấy bạn đang hỏi tên miền nào.
Mã chuyển hướng 307 và 308 khác 302 và 301 ở điểm nào?
A.Chúng không được trình duyệt lưu vào cache
B.Chúng chỉ dùng được với kết nối HTTPS
C.Chúng giữ nguyên phương thức và body gốc
D.Chúng cho phép chuyển hướng sang tên miền khác
Đáp án: C
307 và 308 bảo đảm giữ nguyên phương thức và body. Các mã cũ (301, 302) được nhiều client hiện thực theo cách đổi POST thành GET và bỏ body — hành vi lệch với đặc tả nhưng đã phổ biến tới mức trở thành thực tế.
Request cross-origin có gửi kèm cookie cần cấu hình CORS thế nào?
A.Chỉ cần client đặt chế độ gửi kèm credentials
B.Dùng ký tự đại diện cho phép mọi origin
C.Trả origin cụ thể kèm cờ cho phép credentials
D.Không cần cấu hình gì nếu hai bên cùng tên miền cha
Đáp án: C
Server phải trả đúng origin cụ thể (không dùng ký tự đại diện) trong Access-Control-Allow-Origin, cộng với Access-Control-Allow-Credentials: true. Client cũng phải bật chế độ gửi kèm credentials. Thiếu một trong ba thì trình duyệt chặn.
Lớp che chắn nguồn (origin shield) của CDN mang lại lợi ích gì?
A.Chặn lưu lượng tấn công trước khi tới nguồn
B.Mã hoá lưu lượng giữa CDN và máy chủ nguồn
C.Tăng thời hạn cache của nội dung ở các điểm hiện diện
D.Gom lượt gọi từ nhiều điểm về một tầng trung gian
Đáp án: D
Nó đặt một tầng cache trung gian giữa các điểm hiện diện và máy chủ nguồn. Khi nhiều điểm cùng trượt cache, chúng gọi tới tầng này thay vì gọi thẳng về nguồn — nên nguồn chỉ nhận một lượt thay vì hàng chục.
Đường dẫn có chữ ký (signed URL) hoạt động thế nào?
A.Chỉ người dùng đã đăng nhập mới mở được đường dẫn
B.Đường dẫn được mã hoá để không ai đọc được nội dung
C.Chữ ký và thời hạn được kiểm tra trước khi phục vụ
D.Đường dẫn tự đổi sau mỗi lần được truy cập
Đáp án: C
Đường dẫn mang thêm thời hạn và chữ ký tính từ đường dẫn cộng thời hạn bằng khoá bí mật. Server kiểm tra chữ ký trước khi phục vụ, nên không ai sửa được đường dẫn hay kéo dài thời hạn. Ai có đường dẫn thì truy cập được trong thời hạn đó.
So sánh long polling, server-sent events và WebSocket, mỗi cái hợp với việc gì?
A.Một chiều dùng SSE, hai chiều dùng WebSocket
B.WebSocket luôn tốt hơn nên dùng cho mọi trường hợp
C.SSE và WebSocket tương đương nhau về khả năng
D.Long polling đã lỗi thời và không nên dùng nữa
Đáp án: A
SSE khi chỉ cần server đẩy xuống client — đơn giản, tự kết nối lại, chạy trên HTTP thông thường. WebSocket khi cần hai chiều thật sự như chat hoặc cộng tác. Long polling khi hạ tầng trung gian chặn hai cơ chế kia.
A.Hỗ trợ luồng nhưng chỉ theo chiều từ server xuống
B.Đơn lẻ, luồng một chiều mỗi phía, và hai chiều
C.Chỉ hỗ trợ luồng, không có kiểu gọi đơn lẻ
D.Chỉ hỗ trợ gọi đơn lẻ như REST thông thường
Đáp án: B
Bốn kiểu: đơn lẻ (một request một response), luồng từ server (một request nhiều response), luồng từ client (nhiều request một response), và luồng hai chiều. Tất cả chạy trên HTTP/2 nên dùng chung một kết nối.
Đặt phiên bản API trong đường dẫn hay trong header thì hợp lý hơn?
A.Chỉ có cách đặt trong header là đúng chuẩn
B.Đường dẫn dễ dùng hơn, header đúng ngữ nghĩa hơn
C.Không nên đánh phiên bản, chỉ cần giữ tương thích ngược
D.Chỉ có cách đặt trong đường dẫn là dùng được trong thực tế
Đáp án: B
Đường dẫn dễ nhìn, dễ thử bằng trình duyệt, dễ định tuyến ở tầng hạ tầng — nên phổ biến hơn với API công khai. Header giữ đúng nguyên tắc một tài nguyên có một địa chỉ, nhưng khó thao tác và khó cache hơn.
Ghép nhiều request trên một kết nối (multiplexing) của HTTP/2 khác pipelining của HTTP/1.1 thế nào?
A.Pipelining nén header còn multiplexing thì không
B.Phản hồi trả về theo thứ tự bất kỳ, không cố định
C.Multiplexing chỉ dùng được với nội dung tĩnh
D.Multiplexing dùng nhiều kết nối song song hơn
Đáp án: B
Pipelining gửi được nhiều request nhưng phản hồi phải về đúng thứ tự — một phản hồi chậm chặn tất cả phía sau. Multiplexing của HTTP/2 gán định danh cho từng luồng nên các phản hồi đan xen tự do, và một luồng chậm không chặn luồng khác.
C.Server không kiểm tra tính hợp lệ của dữ liệu đầu vào
D.Server phải xử lý các request có nội dung rất lớn
Đáp án: B
Nó khai thác việc server giữ kết nối mở trong lúc chờ request hoàn tất. Kẻ tấn công mở hàng nghìn kết nối rồi gửi từng byte rất chậm, chiếm hết số kết nối đồng thời mà chỉ tốn băng thông không đáng kể — nên rất khó phát hiện qua giám sát lưu lượng.
Client báo lỗi kết nối bị đóng đột ngột khi tái sử dụng kết nối. Nguyên nhân hay gặp là gì?
A.Kết nối bị mã hoá nên phải thiết lập lại định kỳ
B.Client gửi quá nhiều request trên một kết nối
C.Server không hỗ trợ tái sử dụng kết nối
D.Thời gian giữ kết nối ở server ngắn hơn client
Đáp án: D
Thường do thời gian giữ kết nối nhàn rỗi lệch nhau giữa các tầng: server hoặc load balancer đóng trước trong khi client vẫn giữ trong pool. Request tiếp theo gửi vào kết nối vừa bị đóng và thất bại. Cách sửa là đặt thời gian ở client ngắn hơn ở server.
Kết thúc TLS ở load balancer thay vì ở máy chủ ứng dụng có đánh đổi gì?
A.Giảm độ trễ vì bỏ được bước bắt tay mã hoá
B.Tăng bảo mật vì ít nơi nắm giữ khoá riêng hơn
C.Chứng chỉ tập trung, chặng sau không mã hoá
D.Cho phép máy chủ ứng dụng thấy được địa chỉ thật của client
Đáp án: C
Ưu điểm: quản lý chứng chỉ ở một nơi, máy chủ ứng dụng nhẹ hơn, và tầng cân bằng tải đọc được nội dung để định tuyến theo đường dẫn. Đánh đổi: chặng từ đó vào máy chủ đi ở dạng rõ nếu không mã hoá lại.
Trả nhiều bản ghi A cho một tên miền có tác dụng cân bằng tải không?
A.Có, và phân bố đều tuyệt đối giữa các máy chủ
B.Có phần nào, nhưng thô và không loại được máy hỏng
C.Không, nhiều bản ghi A là cấu hình không hợp lệ
D.Không, client luôn dùng địa chỉ đầu tiên trong danh sách
Đáp án: B
Có tác dụng thô: client nhận nhiều địa chỉ và chọn một. Nhưng cache ở nhiều lớp và cách chọn khác nhau giữa các client khiến phân bố lệch, và quan trọng hơn — DNS không biết máy nào đã hỏng, nên vẫn trả về địa chỉ chết.
Kiểm tra sức khoẻ ở load balancer nên kiểm những gì?
A.Mức sử dụng CPU và bộ nhớ của máy chủ
B.Khả năng phục vụ thật và phụ thuộc thiết yếu
C.Toàn bộ phụ thuộc, kể cả các dịch vụ không thiết yếu
D.Chỉ cần kiểm tra cổng có mở hay không
Đáp án: B
Kiểm khả năng phục vụ thật: ứng dụng đã khởi tạo xong và các phụ thuộc thiết yếu hoạt động. Nhưng không kiểm quá rộng — nếu health check phụ thuộc vào một dịch vụ phụ, dịch vụ đó hỏng sẽ khiến mọi máy bị loại và gây sự cố toàn diện.
Không nén các định dạng đã nén sẵn: ảnh JPEG và PNG, video, file nén. Nén thêm tốn CPU mà kích thước gần như không đổi, đôi khi còn tăng nhẹ. Văn bản, JSON, HTML, CSS và JavaScript thì ngược lại — thường giảm được đáng kể.
B.Thời gian kết nối, thời gian đọc và tổng thời gian
C.Không nên đặt timeout để tránh cắt request đang chạy
D.Chỉ cần timeout ở phía server là đủ
Đáp án: B
Ít nhất ba loại: thời gian thiết lập kết nối (ngắn, vì kết nối tới dịch vụ khoẻ thì rất nhanh), thời gian chờ dữ liệu giữa các lần đọc, và tổng thời gian cho cả request để chặn trường hợp dữ liệu về nhỏ giọt mãi không hết.
Cấu hình DNS trả kết quả khác nhau cho truy vấn nội bộ và bên ngoài dùng để làm gì?
A.Mã hoá truy vấn DNS từ mạng nội bộ
B.Cân bằng tải giữa các máy chủ trong mạng nội bộ
C.Chặn client nội bộ truy cập các tên miền bên ngoài
D.Nội bộ dùng địa chỉ riêng, ngoài dùng địa chỉ công khai
Đáp án: D
Cùng một tên miền trả địa chỉ nội bộ cho truy vấn từ trong mạng và địa chỉ công khai cho truy vấn từ ngoài. Nhờ đó ứng dụng dùng chung một tên miền trong cấu hình, còn lưu lượng nội bộ không phải đi vòng ra Internet rồi quay lại.
Để các request tương đương về nội dung dùng chung một bản. Nếu khoá tính cả tham số theo dõi chiến dịch, thứ tự tham số, hay toàn bộ header cookie, thì mỗi người dùng tạo ra một bản riêng và tỷ lệ trúng cache về gần không.
Nén header trong HTTP/2 mang lại lợi ích rõ nhất ở đâu?
A.Khi kết nối có độ trễ rất cao
B.Khi nhiều request lặp lại các header giống nhau
C.Khi phản hồi có kích thước body rất lớn
D.Khi máy chủ phục vụ nhiều tên miền khác nhau
Đáp án: B
Rõ nhất khi nhiều request lặp lại cùng các header. Cookie và header xác thực có thể chiếm hàng trăm byte và được gửi lại ở mọi request; với trang tải hàng trăm tài nguyên, phần lặp này cộng lại rất lớn. Cơ chế nén giữ một bảng chung và chỉ gửi phần khác biệt.
Cache kết quả preflight của CORS bằng cách nào và để làm gì?
A.Không cache được vì mỗi request có tham số khác nhau
B.Bằng cookie đặt sau lần preflight đầu tiên
C.Bằng header khai báo thời hạn, bớt một lượt gọi
D.Bằng cách lưu kết quả trong bộ nhớ của ứng dụng client
Đáp án: C
Server trả header khai báo thời hạn cache preflight, và trình duyệt lưu kết quả cho tổ hợp origin, phương thức và header đó. Nhờ vậy các request tiếp theo trong thời hạn không phải hỏi trước — giảm một nửa số lượt đi về cho các API gọi thường xuyên.
Rút kết nối (connection draining) khi triển khai phiên bản mới nghĩa là gì?
A.Ngừng nhận request mới, cho request đang chạy xong
B.Giảm dần số kết nối tối đa cho phép trên máy chủ
C.Chuyển các kết nối đang mở sang máy chủ mới
D.Đóng mọi kết nối ngay khi bắt đầu triển khai
Đáp án: A
Máy chủ bị gỡ khỏi vòng phân phối nên không nhận request mới, nhưng vẫn hoàn tất các request đang xử lý trước khi dừng. Không có bước này, mọi request đang chạy khi triển khai đều thất bại và người dùng thấy lỗi.
Tiếp tục phiên TLS (session resumption) tiết kiệm được gì?
A.Cho phép dùng lại cùng một kết nối TCP
B.Bỏ được việc xác minh chứng chỉ ở mọi kết nối
C.Bỏ phần lớn phép toán khoá công khai của bắt tay
D.Bỏ được việc mã hoá dữ liệu sau khi kết nối
Đáp án: C
Nó dùng lại khoá đã thiết lập từ phiên trước nên bỏ được phần lớn phép toán khoá công khai — phần tốn CPU nhất của bắt tay — và rút ngắn số lượt đi về. Kết quả là kết nối mới tới cùng máy chủ nhanh hơn đáng kể.