从开发角度来说,总分为以下几个过程
成都创新互联主要从事网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务饶阳,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:189820811081.URL主要由四个部分组成:协议、域名、端口、路径;
2.输入URL后浏览器会解析出协议、域名、端口、路径等信息,并构建一个HTTP请求
3.缓存
强缓存
强缓存不和服务器交互,请求时间为0ms
客户端设置请求头Cache-Control,只有为:’no-store’ | ‘no-cache’ |‘max-age=0’才会生效; no-cache意思是不走强缓存,走协商缓存;no-store意思是不使用缓存; ax-age=0 的意思是告知客户端响应从一开始就已经过时因此需要重新验证;
POST请求不能设置缓存,只有GET请求可以设置
协议缓存
总结:协议缓存第一次发送请求的时候 服务器会返回状态码200和资源数据以及标识; 当下次请求时会对比资源标识 如果一致返回304状态码不返回资源数据;如果不一致则返回状态码200以及新的资源数据和新的标识;
协议缓存第一次发送请求的时候 服务器返回的状态码为200 内容是请求的资源 同时有一个Last-Modified/ETag的属性标记此文件在服务期端最后被修改的时间
当客户端第二次请求此URL链接的时候 根据HTTP协议,浏览器会向服务器传送 If-Modified-Since 报头,询问改时间之后文件有没有被修改过;
如果服务器的资源没有变化 则时间一样,自动返回状态码304且不返回资源,这样就能减少传输的数据量
如果服务器资源发送了改变或者重新启动了服务器 时间不一致,返回200状态码返回资源,客户端接受到后,会丢弃旧文件把新文件缓存起来显示在浏览器中;
DNS 域名解析在浏览器输入URl后,首先要经过域名解析;因为浏览器并不能直接通过URL找到对应的服务器,而是要通过域名;所以浏览器会向DNS服务器发送域名,DNS服务器查询到与域名相对于的IP地址,然后返回给浏览器,浏览器在将IP地址打在协议上,同时请求参数也会在协议搭建,然后一并发送给对应的服务器。
DNS域名解析分为递归查询和迭代查询两种方式,现在一般为迭代方式
递归查询
浏览器、操作系统、路由器、都会缓存一些URL对应的IP地址,统称为DNS高速缓存。这是为了加快DNS的解析速度,使得不必每次都到根域名服务器中去查询
所谓递归查询:就是客户端主机查询的域名地址无法在本地域名服务器中找到,因此本地域名服务器就以DNS客户端的身份向其他根域名服务器发起请求,进行查询,而不是让客户端主机去一直查询;
递归过程:主机→本地DNS服务器→其他服务器 (如:我想要吃奶油蛋糕,找到了小红蛋糕店,问小红有没有奶油蛋糕,小红说没有但是可以帮你找小明蛋糕店它可能会有,问完后小明还真有,然后小明把蛋糕给了小红,小红在把蛋糕给我,这就是递归查询)
迭代查询
本地DNS服务器向其他服务器进行查询,如果没有查到就会给一个没有查到的信息,并将下一个阶段的其他服务器地址告知本地DNS服务器,本地域名服务器接收到后会继续进行请求查询,直到找到IP地址或者找不到IP返回报错信息,然后信息返回给客户端主机;迭代查询只会帮你找到相关的服务器,然后说我现在比较忙,你自己去找吧。
迭代过程:本地DNS服务器→根服务器,本地DNS服务器→顶级域名服务器,本地DNS服务器→权限域名服务器;(如:我想吃奶油蛋糕,找到了小红蛋糕店,小红说我没有你去找小明蛋糕店它可能有,我又去小明蛋糕店,小明说我也没有 你可以去小非蛋糕店,找到了小菲终于找到了奶油蛋糕,这就是迭代查询的过程)
DNS负载均衡
DNS负载均衡起到的作用是,现在很多网站有多个服务器,当一个网站的访问量过大时,如果请求都在一个服务器上就会崩溃,这时就可以用负载均衡的技术,在应答DNS查询的时候,会返回不同的解析结构,也就是返回不同IP地址,从而进行分流到不同服务器。
DNS预解析
在有多个不同服务器资源的情况下,都可采取DNS预解析,提前解析,减少页面卡顿。
在客户端发送数据之前会发起 TCP 三次握手用以同步客户端和服务端的序列号和确认号,并交换 TCP 窗口大小信息。
第一次握手:客户端A发送位码为SYN=1,随机产生一个值为seq=X(X的取值范围为=1234567)的数据包到服务器,服务端B由SYN=1知道,A要求建立联机;(第一次握手,由浏览器发起,告诉服务器我要发送请求了)
第二·次握手:服务端B收到请求后要确认联机信息,服务端B将标志位SYN和ACK都置为1,ack=X+1,随机产生一个值seq=Y,并将该数据包发送给客户端A以确认连接请求(第二次握手,由服务器发起,告诉浏览器我准备接受了,你赶紧发送吧)
第三次握手::客户端A收到确认后,检查ack是否为X+1,ACK是否为1,如果正确,客户端A会在发送ack =(Y+1 注:服务端B的seq +1),服务端B检查ack是否为Y+1,ACK是否为1,如果正确则连接建立成功;(第三次握手,由浏览器发送,告诉服务器,我马上就发了,准备接受吧)
为什么需要三次握手
1.其实这是由TCP的自身特点可靠传输决定的
客户端和服务端要进行可靠传输,那么就需要确认双方的接收和发送能力。
第一次握手可以确认客服端的发送能力
第二次握手,服务端确认了发送能力和接受能力
第三次握手才可以确认客户端的接收能力
三次握手的主要目的是:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
其次三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据。
TCP三次握手之后,开始发送HTTP请求报文至服务器
请求报文
HTTP请求报文由:请求行、请求头部、空行和请求数据四个部分组成。
响应报文
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP协议特点
各协议与HTTP协议关系
服务器收到请求后会发出应答,即响应数据。HTTP响应与HTTP请求相似, HTTP响应报文格式:状态行+响应头+空行+消息体,状态行包括HTTP版本号、状态码、状态说明。
五、浏览器解析渲染页面浏览器拿到响应文本后,解析HTML代码,请求js,css等资源,最后进行页面渲染,呈现给用户;
分为以下几个步骤:
回流和重绘
重绘
当页面中元素样式的改变并不影响它在文档流中的位置时(例如:color、background-color、visibility等),浏览器会将新样式赋予给元素并重新绘制它,这个过程称为重绘。
回流
当Render树中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。
引起回流例如:1.页面首次渲染,2.浏览器窗口大小发生改变,3.元素尺寸或位置发生改变,4.元素字体大小变化等;
减少回流例如:1.避免设置多层内联样式,2.避免使用CSS表达式等;
回流必将引起重绘,而重绘不一定会引起回流。
简单点说就是:
1、客户端→服务端:客户端告诉服务端:“我发完了”
2、服务端→客户端:服务端告诉客户端:“好的,我知道你发完了”
3、服务端→客户端:服务端告诉客户端:“我收完了”;
4、客户端→服务端:客户端告诉服务端:“好的,我知道你发完也收完了”
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款