官术网_书友最值得收藏!

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: 

  1. The browser checks for the presence of a proxy configuration (Manual or Proxy Auto-Configuration (PAC) file). 
  2. 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. 
  3. If the proxy is not present, then the browser requests for the DNS resolution to change the host name into the IP address:
    1. The local cache is checked for the IP. 
    2. 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.
    3. If the IP is not present, then the DNS query is also made to the primary DNS server that is configured. 
  4. Once the IP is found, a TCP connection is made. Default values are port 80 for HTTP, port 443 for HTTPS.
    1. The TCP connection is done by way of the TCP 3-way handshake. 
    2. For HTTPS, the TCP handshake is followed by an SSL handshake.
  5. 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. 
主站蜘蛛池模板: 定州市| 江北区| 景德镇市| 昂仁县| 河间市| 长子县| 汾阳市| 芷江| 五峰| 阳谷县| 冀州市| 思南县| 安福县| 石景山区| 秦皇岛市| 保康县| 彰化市| 梅州市| 江源县| 白河县| 闽清县| 孟津县| 大厂| 沁源县| 宣恩县| 辰溪县| 鹤庆县| 平利县| 义马市| 深州市| 大同县| 新民市| 神木县| 剑河县| 阿荣旗| 大新县| 灵山县| 莆田市| 巴里| 团风县| 信丰县|