输入url发生了什么

1.浏览器查询缓存,如果有缓存,则直接跳到第9步
2.浏览器询问操作系统服务器ip
3.操作系统做dns查询,返回ip地址给浏览器
4.浏览器打开对服务器的tcp连接(如果是https的话则更复杂)
5.浏览器通过tcp发送http请求
6.浏览器接收响应并且可能关掉Tcp连接,或者是重新使用连接处理新请求
7.浏览器检查响应是否为一个重定向(3xx结果状态码),或者是重新使用连接处理新请求
8.如果响应可缓存,将存入缓存。
9.浏览器响应解码(如果它是gzip压缩)
10.浏览器决定如何处理这些响应(html,音乐,图片)
11.浏览器展现响应,对位未知的mime类型还会弹出下载对话框
当在浏览器中输入URL后,会发生以下一系列流程: ### DNS解析 浏览器首先会检查本地的DNS缓存(包括操作系统和浏览器自身的缓存),看是否有该URL对应的IP地址。如果缓存中没有,则向本地DNS服务器发送请求。本地DNS服务器若无法解析,会向根域名服务器、顶级域名服务器、权威域名服务器逐级查询,最终获取到该URL对应的IP地址。例如,当输入`www.example.com`,经过DNS解析得到其对应的IP地址(如`192.0.2.1`)。 ### TCP连接 浏览器利用获取到的IP地址和默认的端口号(如HTTP的80端口,HTTPS的443端口),通过TCP协议与服务器建立连接。TCP连接使用三次握手来确保双方都有发送和接收数据的能力。具体过程如下: - 客户端向服务器发送一个SYN包,请求建立连接。 - 服务器收到SYN包后,向客户端发送SYN + ACK包,表示同意建立连接。 - 客户端收到SYN + ACK包后,向服务器发送ACK包,完成三次握手,连接建立。 ### HTTP请求 连接建立后,浏览器会根据URL和相关设置,构建一个HTTP请求消息。这个消息包含请求行(如`GET /index.html HTTP/1.1`)、请求头(包含用户代理、接受的内容类型等信息)和可选的请求体(如POST请求时会包含提交的数据)。然后将这个请求消息通过TCP连接发送给服务器。 ### 服务器处理请求 服务器接收到HTTP请求后,会根据请求的内容进行处理。服务器可能会解析请求的URL,查找对应的资源(如HTML文件、图片等),执行相关的脚本(如PHP、Python等),并根据处理结果生成HTTP响应消息。 ### HTTP响应 服务器处理完请求后,会向浏览器发送HTTP响应消息。响应消息包含状态行(如`HTTP/1.1 200 OK`)、响应头(包含内容类型、缓存控制等信息)和响应体(包含请求的资源内容,如HTML页面的代码)。 ### 浏览器解析渲染页面 - 浏览器首先解析HTML文件,构建DOM(文档对象模型)树。 - 同时,解析CSS文件,构建CSSOM(CSS对象模型)树。 - 将DOM树和CSSOM树合并成渲染树。 - 根据渲染树进行布局,计算每个元素的位置和大小。 - 最后进行绘制,将页面内容显示在浏览器窗口中。 ### TCP断开连接 当页面渲染完成或浏览器不再需要与服务器通信时,会通过TCP的四次挥手过程断开与服务器的连接。具体过程如下: - 客户端向服务器发送FIN包,表示请求关闭连接。 - 服务器收到FIN包后,向客户端发送ACK包,表示同意关闭连接。 - 服务器向客户端发送FIN包,表示请求关闭连接。 - 客户端收到FIN包后,向服务器发送ACK包,表示同意关闭连接,完成四次挥手,连接断开。 以下是一个简单的Python示例,模拟HTTP请求: ```python import requests # 发送HTTP GET请求 response = requests.get('https://www.example.com') # 打印响应状态码 print(response.status_code) # 打印响应内容 print(response.text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值