Figure 2.18 lists several standard services that are provided by most implementations of TCP/IP. Notice that all are provided using both TCP and UDP and the port number is the same for both protocols.
Often these services are provided by the inetd daemon on Unix hosts (Section 13.5). These standard services provide an easy testing facility using the standard Telnet client. For example, the following tests both the daytime and echo servers:
aix % telnet freebsd daytime | |
Trying 12.106.32.254... | output by Telnet client |
Connected to freebsd.unpbook.com. | output by Telnet client |
Escape character is '^]'. | output by Telnet client |
Mon Jul 28 11:56:22 2003 | output by daytime server |
Connection closed by foreign host. | output by Telnet client (server closes connection) |
aix % telnet freebsd echo | |
Trying 12.106.32.254... | output by Telnet client |
Connected to freebsd.unpbook.com. | output by Telnet client |
Escape character is '^]'. | output by Telnet client |
hello, world | we type this |
hello, world | and it is echoed back by the server |
^] | we type control and right bracket to talk to Telnet client |
telnet> quit | and tell client we are done |
Connection closed. | client closes the connection this time |
In these two examples, we type the name of the host and the name of the service (daytime and echo). These service names are mapped into the port numbers shown in Section 11.5.
Notice that when we connect to the daytime server, the server performs the active close, while with the echo server, the client performs the active close. Recall from Figure 2.4 that the end performing the active close is the end that goes through the TIME_WAIT state.
These "simple services" are often disabled by default on modern systems due to denial-of-service and other resource utilization attacks against them.