从输入 URL 到展现页面的全过程
从我们输入一个网址到页面展现的过程到底发生了什么呢?
# 总体来说分为以下几个过程:
- 输入网址
- DNS解析
- 建立TCP/IP链接
- 发送HTTP请求
- 服务器处理请求
- 服务器返回HTTP响应
- 浏览器渲染页面并展现
- 断开连接
# 输入网址
当我们想要打开一个页面时,很简单的会想到去输入一个网址 我们以本网址为例,解释一下它各部分的组成:
https://www.baidu.com
https :https是协议(Protocol),它表明了浏览器使用何种协议,有http、https、ftp、mailto等,其中https是加密认证版的http(详见《图解HTTP》)
www.baidu.com :这是域名(Domain name),它表明正在请求哪个Web服务器,其中www是主机名(host)
# DNS解析
输入网址(URL)这一步我们很好理解,但是接下来所谓的域名解析是什么呢?又是为什么要进行域名解析呢?
# 什么是IP地址
IP 地址(Internet Protocol Address)是互联网协议特有的一种地址,它是 IP 协议提供的一种统一的地址格式。IP 地址为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。 像192.168.59.0就是一个主机IP地址
# 什么是DNS
DNS服务器上存储着映射<域名-IP>,DNS解析就是去DNS服务器查询IP地址。
# DNS解析
DNS解析按照下面顺序逐个查找。
- 本地(hosts文件)
- DNS服务器(本地DNS | 根DNS)
- 域服务器
- 解析服务器的地址
# DNS查询的两种方式:递归查询和迭代查询
递归解析 迭代解析
# DNS域名称空间的组织方式
# DNS负载均衡
当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会蹦掉。
处理办法就是用DNS负载均衡技术,它的原理是在DNS服务器中为同一个主机名配置多个IP地址 在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
# 建立TCP/IP链接
# ”三次握手”的详解
# 为什么要三次握手
clien端 防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。 client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致连接释放以后的某个时间才到达server。 本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。 于是就向client发出确认报文段,同意建立连接。
server端 假设不采用“三次握手”。 如果只要server发出确认,新的连接就建立了。并一直等待client发来数据。 事实是client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。 但server端就会有许多这样的等待,server的很多资源就白白浪费掉了。
采用“三次握手”的办法可以防止上述现象发生。主要目的防止server端一直等待,浪费资源。