白屏渲染时间,三次握手,四次挥手

308 阅读5分钟

概念

白屏时间:即用户点击一个链接或打开浏览器输入URL地址后,从屏幕空白到显示第一个画面的时间。

白屏的过程

通过DNS系统,找到对应的ip,然后浏览器发起请求,通过3次握手,建立TCP链接,接收到服务器端返回的数据,将对应文件渲染页面,到用户可以看到,这样一个时间,为白屏时间

TCP3次握手

  1. 过程 首先客户端携带SYN=1,随机值seq=j传给服务器端,然后客户端进入SYN_SEND状态

服务器端会确认接收到SYN=1的标志位后,便知道这是客户端要建立链接,所以会发出标志位SYN=1,ACK=1,值ack=j+1,随机值seq=k,服务器端便进入SYN_RCVD状态

客户端接收到后,确认标志位ACK=1,值ack=j+1,如果正确的话,将标志位ACK=1,值ack=k+1,将数据包发送给服务器端,服务器检查ack=k+1,ACK=1,如果正确,第三次握手完成,双方进入ESTABLISHED状态,完成三次握手。 2. 为什么需要三次握手

  • 他的本质是考察客户端和服务器端接受和发送能力都是没有问题的

第一次握手

第二次握手 第三次握手

  • 只是两次握手,可能客户端的接收功能有问题 如果客户端的接受状态有问题,建立连接后,无论服务器返回任何数据,客户端都接受不到

  • 防止失效的请求再次传到服务器,造成错误 失效的连接请求是指:客户端(A)向服务器端(B)发起请求,只是两次握手就建立连接的话,若A先向B发起了一次连接请求,但是因为网络延迟或者其他原因导致B未收到,随后A向B又发起了建立连接请求,建立了连接,一段时间后,完成数据传输,连接断开了,随后开始延迟的请求到了,又建立起了连接,这个时候,A不会再向B发起请求了,就造成了资源的浪费

  • 防攻击 SYN攻击

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行:

四次挥手

  1. 过程

首先客户端(A)向服务器端(B)发送一个FIN=M,用来关闭A到B的数据传送,A进入FIN_WAIT_1状态

B向A发送一个ACK,值为M+1,这个时候,B进入CLOSE_WAIT状态,A进入FIN_WAIT_2状态

B向A发送一个FIN=N,用来关闭B到A的连接,B进入LAST_ACK状态,A接收到,进入TIME_WAIT状态

A发送ACK=N+1到B,A进入TIME_WAIT状态,B进入CLOSE状态,完成四次挥手

  1. 为什么要四次挥手

因为TCP是全双工通信的
(1)第一次挥手 因此当主动方发送断开连接的请求(即FIN报文)给被动方时,仅仅代表主动方不会再发送数据报文了,但主动方仍可以接收数据报文。

(2)第二次挥手 被动方此时有可能还有相应的数据报文需要发送,因此需要先发送ACK报文,告知主动方“我知道你想断开连接的请求了”。这样主动方便不会因为没有收到应答而继续发送断开连接的请求(即FIN报文)。

(3)第三次挥手 被动方在处理完数据报文后,便发送给主动方FIN报文;这样可以保证数据通信正常可靠地完成。发送完FIN报文后,被动方进入LAST_ACK阶段(超时等待)。

(4)第四挥手 如果主动方及时发送ACK报文进行连接中断的确认,这时被动方就直接释放连接,进入可用状态。

image.png

怎样改善白屏时间

对浏览器对页面的下载,解析,渲染过程,可以考虑一下的优化处理

  • 尽可能精简HTML的代码和结构
  • 尽可能的优化CSS文件和结构
  • 一定要合适的防止JS代码,尽量不要使用内联js代码

课外知识

  1. 单工通信 概念:只能一边向另一边的通信,一边是发送方,另一边是接收端,不可逆,通道时单向的

如: 广播站,无线电站等

  1. 半双工 概念:可以双向通信,但是同一时间,只能一边向另一边通信,即同一时间,只能单向通信,通过不同时间,来实现双向通信

如:对讲机

  1. 全双工通信 概念:任何时刻,都可以两边同时通信

如:电话,现代计算机网络

www.zhihu.com/question/63…