知识整合:Web页面请求的历程
发布人:shili8
发布时间:2024-12-25 20:36
阅读次数:0
**知识整合:Web 页面请求的过程**
在互联网世界中,浏览器与服务器之间的通信是基于 HTTP 协议进行的。下面我们将详细介绍 Web 页面请求的整个过程。
###1. 浏览器发送请求当用户在浏览器中输入 URL 或点击链接时,浏览器会生成一个 HTTP 请求包,并将其发送到服务器上。
/index.html HTTP/1.1Host: example.comConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests:1User-Agent: Mozilla/5.0 (Windows NT10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.3Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: />Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
###2. DNS 解析浏览器会将域名解析为 IP 地址,这样才能找到服务器的位置。
bash$ host example.comexample.com has address93.184.216.34
###3. TCP 三次握手当浏览器和服务器建立连接时,需要进行三次握手:
- 第一次握手:客户端发送 SYN 包到服务端。
- 第二次握手:服务端收到 SYN 包后,回复一个 SYN+ACK 包给客户端。
- 第三次握手:客户端收到 SYN+ACK 包后,回复一个 ACK 包给服务端。
bash# 第一次握手$ netstat -an | grep80# 第二次握手$ netstat -an | grep80# 第三次握手$ netstat -an | grep80
###4. HTTP 请求浏览器发送 HTTP 请求包到服务器。
/index.html HTTP/1.1Host: example.comConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests:1User-Agent: Mozilla/5.0 (Windows NT10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.3Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: />Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
###5.服务器处理请求服务器接收到 HTTP 请求包后,会解析请求头和请求体,然后根据请求的类型(GET、POST、PUT、DELETE 等)进行相应的操作。
from flask import Flask, requestapp = Flask(__name__) @app.route('/index.html', methods=['GET']) def index(): return 'Hello World!' if __name__ == '__main__': app.run(debug=True)
###6. HTTP 响应服务器处理完请求后,会生成一个 HTTP 响应包,并将其发送回浏览器。
OKContent-Type: text/html; charset=UTF-8Content-Length:12Connection: keep-aliveCache-Control: max-age=0Hello World!
###7. TCP 四次挥手当浏览器和服务器断开连接时,需要进行四次挥手:
- 第一次挥手:客户端发送 FIN 包到服务端。
- 第二次挥手:服务端收到 FIN 包后,回复一个 ACK 包给客户端。
- 第三次挥手:服务端发送 FIN 包到客户端。
- 第四次挥手:客户端收到 FIN 包后,回复一个 ACK 包给服务端。
bash# 第一次挥手$ netstat -an | grep80# 第二次挥手$ netstat -an | grep80# 第三次挥手$ netstat -an | grep80# 第四次挥手$ netstat -an | grep80
以上就是 Web 页面请求的整个过程。