最后更新:2022-06-17 10:32:09 手机定位技术交流文章
HTTP协议通常被称为HTTP(超文本传输协议)。它是用于分布式、协作和超级媒体信息系统的一种应用层协议。它是最广泛的互联网应用网络传输协议,所有 WW 文件必须符合这个标准。HTTP被设计为网络浏览器和网络服务器之间的通信,它也可以用于其他用途。HTTP是一个传输数据(HTML文件、图像文件、查询结果等)的TCP/IP通信协议。
DNS分析域名进入IP
1.首先检查本地主机文件,如果采用相应的规则;
否则,向本地DNS服务器发送DNS请求;
3. 本地 DNS 服务器 将 检查 缓存 中 是否 有 任何 记录, 如果 有, 返回 ;
本地DNS服务器查询DNS根服务器,没有DNS根服务器查询调用本地DNS服务器到域名服务器;
5.本地DNS服务器域服务器发送请求,域服务器将告诉本地DNS服务分析器的地址;
本地DNS服务向域分析服务器发送请求,以接收相应的域名和IP地址。本地DNS服务器不仅将IP地址返回到用户计算机上,而且还将相应的地址存储在缓存中
客户和服务端以三手建立TCP连接,然后发送请求
服务部门处理请求和答复
客户端接收结果并开始分析
1、创建dom树;
2,分析CSS并生成CSS规则树;
渲染树根据域树和CSS风格表生成;
4.浏览器根据域名树布局在特定位置确定每个树节点;
5.调用域名节点的绘制方法绘制页面元素;
6.浏览器将每个层的信息发送到GPU,GPU将每个层合成
HTTP/1.最大的变化是引入持久连接。在HTTP/1.Connection中:保持活泼,也就是说,默认的TCP连接没有关闭,可以重复多个请求。
然后,管道机制允许在同一TCP连接中同时发送多个HTTP请求,而不等待第一个请求返回数据,然后发送下一个请求。
HTTP2.0的多路径复制是一个可以发送多个HTTP请求的TCP连接,请求的响应不取决于以前的请求。 每个请求被单独处理,HTTP1不会出现。
例如,在TCP连接中,服务器同时接收A和B请求,然后首先响应A请求。结果是该过程非常耗时,因此它发送已经处理的A请求的部分,然后响应B请求,然后发送A请求的剩余部分。
它们基本上是TCP链接,并且是不可区分的。 然而,由于HTTP条款和浏览器/服务器限制,它们在应用程序进程中可能有所不同。

