Make http request with telnet
Posted by danielSep 14
How to make an HTTP request with telnet
One of the most frequent interview question for tech professionals, especially system administrators and developers is – “tell us what happens when you type a URL in a browser?”. Skipping the DNS resolution part, we can understand the client to server HTTP communication with telnet. The simplest case is a GET request to a path with a HOST header.As an example, let us make an http request to an AWS service which responds back with our public IP address –
$ telnet checkip.amazonaws.com 80
....
GET / HTTP/1.1
Host: checkip.amazonaws.com
....
Here is the full transaction –
daniel@hidmo:~$ telnet checkip.amazonaws.com 80
Trying 18.214.132.216...
Connected to checkip.us-east-1.prod.check-ip.aws.a2z.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: checkip.amazonaws.com
HTTP/1.1 200 OK
Date: Sat, 14 Sep 2019 12:51:55 GMT
Server: lighttpd/1.4.41
Content-Length: 14
Connection: keep-alive
162.247.79.245
Connection closed by foreign host.
Notice how the server closes the connection after waiting for a few seconds, that is because the keep-alive is enabled on the server side as shown from the server response – “Connection: keep-alive“. With keep-alive we can make additional http calls with out going through the whole 3-way TCP handshake.
Disable keep-alive on client side
If for some reason, we want to close the connection on the client side immediately we can pass “Connection: Close” as part of the http header in the request.
References –
https://stackoverflow.com/questions/15772355/how-to-send-an-http-request-using-telnet
https://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive
No comments
You must be logged in to post a comment.