HTTP 一次完整的HTTP请求过程-六个过程

  1. 域名解析:首先浏览器会解析域名对应的IP地址。
  2. 发起TCP的3次握手
    (1)拿到域名对应的IP地址后,User-agent 会以一个随机端口(1024<端口<65535)向服务器的WEB程序发起TCP的连接请求。这个连接请求到达服务器端后,进入到网卡,然后进入到内核的TCP/IP协议栈。
    (2)客户端先发送连接试探,ACK=0表示确认号无效,SYN=1表示这是连接请求或连接接受报文。同时表示数据报不能接受数据,seq=x表示client 自己的初始序号, 之后client进入到syn_sent状态,等待服务器的回复。
    (3)服务端接收到请求后,如同意建立连接则向客户端发送确认消息,SYN和ACK都置为1,ack = x+1表示期望收到对方下一个报文段的第一个数据字节序号是x+1,seq=y 表示server自己的初始序号,之后服务器进入syn_rcvd,表示服务器已经收到Client的连接请求,等待client的确认。
    (4) 客户端收到确认后还需再次发送确认,同时携带要发送给Server的数据,ACK 置1 表示确认号ack= y + 1 有效(代表期望收到服务器的第1个包),Client自己的序号seq= x + 1(表示这就是我的第1个包,相对于第0个包来说的),一旦收到Client的确认之后,这个TCP连接就进入Established状态,就可以发起http请求了。
1665394038894.png
  1. 建立TCP连接后发起http请求

4.服务器端响应http请求,浏览器得到html代码
服务器端WEB程序接收到http请求以后,就开始处理该请求,处理之后就返回给浏览器html文件。
1xx: 信息性状态码

100, 101

2xx: 成功状态码

200:OK

3xx: 重定向状态码

301: 永久重定向, Location响应首部的值仍为当前URL,因此为隐藏重定向;

302: 临时重定向,显式重定向, Location响应首部的值为新的URL

304:Not Modified  未修改,比如本地缓存的资源文件和服务器上比较时,发现并没有修改,服务器返回一个304状态码,告诉浏览器,你不用请求该资源,直接使用本地的资源即可。

4xx: 客户端错误状态码

404: Not Found  请求的URL资源并不存在

5xx: 服务器端错误状态码

500: Internal Server Error  服务器内部错误

502: Bad Gateway  前面代理服务器联系不到后端的服务器时出现

504:Gateway Timeout  这个是代理能联系到后端的服务器,但是后端的服务器在规定的时间内没有给代理服务器响应
  1. 浏览器解析html代码,并请求html代码中的资源

6.浏览器对页面进行渲染呈现给用户

参考博客 https://blog.csdn.net/jieweiwujie/article/details/120110734

1665394827217.png

你可能感兴趣的:(HTTP 一次完整的HTTP请求过程-六个过程)