Dynamic Source Routing Requirements: The client will send a DSR fixed header with a Route Request option but with only the target address sent. The server will reply by setting its own address also into the header. Accept from user as command line argument how many messages should be sent from client to server. For every message, accept target address from the user. Also, accept the server IP address as a command line argument. Fixed Portion of DSR Options Header The fixed portion of the DSR Options header is used to carry information that must be present in any DSR Options header. This fixed portion of the DSR Options header has the following format: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header |F| Reserved | Payload Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ . . . Options . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Next Header 8-bit selector. Identifies the type of header immediately following the DSR Options header. Uses the same values as the IPv4 Protocol field [34]. NOTE: Accept input from user as to what the next header is and fill this field with the IANA defined value for that protocol. Thus, UDP and TCP may be input by user and you need to use 17 and 6 respectively. Flow State Header (F) Flag bit. MUST be set to 0 from client to server and to 1 from server to client. Reserved MUST be sent as 0 and ignored on reception. Payload Length The length of the DSR Options header, excluding the 4-octet fixed portion. The value of the Payload Length field defines the total length of all options carried in the DSR Options header. Options Variable-length field; the length of the Options field is specified by the Payload Length field in this DSR Options header. Contains one or more pieces of optional information (DSR options), encoded in type-length-value (TLV) format. Route Request Option The Route Request option in a DSR Options header is encoded as follows: 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Type | Opt Data Len | Identification | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Target Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Address[1] | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Option Type 1 from client to server and 2 from server to client. Opt Data Len 8-bit unsigned integer. Length of the option, in octets, excluding the Option Type and Opt Data Len fields. Identification A unique value generated by the initiator (original sender) of the Route Request. Clients initiating a Route Request generate a new Identification value for each Route Request, for example based on a sequence number counter of all Route Requests initiated by the node. Target Address The address input by the user. Added by the client. It has no Address[1] field. Address[1] Address[1] is the address of the server. This is added by the server when replying to the client request. Group 4: Implement as a UDP server with select Group 6: Implement as an iterative TCP server with select Group 10: Implement as a concurrent TCP server with processes