全面解析:HTML页面的加载全过程(一)--输入URL地址,与服务器建立连接
用户输入URL地址,与服务器建立连接
用户在浏览器地址栏输入一个URL
浏览器开始执行以下三步操作操作:url解析、DNS查询、TCP连接
第一步:URL解析
什么是URL?
URL(Uniform Resource Locator,统一资源定位符)是互联网上标准资源的地址,互联网上每个文件(即资源)都有一个唯一的URL,它包含了文件的位置以及浏览器处理方式等信息。
URL 标准格式
scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]
如:https://www.baidu.com/s?wd=url&rsv_spt=1
scheme:协议名称,http、https、ftp等。
host:HTTP服务器的IP地址或者域名,如www.baidu.com
port:HTTP服务器的默认端口是80,此端口可以省略。如vscode启动vue,用 http://localhost:5173/端口path:访问资源的路径
url-params:参数
query-string:发送给http服务器的数据
anchor:锚点定位
浏览器解析URL,确定协议(如HTTP或HTTPS)、主机名、端口(默认为80或443)以及路径(如/path/to/page.html)
第二步:DNS查询
域名就是起一个方便记忆的名字,否则直接使用服务器的外网IP访问服务器不好记忆,操作不方便
1、 DNS
DNS是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于TCP/IP网络。
2、域名DNS作用
域名系统是将IP地址与域名相互映射的一个分布式数据库
在浏览器输入某个Web服务器的域名时
(1) 用户主机首先会在自己的DNS高速缓存中查找该域名所对应的IP地址。
(2)如没有,向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地址映射关系的数据库
(3) 之后将查询结果发送给用户主机。
(4)用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。
3、域名的种类
- 顶级域名 baidu.com
- 一级域名 www.baidu.com
- 二级域名 sports.baidu.com
- 三级域名 kbs.sports.baidu.com
- .com 国际域名
- .cn 中文域名
- .com.cn
- .edu 教育网
- .gov 国家政府单位
- .io 博客
- .org 官方组织
- .net 系统类
第三步:TCP连接
TCP(Transmission Control Protocol,传输控制协议)是互联网协议套件中一种核心协议。它提供面向连接的、可靠的字节流传输服务,确保数据从一端正确无误地传输到另一端。
四层协议将 数据链路层和物理层合并为 “网络接口层”
1、TCP 连接建立:三次握手
常见面试题:
为什么TCP需要三次握手,为什么不设计成两次握手:
- 确保双方都准备好接收连接:通过三次握手,客户端和服务器可以确认彼此都准备好接收连接请求,从而建立起可靠的连接。如果只进行两次握手,可能会出现客户端发送的SYN包在网络中丢失,导致服务器无法接收到连接请求,连接无法建立
- 防止已失效的连接请求报文再次传送到服务器:如果采用两次握手,可能会出现网络延迟或拥堵导致旧的连接请求报文在网络中滞留。当客户端重新发送连接请求时,服务器可能会误以为这是新的请求并建立连接,导致资源浪费。
- 同步初始序列号:TCP通过序列号来标识发送的数据包,确保数据的顺序性和完整性。在三次握手过程中,双方会交换初始序列号,以便后续的数据传输能够正确进行。
为什么不设计成次五次握手:
三次握手就可以符合实际情况,所以就没必要设计成四次握手、五次握手等情况,浪费资源
**结论:**三次握手能够确保连接的可靠性、同步初始序列号,并防止已失效的连接请求报文再次传送到服务器,而两次握手无法满足这些需求,因此TCP选择了三次握手而不是两次握手,超过三次握手,浪费资源。
##2、 TCP 连接断开:四次挥手
就是客户端与服务器断开连接时,需要一共发送四个报文段来完成断开TCP连接
浏览器根据协议与服务器建立连接,通常涉及三次握手过程以确保可靠的数据传输通道。