Application Layer Protocols

To truly understand how to make an application layer protocol, it is important to understand existing examples of application layer protocols.

There are lots of different types of existing application layer protocols that are well established. These categories are:

Management Protocols (BOOTP, DNS, SNMP, NTP) Remote Communication Protocols (Telnet, SSH) File Transfer Protocols (FTP, TFTP) Mail Application Protocols (SMTP, POP3, IMAP4) Browser Protocols (HTTP, HTTPS, TLS/SSL) Voice over IP (VoIP) Protocols (SIP, RTP)

Management Protcols

BootP will automate the IP Address configuration process. Today, this is replaced by Dynamic Host Configuration Protocol (DHCP)

DNS converts domain names to IP addresses. For example, it will convert into so you don't have to remember

NTP will automatically synchronize clocks over a network.

SNMP(v3) will gather statistics from network devices. Useful for gathering information from network devices like "How many bytes have gone into this network device?". Version 3 is the only encrypted version of this protocol, so it is recommended to use version 3 always.

Remote Communication Protocols

Telnet can be used to remote connect to another machine over a network (Like SSH but unencrypted). Since it's unencrypted, it's not recommended that you use this protocol to connect to any machine with private data.

SSH can be used to remote into another machine, except unlike Telnet, SSH is of course secure and encrypted (end to end), so you do not need to worry about the security of the connection.

File Transfer Protocols

Allows the transfer of files between two machines. This is similar to a remote communication protocol, however it is only used for the transfer of files (technically SSH can also be used to transfer files through the scp command, but FTP was built for file transfer and it's probably better for doing such a thing in most cases). FTP offers a full suite of functionality for transferring and modifying files on a remote machine. TFTP - Trivial File Transfer Protocol

This is a much simpler way to transfer files. It can only read and write files, so not but better than just using SSH. In fact, unless your use case requires it, you really shouldn't use TFTP ever because it requires no authentication to transfer files if set up on a machine. Anybody can connect and read or write files this way without authentication.

Mail Application Protocols

SMTP is often used for sending mail between mail servers. We need another protocol for receiving mail.

POP3 is used to receive mail, and it is designed for intermittent connectivity.

IMAP4 is another mail protocol similar to POP3, however IMAP4 is a lot more functional. It keeps states like Read, Replied, Deleted, etc…

Browser Application Protocols

HTTP is the most common browser protocols there are, and it's even used in non browser applications.

Just HTTP with an extra layer of encryption through TLS/SSL. HTTPS ensure your data does not get intercepted by a man-in-the-middle attack. If someone tries to intercept your data, it would be almost impossible to decrypt.

TLS is the updated version of SSL. These are encryption layers to encrypt data in a browser. Voice over IP (VoIP) Protocols

Sets up and tears down media calls.

RTP is the main protocol used in VoIP along with SIP. This is the protocol that is used to actually transfer media, like your voice, over the network. SIP is only used to set up the call, make sure it's still running, and tear down the call.