Question: I am reading [Computer Networking: A Top-Down Approach 5th (fifth) edition](https://rads.stackoverflow.com/amzn/click/com/B005GLUZ2Q). I have reached chapter two and I wonder if it is possible to actually try out the different application protocols by writing the requests etc? I am using Windows if that matter if you need a tool for doing that, and if I need a tool, what does the tool do behind the scenes for connecting?

Answer: 
You should use `telnet` to connect to all of these protocol, do your request, reading the answer and so on.

I'm reading that `telnet` is disabled by default on newer windows version (unbelievable, why? Thank goodness I stopped using it!)... Follow [this guide](http://www.fettesps.com/windows-7-enable-telnet/) to re-enable it if you're using a windows version newer than xp.

Telnet was used to remotely login to a host. Today it's completely unsafe to use it in this way, as long as a telnet connection isn't encrypted and we have such a better tool like ssh for remote connection. However, you can think to Telnet as a generic TCP client. It can establish TCP connection on every port.

By default, it will try to attempt to connect to port 23 (that is the telnet port) but you can easily change that.

For example, if you want to test HTTP, you can write in your command line:

```
~$ telnet www.example.com 80
Trying 192.0.43.10...
Connected to www.example.com.
Escape character is '^]'.

```

Where 80 is the http port (of course, if you're running it locally, you should connect to `localhost`). Other lines state the connection is ready to receive a request. Now you can type any http command you want.

```
GET /
HTTP/1.0 302 Found
Location: http://www.iana.org/domains/example/
Server: BigIP
Connection: close
Content-Length: 0

```

Where `GET /` is the command I typed and the rest is the http response.

Changing the port number, you can speak to (almost?) every protocol in the internet.
Well you can them out like this.... just to name a few...

**Ftp :** `ftp ip_addr` or `ftp domain_name`

**Telnet :** `telnet ip_addr` or `telnet ip_addr:port_no` or `tracert domain_name`

**tracert :** `tracert ip_addr` or `tracert domain_name`

**ping :** `ping ip_addr` or `ping domain_name`