📝 MIB Management Information Base (21 MCQs)
📖 From Data Communication and Networks • 27. Network Management • 21 questions available
What is MIB Management Information Base?
A MIB is a virtual database that contains definitions of manageable objects on a network device, structured as a tree where each node has a unique OID and describes attributes like system name, interface status, or error counts that can be queried via SNMP.
📝 All MIB Management Information Base MCQs
Q1. What does the function do in line 15?
📖 Explanation: The routine takes a 16‑bit value (the port number) in host byte order and swaps its bytes if necessary so that the result follows network byte order, which is big‑endian. This ensures that all machines interpret the port consistently regardless of their native endianness.
Q2. Which socket type is created by the call ?
📖 Explanation: The second argument specifies a datagram‑oriented socket, which is the hallmark of UDP. Therefore the call creates a UDP socket, suitable for connectionless communication, as opposed to a stream‑oriented TCP socket.
Q3. If returns a negative value, what is the most likely immediate effect in the given code?
📖 Explanation: The code stores the return value of in *len* but does not test it for negativity. Consequently, when a negative value is returned, the program proceeds without reporting the error, effectively ignoring the failure and continuing the infinite loop.
Q4. Suppose the client sends a packet larger than the server's buffer size. What will happen when is called?
📖 Explanation: When the incoming datagram exceeds the length supplied to , the kernel copies only as many bytes as fit into the buffer and discards the remainder. The call succeeds, returning the number of bytes actually placed in the buffer, which is the truncated size.
Q5. What is the effect of calling \text{memset}(&servAddr, 0, sizeof(servAddr)) before setting fields?
📖 Explanation: fills the entire memory region of *servAddr* with zeros, ensuring that any fields not explicitly assigned later contain a known value (zero). This eliminates the risk of residual data from previous stack usage influencing the socket address configuration.
Q6. If the server's call fails because the port is already in use, which function will report the error?
📖 Explanation: The code checks the return value of and, upon failure, invokes with the message \Error: bind failed!\. prints the supplied string followed by a description of the current value, thereby informing the user why the bind could not succeed.
Q7. Consider that the server runs inside an infinite loop. If the client sends a malformed packet that does not contain a null terminator, how will the server's behave?
📖 Explanation: transmits the raw byte count specified by *len*, which is the number of bytes returned by . Because UDP does not rely on null‑terminated strings, the absence of a terminator does not affect transmission; the server simply forwards the same byte sequence it received.
Q8. Compare the use of in this UDP server with using on a TCP server. Which statement is true?
📖 Explanation: In both UDP and TCP, is used to associate a socket with a specific local IP address and port. It does not create a connection; rather, it reserves the address so the operating system knows where to deliver incoming packets. For TCP, a subsequent and are required to establish connections.
Q9. Which of the following best differentiates from in the context of this program?
📖 Explanation: returns not only the payload but also fills a sockaddr structure with the sender's address and port, which is essential for a connectionless UDP server that must know where to send a response. In contrast, is used with connected sockets where the peer's address is already known.
Q10. Evaluate why the server uses in the call instead of .
📖 Explanation: The third argument of expects the length of the address structure, which for IPv4 is a constant . Providing this compile‑time constant avoids reliance on a variable that might have been altered elsewhere, ensuring the kernel receives a correctly sized address block.
Q11. Suppose the server is modified to call after . What effect would this have on the UDP socket's behavior?
📖 Explanation: The system call is defined only for stream‑oriented (SOCK\_STREAM) sockets. Invoking it on a datagram socket () results in an error, typically or , and the socket remains a UDP socket with no listening semantics.
Q12. If the server wishes to support multiple ports simultaneously, which design change is most appropriate?
📖 Explanation: The simplest and most reliable method is to create a distinct socket for each port and bind each one separately. This isolates traffic per port, avoids complex multiplexing logic, and aligns with the UDP model where each socket is bound to a single local port.
Q13. Apply the principle of least privilege: which permission should the server binary ideally have?
📖 Explanation: Running the server under a regular, non‑privileged user account limits the potential impact of bugs or compromises. The process only needs permission to open a UDP socket on a non‑reserved port, which an ordinary user can do, thereby adhering to the security best practice of granting the minimum necessary rights.
Q14. Explain the relationship between and the server's ability to receive packets from any network interface.
📖 Explanation: When the server sets , it tells the kernel to accept incoming datagrams on any local interface that has the specified port. This allows the program to listen on Ethernet, Wi‑Fi, or any other network device without needing separate bindings.
Q15. Synthesize how the combination of and ensures correct communication across heterogeneous systems.
📖 Explanation: Both functions translate host‑order integers to the standardized network byte order (big‑endian). handles 16‑bit quantities such as ports, while processes 32‑bit values like IP addresses. This uniform representation guarantees that machines with differing native endianness interpret the transmitted fields consistently.
Q16. Given the infinite loop, what potential resource leak could occur if the server does not handle errors properly, and how can it be mitigated?
📖 Explanation: If errors from system calls like or are ignored, the loop may continue creating new sockets or failing to close existing ones, eventually exhausting the process's file descriptor limit. Proper error handling, including closing the socket on fatal failures and optionally exiting or restarting, prevents this leakage.
Q17. If the server needs to log each client's IP address, which field from should be used and how must it be converted for human readability?
📖 Explanation: The IPv4 address of the client resides in . To transform this binary value into the familiar dotted‑decimal notation, the program should call (or the thread‑safe ). This yields a readable string suitable for logging.
Q18. Apply the concept of idempotence to the server's operation: under what condition does sending the same buffer multiple times not change the system state?
📖 Explanation: If the data carried by the packet does not modify any external state—e.g., it is a read‑only query or a timestamp—the act of retransmitting the same bytes does not alter the overall system behavior. This satisfies idempotence because the outcome remains identical regardless of how many times the packet is sent.
Q19. Infer the outcome if the variable is not initialized before the first call to .
📖 Explanation: expects *clntAddrLen* to contain the size of the address buffer. If the variable holds a random value, the kernel may treat it as an invalid length and return an error, typically setting to . The call therefore fails, and *len* becomes .
Q20. Evaluate the impact of changing the socket's protocol argument from 0 to in the call.
📖 Explanation: When the socket type is , the protocol field is ignored if set to 0, and the kernel automatically selects the appropriate protocol (UDP). Explicitly specifying yields the same result, so the behavior of the socket remains unchanged.
Q21. Synthesize a scenario where using this UDP server design could lead to a security vulnerability, and propose a mitigation strategy.
📖 Explanation: An unauthenticated UDP listener on a well‑known port can be exploited by malicious actors to inject arbitrary data, perform amplification attacks, or exfiltrate information. Mitigation includes adding application‑level authentication, rotating or randomizing ports, employing transport‑level encryption (e.g., DTLS), and implementing rate‑limiting to reduce abuse.