Tutorials Point

  Learning Unix Socket
  Socket Quick Guide
  Socket Useful Resources
  Selected Reading

Copyright © 2014 by tutorialspoint

  Home     References     Discussion Forums     About TP  

Ports and Services

previous next AddThis Social Bookmark Button


When a client process wants to connect a server, the client must have a way of identifying the server that it wants to connect. SO if the client knows the 32-bit Internet address of the host on which the server resides it can contact that host. But how does the client identify the particular server process running on that host ?

To resolve the problem of identifying a particular server process running on a host, both TCP and UDP have defined a group of well known ports.

For our purposes, a port will be defined as an integer number between 1024 and 65535. This is because all port numbers smaller than 1024 are considered well-known -- for example, telnet uses port 23, http uses 80, ftp uses 21, and so on.

The port assignments to network services can be found in the file /etc/services. If you are writing your own server then care must be taken to assign a port to your server. You should make sure that this port should already be not assigned to any other server.

Normally its a practice to assign any port number more than 5000. But there are many organizations who has written servers having port number more than 5000. For example Yahoo Messanger runs on 5050, SIP Server runs on 5060 etc.

Example Ports and Services:

Here is a small list of services and associated ports. You can find most updated list of internet ports and associated service at IANA - TCP/IP Port Assignments.

ServicePort NumberService Description
echo7 UDP/TCP sends back what it receives
discard 9 UDP/TCP throws away input
daytime 13 UDP/TCP returns ASCII time
chargen 19 UDP/TCP returns characters
ftp 21 TCP file transfer
telnet 23 TCP remote login
smtp 25 TCP email
daytime 37 UDP/TCP returns binary time
tftp 69 UDP trivial file transfer
finger 79 TCP info on users
http 80 TCP World Wide Web
login 513 TCP remote login
who 513 UDP different info on users
Xserver 6000 TCP X windows (N.B. >1023)

Port and Service Functions:

Unix provides following functions to fetch service name from the /etc/services file.

  • struct servent *getservbyname(char *name, char *proto): - This call takes service name and protocol name and returns corresponding port number for that service.

  • struct servent *getservbyport(int port, char *proto): - This call takes port number and protocol name and returns corresponding service name.

The return value for each function is a pointer to a structure with the following form:

struct servent
  char  *s_name; 
  char  **s_aliases; 
  int   s_port;  
  char  *s_proto;

Here is the description of the member fields:

s_namehttpThis is official name of the service. For example SMTP, FTP POP3 etc.
s_aliasesALIASThis will hold list of service aliases. Most of the time this will be set to NULL.
s_port80This will have associated port number. For example for HTTP this will be 80.
This will be set to the protocol used. Internet services are provided using either TCP or UDP.

previous next Printer Friendly