PROJECT 1: DHCP =============== 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | op (1) | htype (1) | hlen (1) | hops (1) | +---------------+---------------+---------------+---------------+ | xid (4) | +-------------------------------+-------------------------------+ | secs (2) | flags (2) | +-------------------------------+-------------------------------+ | ciaddr (4) | +---------------------------------------------------------------+ | yiaddr (4) | +---------------------------------------------------------------+ | siaddr (4) | +---------------------------------------------------------------+ op = BOOTREQUEST=1 from client; BOOTREPLY=2 from server htype = 1 hlen = 6 hops = 0 xid = monotonically increasing from client to server and server copies this in the reply so client can match request with reply secs = 0 flags = 0 ciaddr = local IP address of client yiaddr = zero from client to server; copied from ciaddr by server when replying to client siaddr = server IP address The project is to create server and client processes that will exchange messages of the format given above. Accept a command line argument on how many messages are to be exchanged between one client and server and send the message that many times with a gap of a few seconds (also a command line argument). Then, in the client, print the reply from the server to the console. Give the client ID (have different client IDs for different clients) when printing the replies. Group 8 : Implement as TCP Concurrent server with processes Group 5 : Implement as TCP Concurrent server with threads Group 11 : Implement as TCP iterative server with select to handle multiple connections