16、在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?

 

第一种回答

1、查浏览器缓存,看看有没有已经缓存好的,如果没有

2 、检查本机host文件

3、调用API,Linux下Scoket函数 gethostbyname

4、向DNS服务器发送DNS请求,查询本地DNS服务器,这其中用的是UDP的协议

5、如果在一个子网内采用ARP地址解析协议进行ARP查询如果不在一个子网那就需要对默认网关进行 DNS查询,如果还找不到会一直向上找根DNS服务器,直到最终拿到IP地址(全球好像一共有13台根服务器)

6、这个时候我们就有了服务器的IP地址 以及默认的端口号了,http默认是80 https是 443 端口号,会, 首先尝试http然后调用Socket建立TCP连接,

7、经过三次握手成功建立连接后,开始传送数据,如果正是http协议的话,就返回就完事了,

8、如果不是http协议,服务器会返回一个5开头的的重定向消息,告诉我们用的是https,那就是说IP没 变,但是端口号从80变成443了,好了,再四次挥手,完事,

9、再来一遍,这次除了上述的端口号从80变成443之外,还会采用SSL的加密技术来保证传输数据的安 全性,保证数据传输过程中不被修改或者替换之类的,

10、这次依然是三次握手,沟通好双方使用的认证算法,加密和检验算法,在此过程中也会检验对方的 CA安全证书。

11、确认无误后,开始通信,然后服务器就会返回你所要访问的网址的一些数据,在此过程中会将界面 进行渲染,牵涉到ajax技术之类的,直到最后我们看到色彩斑斓的网页

 

第二种回答

1. 浏览器检查域名是否在缓存当中(要查看 Chrome 当中的缓存, 打开 chrome://net-internals/#dns)。

2. 如果缓存中没有,就去调用 gethostbyname 库函数(操作系统不同函数也不同)进行查询。

3. 如果gethostbyname没有这个域名的缓存记录,也没有在hosts` 里找到,它将会向 DNS 服务器发送一条 DNS 查询请求。DNS 服务器是由网络通信栈提供的,通常是本地路由器或者 ISP 的缓存 DNS 服务器。

4. 查询本地 DNS 服务器

5. 如果 DNS 服务器和我们的主机在同一个子网内,系统会按照下面的 ARP 过程对 DNS 服务器进行 ARP 查询

6. 如果 DNS 服务器和我们的主机在不同的子网,系统会按照下面的 ARP 过程对默认网关进行查询

 

17、谈谈DNS解析过程,具体一点

 

1.请求一旦发起,若是chrome浏览器,先在浏览器找之前有没有缓存过的域名所对应的ip地址,有的 话,直接跳过dns解析了,若是没有,就会找硬盘的hosts文件,看看有没有,有的话,直接找到hosts 文件里面的ip

2.如果本地的hosts文件没有能得到对应的ip地址,浏览器会发出一个dns请求到本地dns服务器,本地 dns服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动等。

3.查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录, 如果缓存中有此条记录,就可以直接返回结果,此过程是递归的方式进行查询。如果没有,本地DNS 服务器还要向DNS根服务器进行查询。

 

4.本地DNS服务器继续向域服务器发出请求,在这个例子中,请求的对象是.com域服务器。.com域服务 器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的 解析服务器的地址。

5. 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本 地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用 户查询时,可以直接返回结果,加快网络访问。