Service names and port numbers are used to differentiate between the various services that execute over transport protocols, such as TCP/IP, UDP, DCCP and SCTP. The authority responsible for assigning service names and port numbers is the Internet Assigned Numbers Authority (IANA). IANA also maintains the registries which store service names and port numbers.
The port registries for transport protocols are divided into three number ranges: those for System Ports, User Ports and Dynamic/Private ports. Their associated number ranges are:
- System Ports (0-1023)
- User Ports (1024-49151)
- Dynamic / Private Ports (49152-65535)
For services to work effectively, hosts that run them and those that access them, together with intermediate devices, such as firewalls, have to agree on which specific destination port is used with the particular service. Often, many services use a default port and it is these that are recorded in the IANA registry.
The growing use of Windows and single-user Linux systems over the years, however, means that the original port model above is not strictly adhered to. It can no longer be assumed that a specific port number necessarily denotes a particular service. For example, if a host runs multiple instances of a service, they cannot all listen on the same port. Similarly, if there are multiple hosts behind the same NAT gateway, they cannot all map the same port on the external side of the gateway.
Today, there are thousands of applications and application-level protocols which have been assigned service names and port numbers and this number is set to rise in the future. Further confusion over port numbers can arise because IANA can de-assign a number no longer in use and reassign it to another service.
Common service names and their port numbers
The most common service names and their ports are listed in the chart below:
Service Name | Port Number |
FTP | 20, 21 |
SSH | 22 |
Telnet | 23 |
SMTP | 25 |
DNS | 53 |
DHCP | 67, 68 |
TFTP | 69 |
HTTP | 80 |
POP3 | 110 |
NNTP | 119 |
NTP | 123 |
IMAP4 | 143 |
LDAP | 389 |
HTTPS | 443 |
IMAPS | 993 |
RADIUS | 1812 |
AIM | 5190 |
On Linux machines, the /etc/services file stores the information about the various services that client applications might use. The file contains the service name, port number and the protocol it uses, as well as any aliases.
On Windows machines, the service names, port numbers and protocols can be found in the C:windows\system32\drivers\etc\services file. The file tells Microsoft services which ports to use.