The Internet Protocol. This protocol is almost never used directly by applications. It provides the basic packet delivery and routing infrastructure of the Internet. Much like the phone company’s switching centers or the Post Office’s trucks, it is not of much day-to-day interest to the regular user (or programmer). It happens to be a best effort datagram protocol. In the early twenty-first century, there are two versions of this protocol in use:
The original version of the Internet Protocol, with 32-bit addresses, on which most of the current Internet is based.
The “next generation” of the Internet Protocol, with 128-bit addresses. This protocol is in wide use in certain parts of the world, but has not yet replaced IPv4.2
Versions of the other protocols that sit “atop” IP exist for both IPv4 and IPv6. However, as the IPv6 versions are fundamentally the same as the original IPv4 versions, we will not distinguish further between them.
The User Datagram Protocol. This is a best effort datagram protocol. It provides a small amount of extra reliability over IP, and adds the notion of ports, described in TCP and UDP Ports.
The Transmission Control Protocol. This is a duplex, reliable, sequenced
byte-stream protocol, again layered on top of IP, and also providing the
notion of ports. This is the protocol that you will most likely use
gawk for network programming.
All other user-level protocols use either TCP or UDP to do their basic communications. Examples are SMTP (Simple Mail Transfer Protocol), FTP (File Transfer Protocol), and HTTP (HyperText Transfer Protocol).
There isn’t an IPv5.