Hyper Text Transfer Protocol
HTTP protocol nowadays is still one of the most popular protocols used over the internet. But many developers still can’t explain clearly what is it. In this article, you will find out what HTTP is practically is.
But stepping back a little let’s remind what is the meaning of Protocol. A protocol can be understood as a contract or agreement between sender and receiver. The HTTP protocol is described in RFC 2616. The main purpose of the HTTP protocol is to send web data to browsers to render it.
Structure of HTTP Protocol
As many of you know HTTP protocol arrange communication between web browser and server. So protocol structure includes:
- URL or Uniform Resource Locator.
For example: http://www.google.com
- Method Name.
For example: GET or PUT, there are more exotic: HEAD, OPTIONS
- Request headers.
For example: Keep-Alive: timeout=5, max=1000
- Request body.
For example: body in json format : “‘id’:’12′”
HTTP Is Application Layer Live on Top of Reliable Protocol
The HTTP protocol can be implemented on top of any protocol exception one condition – such protocol has to be reliable. For example, TCP protocol has delivery acknowledgment but UDP doesn’t. Theoretically, you still can create a UDP HTTP server but in that case, you won’t follow RFC 2616 requirements, and such a solution can be named HTTP. So if we portray HTTP as a layer it will looks like this:
Let’s See What’s Under the Hood
Receiving HTTP Requests Using TCP Java Server
In order to practically see what we receive from regular HTTP requests we install simple Java server and check the body of received request.
Preparing HTTP Request Using Postman Plugin
Before creating the server we prepare an HTTP request using Postman plugin.
Writing Simple TCP Java Server
Let’s use a simple Java TCP server provided by JDK. It will just listen to port 8080 and print all lines received from that port:
Once the server is started, we send a request from Postman and check output in the console:
So here magic disappears. And you can see that the TCP server received just a regular string that follows HTTP protocol and provides headers/URL/method/body.