一次完整的 http 请求过程是怎样的?

发布于 2019-10-09

一次完整的 http 请求过程是怎样的?

如果我们访问一个网站,只需要在浏览器中输入网站的域名,就可以请求到网站的服务器,得到我们想要的页面。这个过程很是短暂,但你知道他的过程是怎么的么?

今天就说一说一次完整的HTML请求的过程是怎么样的

解析URL

我向浏览器中输入网址后,浏览器会效验网址的合法性,如果网址不合法,会传给默认的搜索引擎。

如果网址合法并通过验证,浏览器会解析,得到协议(http或https),域名,资源页面(比如首面等)

DNS查询

浏览器会先检查域名信息是否在缓存中。

再检查域名是否在本地的Hosts文件中。

如果还不在,那么浏览器会向DNS服务器发送一个查询请求,获得目标服务器的IP地址。

TCP封包及传输

浏览器获得了目标服务器的IP(DNS返回)、端口(URL中包含,没有就使用默认),浏览器会调用库函数socket,生成一个TCP流套接字,也就是完成了TCP的封包。

得到服务器IP地址后,User-Agent(一般是指浏览器)会以一个随机端口(1024 < 端口 < 65535)向服务器的WEB程序的80端口发起TCP的连接请求。这个连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后还有可能要经过防火墙的过滤,最终到达WEB程序,最终建立了TCP/IP的连接。

TCP封包完成之后,就可以传输了,在完成“你瞅啥”,“瞅你咋地”,“来,过来唠唠”一系列操作之后,浏览器和服务器就完成了TCP的三次握手,建立了连接,后面就可以请求服务器资源了。

建立TCP连接后发起HTTP请求

TCP3次握手后,浏览器发起了http的请求

HTTP请求报文格式,报文由3部分组成(请求行+请求头+请求体)

1、请求行:

①请求方法,GET、POST最常见,还有DELETE、HEAD、OPTIONS、PUT、TRACE。

②URL地址,它和报文头的Host属性组成完整的请求URL。

③协议名称及版本号。

2、请求头:

HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。与缓存相关的规则信息,均包含在header中

3、请求体:

它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“tuotiao.com?param1=value1&param2=value2”的方式传递请求参数。

服务器接收请求并相应

服务器端WEB程序接收到http请求后,开始处理该请求,返回给浏览器html

一些常见状态码

200:成功

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

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

304:Not Modified 未修改,本地缓存的资源文件

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

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

502:Bad Gateway 连接不到服务器

504:Gateway Timeout 能连接服务器,但服务器未在规定时间内给响应

浏览器解析并渲染


浏览器从服务器拿到了想要访问的资源,大多数时候,这个资源就是HTML页面,当然也可能是一个其他类型的文件。

浏览器先对HTML文档进行解析,生成解析树(以DOM元素为节点的树)。

加载页面的外部资源,比如JS、CSS、图片。

遍历DOM树,并计算每个节点的样式,最终完成渲染,变成我们看到的页面。

喜欢 0
奋楫笃行,臻于至善!

相关文章

一直在说高并发,多少 QPS 才算高并发?

一直在说高并发,多少QPS才算高并发?业务系统服务,单机,集群分别是多少呢?先来科普一下QPS和TPS这两个概念。 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能...
阅读全文

TCP 协议与 UDP 协议的区别以及与 TCP/IP 协议的联系

互联网,实际上是一套理念和协议组成的体系架构。其中,协议是一套众所周知的规则和标准,如果各方都同意使用,那么它们之间的通信将变得毫无障碍。 1. 什么是TCP? TCP(Transmission Co...
阅读全文

IP 地址分类及 ABCDE 五类是如何划分的

我们先了解下什么是IP地址,英文全称为:Internet Protocol Address,缩写为:IP Adress,这是在网络上给主机统一编址的一种地址格式,也称为网络协议(IP协议)地址。它为互...
阅读全文

TCP 协议建立连接三次握手和断开连接四次挥手详解

TCP是一个面向连接的通信协议,把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3...
阅读全文

OSI 七层协议模型和 TCP/IP 四层模型

互联网的本质就是一系列的网络协议,这个协议就叫OSI协议,按照功能不同及分工不同,人为的将网络协议划分为七层。实际上这个七层是不存在的,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的...
阅读全文

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注