Question 1) Answer the following questions about application layer protocols:
a) Name the two things that the application layer process implements?
b) Application layer protocols define four things. Explain these four things?
c) In the context of a communications session, one process is usually a client and the other a server. Carefully describe client and server in this context.
d) Define and briefly explain (one sentence at most) each of the following (also, identify which port(s) each application protocols use and the most recent RFC describing the protocol): SMTP, HTTP, HTTPS, FTP, TELNET, IMAP, RDP, SSH, DNS, and DHCP.
Question 2) Write two command-line sockets programs – a client and a server – as follows. Define a Who-Am-I message as a UDP datagram containing the ASCII string “WHO AM I”. Define a You-Are message as a UDP datagram containing the ASCII string “YOU ARE X AT Y” where X is a hostname string of client host sending the Who-Am-I message and Y is the port number of the client host sending the Who-Am-I message.
Write a client program to send Who-Am-I message to a server and wait for a reply You-Are message from the server – on receiving the reply You-Are message the client program must print the message to the console and exit. The client program must take the IP address of destination server from command line (that is, as a command line argument). Write a server program that waits for a Who-Am-I message from the client and then returns to the client an You-Are message containing its host name and port number.
The server program must not automatically terminate. If you modify existing code to meet requirements of this assignment, make sure to carefully and clearly denote which code is yours and which is “old”.
You have to prepare two things:
1) A screenshot of execution and
2) the source code for the client and server programs.