Bộ 6 - Trắc nghiệm Lập trình mạng online có đáp án
Thời gian còn lại: --:--
Kết quả của bạn:
Bạn đã đúng:
Bạn đã sai:
Tổng số câu:
Câu 1:
Trong mô hình OSI, tầng nào chịu trách nhiệm truyền dẫn tin cậy giữa các tiến trình trên các máy chủ khác nhau?
💡 Lời giải chi tiết:
Theo mô hình OSI, Tầng Giao vận chịu trách nhiệm thiết lập các kết nối logic đầu cuối và đảm bảo tính toàn vẹn của dữ liệu giữa các ứng dụng. Kết luận Lý giải Tầng Giao vận (Transport Layer)
Câu 2:
Giao thức UDP (User Datagram Protocol) sử dụng loại socket nào sau đây trong lập trình ứng dụng?
💡 Lời giải chi tiết:
Trong lập trình socket, giao thức không hướng kết nối như UDP yêu cầu khởi tạo socket với kiểu dữ liệu là SOCK_DGRAM. Kết luận Lý giải SOCK_DGRAM
Câu 3:
Trong quá trình bắt tay ba bước (3-way handshake) của TCP, cờ (flag) nào được thiết lập trong gói tin đầu tiên từ Client gửi đến Server?
💡 Lời giải chi tiết:
Tiến trình thiết lập kết nối TCP bắt đầu bằng việc Client gửi một gói tin có cờ SYN (Synchronize) để yêu cầu đồng bộ hóa số thứ tự. Kết luận Lý giải Cờ SYN
Câu 4:
Hàm 'bind()' trong lập trình socket phía Server có mục đích chính là gì?
💡 Lời giải chi tiết:
Hàm 'bind()' được sử dụng để liên kết một socket chưa được đặt tên với một cấu trúc địa chỉ mạng cụ thể bao gồm IP và cổng. Kết luận Lý giải Gắn một địa chỉ IP và số hiệu cổng cụ thể cho socket
Câu 5:
Thứ tự byte chuẩn trong mạng (Network Byte Order) được quy định theo định dạng nào?
💡 Lời giải chi tiết:
Hầu hết các giao thức Internet chuẩn hóa việc truyền dữ liệu đa byte theo thứ tự Big-Endian, trong đó byte có giá trị cao nhất được gửi trước. Kết luận Lý giải Big-Endian
Câu 6:
Địa chỉ IPv6 có độ dài bao nhiêu bit?
💡 Lời giải chi tiết:
IPv6 được thiết kế với không gian địa chỉ khổng lồ bằng cách sử dụng cấu trúc định danh dài 128 bit. Kết luận Lý giải 128 bit
Câu 7:
Hàm 'listen()' trong lập trình TCP Socket có tham số 'backlog' dùng để làm gì?
💡 Lời giải chi tiết:
Tham số 'backlog' quy định số lượng tối đa các yêu cầu kết nối chưa hoàn tất được phép xếp hàng chờ đợi trước khi Server gọi hàm 'accept()'. Kết luận Lý giải Xác định kích thước tối đa của hàng đợi các kết nối đang chờ được chấp nhận
Câu 8:
Giao thức nào sau đây hoạt động trên nền tảng không hướng kết nối (connectionless)?
💡 Lời giải chi tiết:
UDP gửi các datagram một cách độc lập mà không cần thiết lập hay duy trì trạng thái kết nối giữa các đầu cuối. Kết luận Lý giải UDP
Câu 9:
Dải cổng (port numbers) từ 0 đến 1023 được gọi là gì?
💡 Lời giải chi tiết:
Theo quy định của IANA, các số hiệu cổng từ 0 đến 1023 được dành riêng cho các dịch vụ hệ thống phổ biến và được gọi là 'Well-known Ports'. Kết luận Lý giải Well-known Ports
Câu 10:
Khi sử dụng hàm 'recv()' trong TCP, nếu giá trị trả về bằng 0, điều đó có nghĩa là gì?
💡 Lời giải chi tiết:
Trong cơ chế của TCP socket, khi hàm nhận dữ liệu trả về 0, nó báo hiệu rằng tiến trình ở đầu xa đã thực hiện đóng kết nối (graceful shutdown). Kết luận Lý giải Kết nối đã bị phía đối diện đóng lại một cách bình thường
Câu 11:
Hàm 'select()' thường được sử dụng trong lập trình mạng để giải quyết vấn đề nào?
💡 Lời giải chi tiết:
Hàm 'select()' cho phép một ứng dụng theo dõi nhiều mô tả socket cùng lúc để biết khi nào có sự kiện I/O xảy ra mà không cần tạo nhiều luồng. Kết luận Lý giải Quản lý đồng thời nhiều socket trên một luồng duy nhất (I/O Multiplexing)
Câu 12:
Giao thức DNS (Domain Name System) thường sử dụng cổng dịch vụ mặc định nào?
💡 Lời giải chi tiết:
DNS chủ yếu sử dụng cổng 53 qua giao thức UDP để thực hiện các truy vấn phân giải tên miền nhanh chóng. Kết luận Lý giải Cổng 53
Câu 13:
Sự khác biệt chính giữa hàm 'close()' và 'shutdown()' đối với một socket là gì?
💡 Lời giải chi tiết:
Hàm 'shutdown()' cung cấp khả năng đóng kết nối theo một hướng nhất định trong khi vẫn giữ nguyên mô tả socket, khác với 'close()' là đóng hoàn toàn. Kết luận Lý giải 'shutdown()' cho phép đóng một phần kết nối (chỉ đọc hoặc chỉ ghi) mà không hủy descriptor
Câu 14:
Tại sao cần sử dụng tùy chọn socket 'SO_REUSEADDR' trong lập trình Server?
💡 Lời giải chi tiết:
Tùy chọn 'SO_REUSEADDR' cho phép ứng dụng khởi động lại và liên kết ngay lập tức với cổng cũ mà không phải chờ trạng thái TIME_WAIT của hệ điều hành kết thúc. Kết luận Lý giải Để cho phép bind lại vào một địa chỉ và cổng đang ở trạng thái TIME_WAIT
Câu 15:
Trong HTTP/1.1, cơ chế mặc định nào giúp duy trì kết nối TCP cho nhiều yêu cầu liên tiếp?
💡 Lời giải chi tiết:
HTTP/1.1 sử dụng các kết nối bền vững (Persistent Connections) theo mặc định để tái sử dụng một kết nối TCP duy nhất cho nhiều giao dịch HTTP. Kết luận Lý giải Cơ chế Persistent Connection (Keep-Alive)
Câu 16:
Giao thức ICMP (Internet Control Message Protocol) được sử dụng bởi công cụ nào sau đây?
💡 Lời giải chi tiết:
Công cụ 'ping' sử dụng các gói tin ICMP Echo Request và Echo Reply để kiểm tra khả năng kết nối giữa các thiết bị mạng. Kết luận Lý giải Ping
Câu 17:
Trong lập trình mạng, thuật ngữ 'Serialization' có nghĩa là gì?
💡 Lời giải chi tiết:
Tuần tự hóa (Serialization) là việc chuyển đổi trạng thái của một đối tượng thành một chuỗi byte để có thể gửi qua mạng hoặc lưu vào tệp. Kết luận Lý giải Quá trình chuyển đổi cấu trúc dữ liệu hoặc đối tượng thành một định dạng có thể lưu trữ hoặc truyền đi
Câu 18:
Giao thức FTP (File Transfer Protocol) ở chế độ 'Passive' khác gì so với chế độ 'Active'?
💡 Lời giải chi tiết:
Trong chế độ Passive, Client là bên khởi tạo cả kết nối lệnh và kết nối dữ liệu, giúp vượt qua các rào cản từ tường lửa phía Client. Kết luận Lý giải Client chủ động thiết lập cả kết nối điều khiển và kết nối dữ liệu đến Server
Câu 19:
Mục đích chính của việc sử dụng SSL/TLS trong lập trình mạng là gì?
💡 Lời giải chi tiết:
SSL/TLS được thiết kế để thiết lập các kênh truyền thông an toàn thông qua mã hóa dữ liệu và xác thực danh tính của các bên tham gia. Kết luận Lý giải Cung cấp tính bảo mật, toàn vẹn và xác thực cho dữ liệu truyền trên mạng
Câu 20:
Trong mô hình Client-Server sử dụng TCP, khi nào Server thực sự bắt đầu chấp nhận một kết nối mới?
💡 Lời giải chi tiết:
Hàm 'accept()' là hàm chặn (blocking) phía Server, nó sẽ lấy một yêu cầu kết nối từ hàng đợi và trả về một descriptor mới cho kết nối đó. Kết luận Lý giải Sau khi hàm 'accept()' được gọi và có yêu cầu kết nối từ Client
Câu 21:
Kỹ thuật 'Multithreading' trong lập trình Server nhằm mục đích gì?
💡 Lời giải chi tiết:
Sử dụng đa luồng (Multithreading) cho phép một máy chủ phục vụ nhiều kết nối Client cùng lúc bằng cách gán mỗi kết nối cho một luồng xử lý riêng biệt. Kết luận Lý giải Để xử lý đồng thời nhiều yêu cầu từ các Client khác nhau
Câu 22:
Giao thức WebSocket cung cấp kiểu truyền thông nào sau đây?
💡 Lời giải chi tiết:
WebSocket thiết lập một kết nối liên tục cho phép cả Client và Server gửi dữ liệu cho nhau bất cứ lúc nào (Full-duplex). Kết luận Lý giải Song công toàn phần (Full-duplex)
Câu 23:
Mã trạng thái HTTP (HTTP Status Code) nào báo hiệu rằng tài nguyên yêu cầu không được tìm thấy trên Server?
💡 Lời giải chi tiết:
Mã lỗi 404 là mã chuẩn của HTTP để thông báo rằng máy chủ không thể tìm thấy tài nguyên được yêu cầu bởi Client. Kết luận Lý giải 404 Not Found
Câu 24:
Trong kiến trúc TCP/IP, đơn vị dữ liệu tại tầng Giao vận được gọi là gì?
💡 Lời giải chi tiết:
Tầng Giao vận đóng gói dữ liệu ứng dụng thành các Segment (TCP) hoặc Datagram (UDP) trước khi chuyển xuống tầng dưới. Kết luận Lý giải Segment (đối với TCP) hoặc Datagram (đối với UDP)
Câu 25:
Chức năng của cổng (Port) trong lập trình mạng là gì?
💡 Lời giải chi tiết:
Số hiệu cổng được sử dụng để phân biệt các ứng dụng và dịch vụ khác nhau đang chạy trên cùng một giao diện mạng (IP). Kết luận Lý giải Định danh một tiến trình hoặc dịch vụ cụ thể trên một máy tính