美文网首页python爬虫代码
浏览器和服务器是怎么勾搭上的

浏览器和服务器是怎么勾搭上的

作者: 逢笔生辉 | 来源:发表于2022-05-23 07:24 被阅读0次

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请求过程是怎么样的呢?【图文详解】

Youan

29 人赞同了该文章

前言

概述

过程详解

一、DNS解析

二、TCP三次握手

三、 发起HTTP请求

四、服务器响应HTTP请求

五、浏览器解析

六、浏览器进行页面渲染

七、服务器关闭TCP连接


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来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


好了,今天就到这里了

相关文章

  • 浏览器和服务器是怎么勾搭上的

    Web服务器收到请求的消息后,会对其中的内容进行解析,通过URI和方法判断“对什么”“进行什么样的操作”,然后将结...

  • 【day 2】强缓存和协商缓存

    缓存过程 浏览器与服务器通信的方式为应答模式,即是:浏览器发起HTTP请求 – 服务器响应该请求,那么浏览器怎么确...

  • charles之localhost、127.0.0.1抓不到包的

    本地服务器需要用localhost、127.0.0.1去访问,但是charles却抓不到包。1、在浏览器中勾选局域...

  • 前端性能优化原理及方法小记

    一、浏览器打开方式和过程 浏览器核心是 浏览器引擎 1. 连接到 URL 所在服务器 查询 DNS 服务器,获取 ...

  • jmeter录制浏览器web脚本

    一、浏览器设置代理 1.Internet属性-链接点击局域网 2.勾选使用代理服务器,点击高级添加要使用代理服务器...

  • HTTP的请求和响应

    服务器和浏览器的交互 浏览器负责发起请求 服务器在80端口接收请求 服务器负责返回内容(响应) 浏览器负责下载响应...

  • curl命令的使用与浏览器的交互

    服务器和浏览器的简单交互 浏览器负责发起请求 服务器在 80 端口接收请求 服务器负责返回内容(响应) 浏览器负责...

  • 代理服务器

    代理服务器是介于浏览器和[Web服务器]之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向...

  • Tomcat总体架构与核心配置详解

    1.浏览器访问服务器的流程 b/s(浏览器/服务器模式) 浏览器是客户端(发送http请求) ———> 服务器端 ...

  • apache,http,tomcat

    知乎:tomcat是什么 浏览器访问服务器,那么服务器需要来答复,怎么答复呢。

网友评论

    本文标题:浏览器和服务器是怎么勾搭上的

    本文链接:https://www.haomeiwen.com/subject/uhydprtx.html