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

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


好了,今天就到这里了

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358

推荐阅读更多精彩内容