Bài Tập, Đề Thi Trắc Nghiệm Online - Môn Lập Trình Mạng - Đề 06 bao gồm nhiều câu hỏi hay, bám sát chương trình. Cùng làm bài tập trắc nghiệm ngay.
Câu 1: Trong mô hình TCP/IP, tầng nào chịu trách nhiệm chính cho việc định tuyến gói tin giữa các mạng khác nhau?
- A. Tầng Vận chuyển (Transport Layer)
- B. Tầng Mạng (Network Layer)
- C. Tầng Liên kết Dữ liệu (Data Link Layer)
- D. Tầng Ứng dụng (Application Layer)
Câu 2: Giao thức TCP cung cấp cơ chế kiểm soát luồng (flow control) để tránh tình trạng bên gửi dữ liệu quá nhanh làm tràn bộ đệm của bên nhận. Cơ chế kiểm soát luồng phổ biến trong TCP là gì?
- A. Cửa sổ trượt cố định (Fixed window)
- B. Thuật toán Leaky Bucket
- C. Cửa sổ trượt động (Sliding window)
- D. Cơ chế Stop-and-Wait
Câu 3: Xét tình huống một ứng dụng cần gửi dữ liệu âm thanh và hình ảnh trực tuyến, thời gian thực. Giao thức vận chuyển nào sau đây sẽ phù hợp hơn để sử dụng, TCP hay UDP, và tại sao?
- A. TCP, vì TCP đảm bảo dữ liệu đến nơi tin cậy.
- B. TCP, vì TCP có cơ chế kiểm soát lỗi tốt hơn.
- C. UDP, vì UDP đảm bảo dữ liệu đến đúng thứ tự.
- D. UDP, vì UDP có độ trễ thấp hơn và không yêu cầu thiết lập kết nối.
Câu 4: Trong lập trình socket, phương thức `bind()` được sử dụng ở phía server để làm gì?
- A. Để thiết lập kết nối với client.
- B. Để gán socket với một địa chỉ IP và số cổng cụ thể.
- C. Để gửi dữ liệu đến client.
- D. Để lắng nghe kết nối từ client.
Câu 5: Khi một client muốn khởi tạo kết nối TCP với server, nó sẽ thực hiện quá trình bắt tay ba bước (three-way handshake). Bước thứ hai trong quá trình này là gì?
- A. Client gửi gói SYN-ACK đến server.
- B. Server gửi gói ACK đến client.
- C. Server gửi gói SYN-ACK đến client.
- D. Client gửi gói ACK đến server và bắt đầu truyền dữ liệu.
Câu 6: Giả sử bạn đang xây dựng một ứng dụng chat nhóm, trong đó một server cần gửi tin nhắn đến nhiều client đồng thời. Phương thức giao tiếp nào sau đây là hiệu quả nhất về mặt băng thông?
- A. Unicast đến từng client.
- B. Multicast.
- C. Broadcast.
- D. Sử dụng giao thức TCP cho mỗi client.
Câu 7: Trong giao thức HTTP, phương thức nào thường được sử dụng để yêu cầu server gửi lại toàn bộ tài nguyên (ví dụ: trang web) mà không cần thông tin header từ lần truy cập trước?
- A. GET
- B. POST
- C. PUT
- D. DELETE
Câu 8: Để đảm bảo tính bảo mật cho dữ liệu truyền qua mạng, giao thức HTTPS đã được phát triển. HTTPS hoạt động bằng cách nào?
- A. Mã hóa dữ liệu ở tầng Mạng.
- B. Sử dụng tường lửa để bảo vệ kết nối.
- C. Kết hợp HTTP với giao thức mã hóa SSL/TLS.
- D. Xác thực người dùng bằng mật khẩu mạnh.
Câu 9: Khi lập trình socket bất đồng bộ, sự kiện nào sau đây thường được sử dụng để báo hiệu rằng dữ liệu đã được nhận thành công trên socket?
- A. Sự kiện `Connected`
- B. Sự kiện `DataReceived` (hoặc tương tự)
- C. Sự kiện `SendCompleted`
- D. Sự kiện `AcceptCompleted`
Câu 10: Địa chỉ IP phiên bản 4 (IPv4) có độ dài bao nhiêu bit?
- A. 64 bits
- B. 128 bits
- C. 32 bits
- D. 16 bits
Câu 11: DNS (Domain Name System) có vai trò gì trong mạng Internet?
- A. Cấp phát địa chỉ IP cho các thiết bị.
- B. Định tuyến gói tin trên Internet.
- C. Kiểm soát luồng dữ liệu trên mạng.
- D. Phân giải tên miền thành địa chỉ IP.
Câu 12: Trong lập trình mạng, thuật ngữ "serialization" (tuần tự hóa) dùng để chỉ quá trình nào?
- A. Chuyển đổi đối tượng thành một chuỗi byte để truyền qua mạng.
- B. Mã hóa dữ liệu để bảo mật.
- C. Nén dữ liệu để giảm kích thước.
- D. Phân chia dữ liệu thành các gói nhỏ hơn.
Câu 13: Giao thức nào sau đây thường được sử dụng để truyền file giữa client và server?
- A. HTTP
- B. FTP
- C. SMTP
- D. POP3
Câu 14: Cơ chế "keep-alive" trong HTTP có tác dụng gì?
- A. Mã hóa kết nối HTTP.
- B. Xác thực client trước khi truyền dữ liệu.
- C. Duy trì kết nối TCP cho nhiều yêu cầu/phản hồi HTTP.
- D. Nén dữ liệu HTTP để giảm kích thước.
Câu 15: Khi một ứng dụng client gửi yêu cầu đến server thông qua giao thức HTTP, server sẽ phản hồi bằng một mã trạng thái (status code). Mã trạng thái "200 OK" có nghĩa là gì?
- A. Yêu cầu bị lỗi do client.
- B. Tài nguyên không tìm thấy trên server.
- C. Server đang bận và không thể xử lý yêu cầu.
- D. Yêu cầu thành công.
Câu 16: Để xây dựng một ứng dụng server có khả năng xử lý đồng thời nhiều kết nối từ client, mô hình lập trình server nào sau đây thường được sử dụng?
- A. Mô hình server tuần tự (Iterative server).
- B. Mô hình server đa luồng/đa tiến trình (Concurrent server).
- C. Mô hình server đơn luồng, sự kiện (Event-driven server).
- D. Tất cả các mô hình trên đều phù hợp.
Câu 17: Trong lập trình socket UDP, có cần thiết phải thiết lập kết nối trước khi gửi dữ liệu không?
- A. Không cần thiết.
- B. Cần thiết.
- C. Chỉ cần thiết trong một số trường hợp.
- D. Tùy thuộc vào cài đặt hệ điều hành.
Câu 18: Cho đoạn mã giả định sau:
`socket = create_udp_socket()`
`send_data(socket, "Hello", destination_ip, destination_port)`
Đoạn mã này minh họa thao tác nào trong lập trình mạng?
- A. Thiết lập kết nối TCP.
- B. Lắng nghe kết nối TCP.
- C. Gửi dữ liệu UDP.
- D. Nhận dữ liệu TCP.
Câu 19: Trong giao thức SMTP, lệnh "MAIL FROM" được sử dụng để làm gì?
- A. Xác thực người gửi email.
- B. Chỉ định địa chỉ email người gửi.
- C. Chỉ định địa chỉ email người nhận.
- D. Gửi nội dung email.
Câu 20: Phương pháp lập trình socket nào cho phép một ứng dụng có thể đồng thời gửi và nhận dữ liệu mà không bị "treo" (blocking) khi chờ đợi?
- A. Socket đồng bộ (Synchronous socket).
- B. Socket tuần tự (Sequential socket).
- C. Socket đa luồng (Multi-threaded socket).
- D. Socket bất đồng bộ (Asynchronous socket).
Câu 21: Mô hình OSI (Open Systems Interconnection) có bao nhiêu tầng?
- A. 4 tầng
- B. 5 tầng
- C. 7 tầng
- D. 8 tầng
Câu 22: Trong ngữ cảnh web server, thuật ngữ "virtual host" (máy chủ ảo) có nghĩa là gì?
- A. Một server vật lý được ảo hóa.
- B. Một server web có thể phục vụ nhiều domain khác nhau trên cùng một địa chỉ IP.
- C. Một server web chỉ phục vụ nội dung tĩnh.
- D. Một server web được đặt trên cloud.
Câu 23: Giao thức ICMP (Internet Control Message Protocol) thường được sử dụng cho mục đích gì?
- A. Gửi thông báo lỗi và kiểm tra kết nối mạng (ví dụ: lệnh ping).
- B. Truyền dữ liệu lớn giữa các server.
- C. Mã hóa dữ liệu truyền trên mạng.
- D. Phân giải tên miền.
Câu 24: Trong lập trình mạng, "port scanning" (quét cổng) là kỹ thuật được sử dụng để làm gì?
- A. Tăng tốc độ truyền dữ liệu qua cổng mạng.
- B. Mã hóa dữ liệu truyền qua cổng mạng.
- C. Kiểm tra tình trạng hoạt động của server.
- D. Xác định các cổng đang mở và dịch vụ đang chạy trên một máy chủ.
Câu 25: Khi thiết kế một hệ thống client-server, quyết định sử dụng giao thức TCP hay UDP phụ thuộc vào yếu tố quan trọng nào nhất?
- A. Tốc độ truyền dữ liệu tối đa.
- B. Số lượng client dự kiến.
- C. Yêu cầu về độ tin cậy và thứ tự của dữ liệu.
- D. Chi phí triển khai hệ thống.
Câu 26: Trong lập trình socket, phương thức `listen()` được sử dụng ở phía server để làm gì?
- A. Để gửi dữ liệu đến client.
- B. Để nhận dữ liệu từ client.
- C. Để thiết lập kết nối với client đầu tiên.
- D. Để chuẩn bị socket lắng nghe các kết nối đến từ client.
Câu 27: Giả sử một client và server đã thiết lập kết nối TCP. Khi server chủ động đóng kết nối, quá trình đóng kết nối TCP được gọi là gì?
- A. Bắt tay ba bước (Three-way handshake).
- B. Bắt tay bốn bước (Four-way handshake).
- C. Ngắt kết nối đơn phương (Unilateral disconnection).
- D. Không có quá trình đóng kết nối cụ thể.
Câu 28: Trong lập trình mạng, "network address translation" (NAT) có vai trò gì?
- A. Mã hóa địa chỉ IP.
- B. Cấp phát địa chỉ IP tự động.
- C. Cho phép nhiều thiết bị trong mạng riêng chia sẻ một địa chỉ IP công cộng.
- D. Tăng tốc độ truyền dữ liệu mạng.
Câu 29: Khi sử dụng giao thức TCP, nếu một gói tin bị mất trên đường truyền, điều gì sẽ xảy ra?
- A. Dữ liệu sẽ bị mất vĩnh viễn.
- B. UDP sẽ được sử dụng để truyền lại dữ liệu.
- C. Kết nối TCP sẽ bị ngắt.
- D. TCP sẽ phát hiện mất gói tin và yêu cầu gửi lại gói tin đó.
Câu 30: Trong mô hình client-server, client thường là chương trình nào?
- A. Chương trình yêu cầu dịch vụ.
- B. Chương trình cung cấp dịch vụ.
- C. Chương trình trung gian giữa người dùng và server.
- D. Chương trình quản lý mạng.