1. Trong lập trình mạng, giao thức nào sau đây hoạt động ở tầng ứng dụng (Application Layer) của mô hình OSI?
A. TCP
B. IP
C. HTTP
D. Ethernet
2. Trong lập trình mạng, giao thức nào sau đây được sử dụng để tự động gán địa chỉ IP cho các thiết bị trong mạng?
A. DNS
B. ARP
C. DHCP
D. ICMP
3. Trong lập trình mạng, giao thức nào sau đây thường được sử dụng để truyền tải video trực tuyến?
A. HTTP
B. RTSP
C. FTP
D. SMTP
4. Trong lập trình mạng, giao thức nào sau đây được sử dụng để truy cập và quản lý email trên máy chủ?
A. SMTP
B. POP3/IMAP
C. FTP
D. SNMP
5. Giao thức nào sau đây được sử dụng để truyền tải dữ liệu web một cách an toàn?
A. HTTP
B. FTP
C. SMTP
D. HTTPS
6. Trong lập trình mạng, giao thức TCP sử dụng cơ chế nào để đảm bảo dữ liệu được truyền đến đích một cách đáng tin cậy?
A. Sử dụng UDP để truyền lại các gói tin bị mất.
B. Sử dụng cơ chế bắt tay ba bước (three-way handshake) và cơ chế báo nhận (acknowledgement).
C. Gửi tất cả các gói tin nhiều lần để tăng khả năng thành công.
D. Không sử dụng cơ chế đảm bảo, mà dựa vào tầng ứng dụng.
7. Trong lập trình mạng, thuật ngữ `firewall` dùng để chỉ điều gì?
A. Một loại cáp mạng đặc biệt.
B. Một thiết bị hoặc phần mềm bảo vệ mạng bằng cách kiểm soát lưu lượng mạng.
C. Một giao thức để mã hóa dữ liệu.
D. Một công cụ để tăng tốc độ truyền dữ liệu.
8. Trong lập trình mạng, giao thức nào sau đây được sử dụng để đồng bộ hóa thời gian giữa các hệ thống máy tính trên mạng?
A. SMTP
B. NTP
C. SNMP
D. TFTP
9. Trong mô hình OSI, tầng nào chịu trách nhiệm cho việc thiết lập, duy trì và kết thúc các kết nối giữa các ứng dụng?
A. Tầng Mạng (Network Layer)
B. Tầng Giao vận (Transport Layer)
C. Tầng Phiên (Session Layer)
D. Tầng Ứng dụng (Application Layer)
10. Trong lập trình mạng, địa chỉ loopback thường được sử dụng để làm gì?
A. Để kết nối với một máy tính khác trong mạng.
B. Để kiểm tra kết nối Internet.
C. Để kiểm tra các ứng dụng mạng trên cùng một máy tính.
D. Để định tuyến lưu lượng mạng đến một máy chủ cụ thể.
11. Trong lập trình mạng, hàm `select()` được sử dụng để làm gì?
A. Để tạo một socket mới.
B. Để đóng một socket.
C. Để giám sát nhiều socket cùng một lúc.
D. Để gửi dữ liệu trên một socket.
12. Trong lập trình mạng, thuật ngữ `socket` thường được hiểu là gì?
A. Một loại cổng vật lý trên máy tính.
B. Một giao thức truyền thông mạng.
C. Một điểm cuối của một kết nối mạng.
D. Một thiết bị phần cứng mạng.
13. Trong lập trình mạng, thuật ngữ `port forwarding` dùng để chỉ điều gì?
A. Một phương pháp để tăng tốc độ truyền dữ liệu.
B. Một kỹ thuật để chuyển hướng lưu lượng mạng từ một cổng và địa chỉ IP đến một cổng và địa chỉ IP khác.
C. Một giao thức để nén dữ liệu trước khi truyền.
D. Một công cụ để giám sát lưu lượng mạng.
14. Trong lập trình mạng, thuật ngữ `Network Address Translation` (NAT) dùng để chỉ điều gì?
A. Một giao thức để mã hóa dữ liệu trước khi truyền.
B. Một kỹ thuật để ánh xạ địa chỉ IP riêng thành địa chỉ IP công cộng.
C. Một phương pháp để kiểm tra lỗi trong quá trình truyền dữ liệu.
D. Một công cụ để phân tích lưu lượng mạng.
15. Trong lập trình mạng, giao thức nào sau đây được sử dụng để truyền file?
A. HTTP
B. SMTP
C. FTP
D. SNMP
16. Phương pháp nào sau đây được sử dụng để chuyển đổi tên miền (ví dụ: google.com) thành địa chỉ IP trong lập trình mạng?
A. ARP (Address Resolution Protocol)
B. DHCP (Dynamic Host Configuration Protocol)
C. DNS (Domain Name System)
D. ICMP (Internet Control Message Protocol)
17. Trong lập trình mạng, mục đích của việc sử dụng `checksum` là gì?
A. Để mã hóa dữ liệu.
B. Để nén dữ liệu.
C. Để phát hiện lỗi trong quá trình truyền dữ liệu.
D. Để tăng tốc độ truyền dữ liệu.
18. Socket nào sau đây được sử dụng cho giao tiếp không liên kết (connectionless) trong lập trình mạng?
A. SOCK_STREAM
B. SOCK_RAW
C. SOCK_DGRAM
D. SOCK_SEQPACKET
19. Trong lập trình mạng, cơ chế nào được sử dụng để ngăn chặn tình trạng nghẽn mạng (congestion)?
A. Mã hóa dữ liệu.
B. Kiểm soát luồng (flow control) và kiểm soát tắc nghẽn (congestion control).
C. Sử dụng cáp quang thay vì cáp đồng.
D. Tăng tốc độ CPU của router.
20. Trong lập trình socket, hàm `listen()` được sử dụng để làm gì?
A. Để gửi dữ liệu đến một socket khác.
B. Để chấp nhận một kết nối đến từ một socket khác.
C. Để tạo một socket mới.
D. Để lắng nghe các kết nối đến trên một socket.
21. Trong lập trình mạng, điều gì xảy ra khi một socket bị đóng (closed)?
A. Socket có thể tiếp tục gửi và nhận dữ liệu.
B. Socket không thể gửi hoặc nhận thêm dữ liệu.
C. Socket tự động chuyển sang một cổng khác.
D. Socket chỉ có thể nhận dữ liệu, không thể gửi.
22. Trong lập trình mạng, khi nào nên sử dụng giao thức UDP thay vì TCP?
A. Khi cần đảm bảo dữ liệu được truyền một cách đáng tin cậy.
B. Khi tốc độ truyền dữ liệu là yếu tố quan trọng hơn độ tin cậy.
C. Khi truyền tải các file lớn.
D. Khi cần thiết lập một kết nối liên tục.
23. Khi lập trình mạng, lỗi `Address already in use` thường xảy ra khi nào?
A. Khi cố gắng kết nối đến một địa chỉ IP không tồn tại.
B. Khi một cổng (port) đã được sử dụng bởi một ứng dụng khác.
C. Khi địa chỉ MAC của máy tính bị trùng với một máy khác trong mạng.
D. Khi hết bộ nhớ để tạo socket mới.
24. Địa chỉ IP phiên bản IPv6 có độ dài bao nhiêu bit?
A. 32 bits
B. 64 bits
C. 128 bits
D. 256 bits
25. Trong lập trình mạng, khi một máy tính gửi một gói tin đến một địa chỉ IP, làm thế nào để nó xác định địa chỉ MAC của máy đích trên cùng mạng?
A. Sử dụng giao thức DNS.
B. Sử dụng giao thức ARP.
C. Sử dụng giao thức DHCP.
D. Sử dụng giao thức ICMP.
26. Trong lập trình mạng, sự khác biệt chính giữa TCP và UDP là gì?
A. TCP nhanh hơn UDP.
B. TCP cung cấp kết nối đáng tin cậy, trong khi UDP thì không.
C. UDP cung cấp kết nối đáng tin cậy, trong khi TCP thì không.
D. TCP và UDP đều cung cấp kết nối đáng tin cậy.
27. Trong lập trình mạng, thuật ngữ `subnet mask` dùng để chỉ điều gì?
A. Địa chỉ IP của router.
B. Một phần của địa chỉ IP xác định mạng con.
C. Địa chỉ MAC của máy tính.
D. Một giao thức bảo mật mạng.
28. Giao thức nào sau đây thường được sử dụng để truyền tải email?
A. HTTP (Hypertext Transfer Protocol)
B. FTP (File Transfer Protocol)
C. SMTP (Simple Mail Transfer Protocol)
D. Telnet
29. Trong lập trình mạng, làm thế nào để một ứng dụng có thể phục vụ nhiều client đồng thời?
A. Sử dụng một socket duy nhất cho tất cả các client.
B. Sử dụng đa luồng (multithreading) hoặc đa tiến trình (multiprocessing).
C. Tăng tốc độ CPU của máy chủ.
D. Sử dụng giao thức UDP.
30. Trong lập trình mạng, giao thức nào sau đây được sử dụng để quản lý và giám sát các thiết bị mạng?
A. SMTP
B. NTP
C. SNMP
D. TFTP