Web服务器收到请求的消息后,会对其中的内容进行解析,通过URI和方法判断“对什么”“进行什么样的操作”,然后将结果存放在响应消息中,在响应消息的开头有一个状态码,用来表示操作的执行结果成功还是出现了错误,状态码后面是头字段和网页数据。响应消息发送给客户端,客户端收到后从响应消息中读取数据并显示。HTTP的整个工作完成。
在HTTP方法中,最常用的一个方法是 GET 方法。一般访问Web服务器获取网页数据时,使用的就是GET方法。
在请求消息中写上GET方法,然后在URI中写上存放网页数据的文件名“/dir/file.html”,表示我们需要获取“/dir/file.html”文件中的数据,当Web服务器拿到请求消息后,会打开“/dir/file.html”文件并读取里面的数据,然后将读取到数据存入响应消息中,返回给客户端。
在上面的表格中还有一个常用的方法:POST,在表单中填写数据时将其发送给Web服务器时会使用这个方法。使用POST方法时,URI会指定Web服务器中的一个运行程序的文件名,然后在请求消息中除了方法和URI外,再加上传递给应用程序和脚本的数据当服务器收到消息后,Web服务器会将请求消息中的数据发送给URI指定的应用程序,Web服务器从应用程序接收输出结果,会将结果存入响应消息中并返回给客户端
————————————————
版权声明:本文为CSDN博主「白日梦小说家」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41343202/article/details/107126390
生成HTTP请求消息在对URL进行解析后,浏览器确定了Web服务器和文件名,
接下来就是根据这些信息生成HTTP请求消息。 下面说一说HTTP请求消息的格式。
浏览器和服务器建立一次链接流程
良言SE
于 2020-04-29 07:40:36 发布
260
收藏
版权
http 协议
协议头 域名 --->ip
ip:网络电脑的id
dns服务器: 一台远程电脑,用于保存域名和ip的map
dns的ip
hosts 文件保存路径: 本地dns,优先查找本地hosts文件
localhost
127.0.0.1
管理员权限(防止钓鱼网站)
ping ip
端口号: 默认隐藏,指定软件
http 80
https 443
浏览器访问服务器
http url
域名---dns--ip:port
静态文件
动态文件-->编译解析-->静态文件
http请求报文
长连接
3次握手4次挥手(无状态连接状态)
tcp/ip 链接
发送http请求
服务器响应
浏览器响应
断开连接
客户端渲染解析
观察http请求工具
http 请求报文
请求行 请求头 空行表示请求头协议结束 请求正文
{
user-agent:'',// 客户端信息, 做浏览器兼容
accept:'',// 告知客户端可解析信息
accept-language:'',// 告知服务器/ 中文/繁体中文/英文
referer:'',// 表示来自哪个连接点击进来,用于返回,重定向,竞价排名
method:'',//get/post
path:url,
type:'application/json',
data:data,// 请求参数
}
http 响应报文
{
status:'200',// 200 ok 3xx 重定向 4xx 客户端错误 5xx 服务端错误
content-length:'',// 描述下载进度
content-type:'',//告知客户端解析格式
}
————————————————
版权声明:本文为CSDN博主「良言SE」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32265719/article/details/105830917
一次完整的HTTP请求过程是怎么样的呢?【图文详解】
29 人赞同了该文章
1浏览器进行DNS域名解析,得到对应的IP地址
2根据这个IP,找到对应的服务器建立连接(三次握手)
3建立TCP连接后发起HTTP请求(一个完整的http请求报文)
4服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)
5浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
6浏览器对页面进行渲染呈现给用户
7服务器关闭TCP连接(四次挥手)
1 当用户在浏览器中输入域名后,浏览器会向 DNS 服务器发送 DNS 请求,获取指定域名的 IP 地址。DNS 服务器收到请求包后,会发送响应包,返回对应的 IP 地址。浏览器根据响应包中的 IP 地址,访问对应的网站域名解析就是将域名转化为对应的 IP 地址,该工作由 DNS 服务器完成。本节将讲解域名解析的整个。
1) 客户端通过浏览器访问域名为 www.baidu.com (http://www.baidu.com) 的网站,发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地 DNS 服务器还要向 DNS 根服务器进行查询。2) 本地 DNS 服务器向根服务器发送 DNS 请求,请求域名为 www.baidu.com (http://www.baidu.com) 的 IP 地址。3) 根服务器经过查询,没有记录该域名及 IP 地址的对应关系。但是会告诉本地 DNS 服务器,可以到域名服务器上继续查询,并给出域名服务器的地址(.com 服务器)。4) 本地 DNS 服务器向 .com 服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。5) .com 服务器收到请求后,不会直接返回域名和 IP 地址的对应关系,而是告诉本地 DNS 服务器,该域名可以在 baidu.com 域名服务器上进行解析获取 IP 地址,并告诉 baidu.com 域名服务器的地址。6) 本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求,请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。7) baidu.com 服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应关系,并将IP地址返回给本地 DNS 服务器。8) 本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。
2【TCP/IP】三次握手过程及原因
三次握手 建立起 TCP连接 的 reliable,分配初始序列号和资源,在相互确认之后开始数据的传输。有 主动打开(一般是client) 和 被动打开(一般是server)。TCP使用3次握手建立一条连接,该握手初始化了传输可靠性以及数据顺序性必要的信息,这些信息包括两个方向的初始序列号,确认号由初始序列号生成,使用3次握手是因为3次握手已经准备好了传输可靠性以及数据顺序性所必要的信息,该握手的第3次实际上并不是需要单独传输的,完全可以和数据一起传输。详细过程如下所示:第一步,Client会进入SYN_SENT状态,并发送Syn 消息给Server端,SYN标志位在此场景下被设置为1,同时会带上Client这端分配好的Seq号,这个序列号是一个U32的整型数,该数值的分配是根据时间产生的一个随机值,通常情况下每间隔4ms会加1。除此之外还会带一个MSS,也就是最大报文段长度,表示Tcp传往另一端的最大数据块的长度。第二步,Server端在收到,Syn消息之后,会进入SYN_RCVD状态,同时返回Ack消息给Client,用来通知Client,Server端已经收到SYN消息并通过了确认。这一步Server端包含两部分内容,一部分是回复Client的Syn消息,其中ACK=1,Seq号设置为Client的Syn消息的Seq数值+1;另一部分是主动发送Sever端的Syn消息给Client,Seq号码是Server端上面对应的序列号,当然Syn标志位也会设置成1,MSS表示的是Server这一端的最大数据块长度。第三步,Client在收到第二步消息之后,首先会将Client端的状态从SYN_SENT变换成ESTABLISHED,此时Client发消息给Server端,这个方向的通道已经建立成功,Client可以发送消息给Server端了,Server端也可以成功收到这些消息。其次,Client端需要回复ACK消息给Server端,消息包含ACK状态被设置为1,Seq号码被设置成Server端的序列号+1。(备注:这一步往往会与Client主动发起的数据消息,合并到一起发送给Server端。)第四步,Server端在收到这个Ack消息之后,会进入ESTABLISHED状态,到此时刻Server发向Client的通道连接建立成功,Server可以发送数据给Client,TCP的全双工连接建立完成。作者:灰常出色链接:https://www.jianshu.com/p/cd379b79b9be来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
三次握手的状态转换?TCP的状态变化图如下所示,Client和Server的初始状态都是CLOSED状态,其
Client:CLOSED-----发送Syn 消息--->SYN_SENT-----收到Server端发回的SYN+ACK--->ESTABLISHED---发送和接收数据-->......Server:CLOSED----收到Client端发送过来的SYN消息-->SYN_RCVD-----发送SYN+ACK消息--->SYN_RCVD----收到Client发回来的ACK消息--->ESTABLISHED-----发送和接收数据-->......作者:灰常出色链接:https://www.jianshu.com/p/cd379b79b9be来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
:connect时,触发了连接请求,向服务器发送了SYN J包,这时connect进入阻塞状态;服务器监听到连接请求,即收到SYN J包,调用accept函数接收请求向客户端发送SYN K ,ACK J+1,这时accept进入阻塞状态;客户端收到服务器的SYN K ,ACK J+1之后,这时connect返回,并对SYN K进行确认;服务器收到ACK K+1时,accept返回,至此三次握手完毕,连接建立作者:灰常出色链接:https://www.jianshu.com/p/cd379b79b9be来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
爬虫基础—HTTP基本原理_W_chuanqi的博客-CSDN博客这个
5 html页面主要由dom、css、javascript等部分构成,其中css和javascript既能内联也能以脚本的形式引入,当然html中还可能引入img、iframe等其他资源。其实所有的这些资源也是以dom标签的形式嵌入在html页面中的,因此本篇总结说的html解析过程就是dom的解析过程。 1 dom解析过程 整个dom的解析过程是顺序,并且渐进式的。 顺序指的是从第一行开始,一行一行依次解析;渐进式则指得是浏览器会迫不及待的将解析完成的部分显示出来,如果我们做下面这个实验会发现,在断点处第一个div已经在浏览器渲染出来了:作者:iamswf链接:https://juejin.cn/post/6844903745730396174来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
既然dom是从第一行按顺序解析,那么我们怎么判断dom何时解析完成呢?这个问题应该经常会在面试中问到,比如一般会问:window.onload和DOMContentLoaded有什么区别?
其实就是想看看是不是明白dom树何时构建完成,这个问题确实很重要,尤其是对于几年前的jquery技术栈来说,因为我们使用javascript操作dom或者给dom绑定事件有个前提条件就是需要dom树已经创建完成。整个html页面的dom解析完成时,dom树也就构建完成了。dom树构建完成后document对象会派发事件DOMContentLoaded来通知dom树已构建完成。作者:iamswf链接:https://juejin.cn/post/6844903745730396174来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
六 浏览器如何渲染网页 要了解浏览器渲染页面的过程,首先得知道一个名词——关键渲染路径。关键渲染路径是指浏览器从最初接收请求来的HTML、CSS、javascript等资源,然后解析、构建树、渲染布局、绘制,最后呈现给用户能看到的界面这整个过程。 用户看到页面实际上可以分为两个阶段:页面内容加载完成和页面资源加载完成,分别对应于DOMContentLoaded和Load。 DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片等 load事件触发时,页面上所有的DOM,样式表,脚本,图片都已加载完成 浏览器渲染的过程主要包括以下五步:作者:oWSQo链接:https://www.jianshu.com/p/e6252dc9be32来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
浏览器将获取的HTML文档解析成DOM树。 处理CSS标记,构成层叠样式表模型CSSOM(CSS Object Model)。 将DOM和CSSOM合并为渲染树(rendering tree),代表一系列将被渲染的对象。 渲染树的每个元素包含的内容都是计算过的,它被称之为布局layout。浏览器使用一种流式处理的方法,只需要一次绘制操作就可以布局所有的元素。 将渲染树的各个节点绘制到屏幕上,这一步被称为绘制painting。 需要注意的是,以上五个步骤并不一定一次性顺序完成,比如DOM或CSSOM被修改时,亦或是哪个过程会重复执行,这样才能计算出哪些像素需要在屏幕上进行重新渲染。而在实际情况中,JavaScript和CSS的某些操作往往会多次修改DOM或者CSSOM。作者:oWSQo链接:https://www.jianshu.com/p/e6252dc9be32来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
好了,今天就到这里了
网友评论