常见缓存响应指令:
接受:通知服务器用户代理可以处理媒体类型和媒体类型的相对优先次序。 文本、图像、视频、二进制等类型,如 application/json、text/plain、*/*
内容类型:显示媒体类型信息,用于告诉服务器如何处理请求的数据,以及告诉客户端如何分析响应数据,例如HTML、图像和文本
应用程序/json;参数将直接放在请求实体中,无需进行任何处理。 服务端/客户端将以json格式分析数据
multipart/form-data;大多数用于文件上传,表格数据存储在http的原始部分
application/x-ww-form-urlencoded;文件不支持,通常用于提交表格
范围:实体主体的定位范围,通常用于发布部分请求;例如字节:5001-100;响应第一个字段是内容范围:字节5001-100/100
主机:服务器的域名/IP地址和端口号(optional);它通知服务器请求的互联网资源的主机名称和端口号。他的HTTP/1.1是唯一必须包含在请求的第一个字段。它与一个单一服务器在虚拟主机上分发多个域名的工作机制密切相关,这是第一个句子的含义:主机必须存在。
引用符:当前请求页面的源页地址;包括协议、域名和端口,包括路径、参数,不包括 Hash值。防盗链注:参考词实际上是“参考词”的拼写错误。
协议+域+端口号码(optional),其中第一个用于CORS请求或 POST请求
不同的是:主机是请求服务器的域名/ip和其他信息,引信器指示请求来自哪个地址。 引信器和源代码的功能相似,源代码没有路径信息,只有跨域请求,或仅发送邮件请求到同一域
期满:响应头,代表资源的延迟时间
缓存控制:请求/答复头,缓存控制场,准确的缓存控制策略
If-Modified-Since:请求标题,资源的最新修改时间,浏览器告诉服务器
最后修改:响应头条,最后一次资源被修改,服务器告诉浏览器
Etag:响应头,资源标识符,由服务器告诉浏览器
If-None-Match:请求标题,缓存资源标识符,由浏览器告诉服务器
ETag有弱点
强的ETag需要资源以完全兼容字符级别
弱的ETag 值前有一个“W/”标记,仅要求资源在语义上没有改变,但内部的更改可能部分发生(例如HTML中的标签序列被调整,或多余空间)
缓存首部字段详情
概览(四层及七层网络模型)
为了准确和正确地向目标发送数据,TCP协议采用“三手”策略。 当使用TCP协议发送数据时,TCP不会忽略传输后的情况,并会向另一方确认是否成功交付。
手握过程使用TCP标识符SYN(同步-同步请求)和ACK(确认-确认同步)
1)发送者首先将带有SYN符号的数据包发送给另一方。
2)接收器收到数据后,返回一个数据包,以SYN/ACK符号表示确认消息已经发送。
3)最后,发送器返回一个数据包,带有ACK符号,以"握手"结束。
如果一个匿名阶段在震动中被中断,TCP协议将再次以相同的顺序发送同样的包。
详情:
(1)首先,客户端向服务器发送一个TCP消息,包括:
标记为SYN,意思是“请求创建新的连接”;
序列是Seq=X(X通常是1);
然后客户端进入SYN-SENT阶段。
(二)从客户端收到TCP消息后,服务器结束 LISTEN阶段,返回如下的TCP消息:
标记是SYN和ACK,表示“确认客户端的Seq序列消息有效,服务器可以接收客户端发送的数据并同意创建一个新的连接”(即告诉客户端服务器已收到您的数据);
序号为Seq=y;
确认数为Ack=x+1,它代表客户端接收的序列数Seq,并添加1作为自己的确认数Ack的值;然后服务器进入SYN-RCVD阶段。
(三)客户收到确认从服务器接收数据的TCP消息后,可以确定从客户到服务器的数据传输正常,并完成SYN-SENT阶段,并返回最后的TCP消息。
标记为ACK,意思是“确认您已经收到服务器同意连接的信号”(即告诉服务器我知道您已经收到我的数据);
序列是Seq=x+1,它代表从服务器端接收的确认数Ack,并将其值作为自己的序列值;
确认编号是Ack=y+1,它代表接收服务器的序列编号Seq,并添加1作为自己的确认编号Ack的值;
然后,客户端进入STABLISHED阶段。
一旦服务器收到客户端的TCP消息“确认接收服务器数据”,就可以确定从服务器到客户端的数据传输正常。
在客户端和服务器之间传输的TCP消息中,双方的确认号Ack和序列号Seq的值,这些都是根据对方的Ack和Seq值计算的,这确保了TCP消息传输的一致性。一旦一个由一方发送的TCP消息丢失,你不能继续握手。这确保了“三个握手”的成功完成。
为什么必须握手三次,而不是两次?
为了防止在服务器端打开不必要的连接,额外的服务器费用会增加,一个无效的连接请求消息会突然发送到服务端,导致一个错误。
由于网络传输延迟(要通过网络纤维和各种中间代理服务器传输),例如,在传输过程中,客户端开始请求SYN=1创建连接(第一次握手)。
如果服务器直接创建此连接并向客户端返回包含SYN、ACK和Seq的包,则由于网络传输而丢失包,而客户端不会收到服务器返回的包。
客户端可以设置过时时间,当关闭为连接创建的请求时。 重新建立创建连接的请求,但服务器不知道,除非第三个握手告诉服务器端客户端将接收的数据发送到服务器端,
服务器不知道客户端是否收到返回服务器的信息。
这不会给服务器创建或关闭连接端口的请求,服务器端的终端总是打开的,等待客户因加班而重新发出请求,服务器将重新打开端口连接.所以服务器上没有接收请求的数据的顶端端口总是打开的,长此以往,这样的端口多了,这将导致严重浪费服务器端费用。
也存在一个情况,即由一个已经无效的客户端发送的请求信息被发送到服务器上,因为某种原因,服务器认为这是由客户端发送的有效请求,在收到后会发生错误。
因此,我们需要一个“第三手握”来确认这一过程,允许客户端和服务器及时检测因网络问题而导致的连接失败,以便服务器的端口可以不等待地关闭。
第三个握手也可以理解为向服务器发送数据的客户端。这些数据是告诉服务器,客户端通过服务器第二次握手接收过去的数据 吗?如果发送的数据是“收到”,接收后,服务器通常会建立TCP连接,否则无法创建TCP连接,服务器关闭连接端口。这减少了接收无效请求的服务器成本和错误。
(1)客户端首先想释放连接并向服务器发送一个TCP消息,包括:
标记为 FIN,意思是“要求释放连接”;
序号为Seq=U;
然后客户端进入Fin-WAIT-1阶段,即半封闭阶段,它停止从客户端向服务器端发送数据,但客户端仍然可以从服务器端接收数据。
注:此方法不会发送在正常连接中传输的数据(未确认消息),而是所有数据,因此客户端仍然可以发送ACK确认消息。
(2)收到客户端的TCP消息后,服务器确认客户端希望释放连接,然后服务器终止STABLISHED阶段,进入CLOSE-WAIT阶段(半封闭状态)并返回一个TCP消息,包括:
标记为ACK,意思是“请求接收向客户端发送的释放连接”;
序号为Seq=V;
确认号是Ack=U+1,这意味着在接收客户端消息的基础上,它将序列Seq值加上1作为确认号Ack这个段中的消息的值;
然后服务器开始准备释放从服务器到客户端的连接。
在接收服务器的TCP消息后,客户端确认服务器已经收到客户端的释放连接请求,然后客户端完成Fin-WAIT-1阶段并进入Fin-WAIT-2阶段
前面的两波都让服务器知道客户端想要释放连接,让客户端知道服务器知道它自己想要释放请求。 因此,您可以确认关闭的客户端是连接到服务器端的
(3)ACK确认消息发送到服务器后,在CLOSED-WAIT阶段之后,释放服务器已准备好连接到客户端,并再次发送TCP消息,包括:
标记为 FIN, ACK,意思是“准备好释放连接”。
序号为Seq=W;
确认号是Ack=U+1;这意味着,基于接收客户端消息,它将序列Seq值添加到1,作为该段报告确认号Ack的值。
然后服务器结束CLOSE-WAIT阶段,进入LAST-ACK阶段,停止向客户端发送数据,但服务器仍然能够接收从客户端发送的数据。
(4)客户端收到服务器的TCP消息,确认服务器准备释放连接,完成FIN-WAIT-2阶段,进入 TIME-WAIT阶段,并向服务器发送消息,包括:
标记为ACK,意思是“向服务器接收信号,准备释放连接”。
序列是Seq=U+1;这意味着基于接收服务器端消息,认证号Ack的值是该段中消息序列的值。
确认数为Ack=W+1;这意味着,基于接收服务器端消息,序列Seq值是该段中的消息确认数值。
然后,客户端在“时间等待”阶段开始等待2MSL
为什么客户应该等待2MSL?请参见以下。
在接收客户端的TCP消息后,服务器结束LAST-ACK阶段并进入CLOSED阶段,正式确认从服务器到客户端的连接关闭。
在等待2MSL后,客户端完成IME-WAIT阶段并进入CLOSED阶段,完成“四手握手”。
然后,两个“双波” let the client know that the server is ready to release the connection, and let the server know that the client knows that he is ready to release the connection。 确认与客户端的连接是向关闭服务器的方向,从而完成“四手波”。
像"三拍"一样,在客户端和服务器之间传输的TCP消息中,双方的确认号Ack和序列号Seq的值,这些都是根据对方的Ack和Seq值计算的,这确保了TCP消息传输的一致性,一旦一个由一方发送的TCP消息丢失,你不能继续挥手。这确保了四个波的成功完成。
为什么三次握手,四次挥手?
当TCP建立连接时,只需要“三个手”,因为在第二次握手过程中,服务器发送给客户端的TCP消息被SYN和ACK标记。SYN是一个请求连接符号,表示服务器端同意建立连接;ACK是一个确认消息,表示告诉客户端,服务器收到了它的请求消息。
这意味着SYN建立消息与ACK之间的联系,以确认接收消息是在同一“握手”中传输的,这样“三握手”不会太多,只是让双方清楚地互相交流信息。
TCP释放一个连接需要“四个握手”的原因是Fin释放了连接消息,ACK确认接收消息是由第二和第三个握手传递的。
当连接建立时,被动服务器终止了CLOSED阶段并无准备进入"Handshake"阶段。它可以直接返回SYN和ACK声明并启动连接。
释放连接时,被动方服务器,突然收到启动客户端的请求释放连接并不能立即释放连接,由于仍需处理的数据,因此服务器返回ACK以确认收到消息,在CLOSE-WAIT阶段准备好释放连接后,您可以返回 FIN释放连接消息。
是“三手”,是“四手”。
详情文章
发送窗口是一个循环缓冲区,应用程序层发送数据,将数据写入缓冲区。
应用程序层将数据写入缓冲区,当它超过缓冲区的最大地址时,它循环使用头部,覆盖头部数据。
发送缓冲区分为四个部分:
已收到数据包
接收的包数据代表接收窗口收到了相应的数据,这些数据可以被新的数据覆盖。
数据已发送,但未收到到数据包
已发送,但未收到收件人的相应的包
允许数据发送,但尚未发送
允许您发送尚未发送的数据。
不允许发送任何数据。
将数据发送到窗口外,并排队进行后续发送。
接收窗口:
接收窗口也是一种在操作系统中存在的缓冲空间来接收数据。 缓冲区基本上是一个循环的实现。
接收窗口存在于循环中使用的缓冲器中,接收数据被写入缓冲器中。 在应用程序层读取数据后,它相当于从缓冲区删除数据,但它并不真正删除数据,而是后面的相应的指针。
当数据在缓冲区的最大地址上写入时,头条被用来覆盖头条。
缓冲区分为三部分:
1,应用程序层已读取数据
数据已经收到, 包已经发送, 并被应用程序层读取.
2.在窗口中接收数据
接收窗口存储当前允许接收的数据。
接收窗口允许无序数据包被接收,因此接收窗口中的一些数据被接收和一些数据不被接收,无序数据包直接存储在接收窗口中。
由于接收包的序列,接收窗口有一个空隙,因为首先发送的包很可能因网络原因被发送回接收机。
当数据包被埋葬在接收窗口时,它返回带有SACK信息的Ack包,即选择要重新选择的信息。
3、还未收到的数据
不能接收数据的区域,即窗外的数据。
TCP滑动窗口详解
https详解
1)客户端启动HTTPS请求
这并不意味着什么,但用户在浏览器中输入一个 https URL,然后连接到服务器的443端口。
2)、服务端的配置
使用HTTPS协议的服务器必须有一套数字证书,可以自己制作,也可以向组织申请,不同的是,您自己签发的证书需要由客户核证,才可以继续访问,而且来自可靠的公司证书不会出现(startssl是一个很好的选择,一年免费。
这个证书实际上是两个公共和私人密钥,如果公共和私人密钥不被理解,想象一个钥匙和锁,只是你是世界上唯一拥有这个钥匙的人,你可以把锁交给别人,其他人可以用这个锁锁住重要的东西.然后发给你,因为只有你才有钥匙,所以只有你才能看到锁上的东西。
3)、传送证书
该证书实际上是公开的钥匙,但它包含很多信息,如证书的发行机构、有效期等。
4)客户分析证书
该任务的这一部分由客户端TLS完成,它首先验证公共密钥是否有效,例如发行机构、有效期等,如果发现异常,一个警告框显示证书有问题。
如果 certificate 没有问题, 生成一个随机值,然后用 certificate 加密随机值, 如上所述, 锁定随机值以锁定, 这样除非有一个钥匙, 锁定的内容就不会可见.
5)、传送加密信息
传输的这个部分是一个随机值加密的证书,其目的是将服务器送到这个随机值,然后通过这个随机值加密和解密客户端和服务器之间的通信。
(六)服务端信息的解密
服务结束后,用私人密钥解密,收到向客户传递的随机值(私钥),然后内容通过这个值进行对称加密,所谓对称加密就是,通过某种算法将信息和私钥混合起来,这样除非知道私钥,不然无法获取内容,正如客户和服务部门知道这个私人钥匙一样,所以只要加密算法足够坚固,私钥够复杂,数据就够安全。
7)传输加密信息
该信息的这一部分由服务部分的私钥加密,可以恢复到客户端。
8)客户端解密信息
客户端通过先前生成的私钥解密服务部分发送信息,从而获得解密内容的理解,整个过程即使第三方监控数据,也不有效。
cookie和សម័យ是用于跟踪浏览器的用户身份的对话方法。
数据存储位置不同:Cookie数据存储在客户端的浏览器上,而សម័យ数据存储在服务器上。
安全性水平不同:Cookie是不安全的,其他人可以分析和欺骗本地存储的Cookie,考虑到需要使用安全 Session。
性能不同:会话存储在服务器上一段时间。 当访问增加时,它更有可能占用您的服务器的性能,所以应该使用Cookie来最小化服务器性能。
数据存储大小不同:单个cookie不能存储超过4K的数据,许多浏览器限制每个网站存储最大20个cookie,而 Session 被存储在服务器上,而浏览器不限制它。
HTTP是一个无状态的协议,它不管理以前的请求和响应的状态,换句话说,这个请求不能按照以前的状态进行处理。
例如,在登录之后的页面跳跃可以以两种方式记录,以维持登录状态: 1 每次跳跃时再登录(不可接受)2 添加参数来管理请求消息中的登录状态。
一个Cookie由服务器端发送的响应消息之一设置,称为“设置Cookie”。
的首部字段信息,通知客户储存Cookie。当下一个客户端再次向服务器发送请求时,客户端在给请求消息添加一个cookie值后自动发送。当服务器发现客户端已经发送了Cookie后,检查从哪个客户端发送哪些连接请求,然后比较服务器上的记录,最后先获取状态信息。
set-cookie字段属性:
浏览器缓存通过HTTP/HTTPS实现,并有四个存储位置:
本文由 在线网速测试 整理编辑,转载请注明出处。