• 作者:老汪软件技巧
  • 发表时间:2024-08-28 11:02
  • 浏览量:

前言

本文详细描述了从输入URL到页面渲染的整个过程,包括网络请求的各个阶段、HTTP协议的发展、TCP与UDP的区别,以及浏览器渲染的基本原理。希望这篇文章能帮助读者更好地应对面试和理解Web开发的底层机制。

1. DNS解析:域名解析得到IP地址

DNS(域名系统)解析是将人类可读的域名(如 )转换为机器可读的IP地址(如119.75.217.109)的过程。

1. 本地域名服务器查找缓存: 当用户在浏览器中输入一个域名并回车时,浏览器首先会检查自身的缓存中是否有该域名的解析记录,如果没有找到就会向本地域名服务器发送给查询请求。本地域名服务器首先会检查自己的缓存中是否有该域名的解析记录。如果有,则直接返回IP地址给浏览器,解析过程结束。

2. 到根域名服务器查找缓存: 如果本地域名服务器的缓存中没有找到对应的解析记录,它会向根域名服务器发起查询,注意本地域名服务器通常不会直接查询根域名服务器,而是采用递归查询或迭代查询的方式。

3. 到.com顶级域名服务器查找缓存: .com顶级域名服务器会检查自己的缓存中是否有该域名的解析记录。如果有,则返回给本地域名服务器(或返回给客户端,这取决于是递归还是迭代的查询方式)。如果没有,.com顶级域名服务器会告知下一级域名服务器的地址,即目标域名服务器的地址。

4. 到目标域名服务器查找缓存: 目标域名服务器负责维护这个域名的所有解析记录,它会检查自己的数据库,找到对应的IP地址并返回给查询对象。

5. 本地缓存该IP地址,减少下次DNS解析时间: 注意:DNS缓存的时间长度(TTL)是由目标域名服务器在解析记录中设置的,TTL值决定了缓存记录在被视为过时之前可以保存多久。

2. TCP建立连接

浏览器得到域名的IP地址后,会向该IP地址的443端口(HTTPS默认端口,如果是HTTP则是80端口)发起TCP连接请求。

TCP是一个简单的数据传输协议,它拥有复杂的头部结构和状态机来确保数据的可靠传输。TCP头部中包含了多个标志位,用于控制TCP的连接、数据传输和断开等过程。

TCP三次握手

TCP的连接建立过程是一个三次握手的过程,具体步骤如下:

客户端向服务端发送建立连接的请求,客户端进入 SYN-SENT 状态

服务端向客户端发送同意应答,服务端进入 SYN-RECEIVED 状态

客户端向服务端发送确认接收到了服务端的同意应答,客户端和服务端进入 ESTABLISHED 状态

TCP为什么一定要是三次握手而不是两次?

面试之中我们经常会被问到这个问题。TCP之所以采用三次握手来建立连接,而不是两次,主要是为了确保连接的可靠性和防止已失效的连接请求报文段突然又传送到了服务端,从而浪费服务端的资源。

具体来说,如果只有两次握手,客户端向服务端发送一个连接请求报文A,但是由于网络问题导致请求超时或丢失,TCP的超时重传机制会再次发送一个新的建立连接请求B,当B被应答后数据通讯也完成后释放连接,双方进入close状态。一旦此时A请求又由于网络延迟等原因再次出现,那么服务端会认为又有客户端又要跟它连接,从而应答并进入SYN-RECEIVED状态,等待数据传输,造成服务端资源浪费。


上一条查看详情 +CMake构建学习笔记8-OpenSceneGraph库的构建
下一条 查看详情 +没有了