
上QQ阅读APP看书,第一时间看更新
Transport level
This section shows the way the connection is created between the browser and the web server. The flowchart shows the process in some detail.
When we start the connection by entering the URL into a browser, the following things happen to create the connection:
- The browser checks for the presence of a proxy configuration (Manual or Proxy Auto-Configuration (PAC) file).
- If there is a proxy present, the browser simply submits its request to the proxy and the proxy, after checking its policy, also serves the website back by following through point-3 onwards.
- If the proxy is not present, then the browser requests for the DNS resolution to change the host name into the IP address:
- The local cache is checked for the IP.
- If the IP is present in the local cache, the TTL value is checked and if the Time to Live (TTL) has expired, then the DNS query is made to the primary DNS server configured.
- If the IP is not present, then the DNS query is also made to the primary DNS server that is configured.
- Once the IP is found, a TCP connection is made. Default values are port 80 for HTTP, port 443 for HTTPS.
- The TCP connection is done by way of the TCP 3-way handshake.
- For HTTPS, the TCP handshake is followed by an SSL handshake.
- Once the connection is successful, the HTTP request is sent to the web server, which then sends an appropriate response back to the system.
The HTTP protocol mainly uses the following reference implementations: HTTP/1.0, HTTP/1.1, and HTTP/2.0. While HTTP 2 support was added to most browsers by the end of 2015, the most used protocol still happens to be HTTP/1.1.

Optional:
To understand this better, the following example emulates connecting to www.google.com and requesting the / (index) page, with and without a proxy. This can be done from any terminal (Command Prompt in Windows and terminal/ssh in Linux or macOS). You should ensure that the telnet client is installed as that will allow us to emulate a TCP connection without having to write our own socket program.
The following commands are also used to test the connectivity to the website, and may prove useful in troubleshooting the applications, regardless of where it is hosted.