衡量Web页面性能有一个重要指标**FP(first paint),指从页面加载到首次开始绘制的时长。**这个指标直接影响了用户的跳出率、pv、更高的参与度以及更高的转化率。 影响FP的一个重要指标就是网络加载速度 理解网络的关键就是对网络的协议有深刻的认识。 通常的网络通信都是基于
- TCP/IP
- UDP/IP
进行的。 主机之间都是通过数据包来进行网络通信的,下面将通过一个数据包的“旅程”来讲解一下以上两个概念
IP协议(网际协议)
把数据包送达目的主机
计算机的地址成为ip地址,访问任何网站实际上知识你的计算机向另一台计算机请求信息。 就像送快递,每个主机都有一个ip地址作为门牌号,在数据传输之前,进入网路层,数据包都会携带一个ip头,它包含了一些信息:
- 目的主机ip
- 源ip(自己的ip)
- 版本号
- 等等
然后数据包通过物理底层将数据传输给另一台机器的网络层,网络层解析ip头识别出数据部分将解开的数据包交给上层。
UDP(用户数据包协议)
把数据包送达应用程序。
上层将数据包交给传输层的时候,将udp头携带进入数据包中,携带了具体某个端口的信息。 通过物理传输到目的主机,在传输层取出udp头,解析出端口号,将数据包交给对应的端口应用程序。 但是udp在发送数据时,如果数据包出错,虽然它可以效验对错,但是对于错误的数据包,udp并不提供重发机制,只是丢弃当前包,而且udp在发送之后也无法知道是否能到达目的地。
TCP(传输控制协议)
把数据完整的送达目的主机。是一种面向连接的、可靠的、基于字节流的传输层通信协议。
使用UDP有两个问题:
- 数据包丢失。
- 大的数据包拆成小的数据包的排序问题。(大文件会被拆分成很多小的数据包来传输,这些小的数据包会经过不同的路由,并在不同的时间到达接收端,而 UDP 协议并不知道如何组装这些数据包,从而把这些数据包还原成完整的文件。)
与UDP区别:
- 对于数据包丢失情况,TCP提供重传机制
- TCP引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件。
一个完整的TCP连接的生命周期包含了“建立连接”“传输数据”和“断开连接”三个阶段
- 建立连接:tcp三次挥手建立连接
- 传输数据:接收端需要对每个数据包进行效验,并对效验结果包装到一个数据包中发送给发送端。发送端决定是否重传。
- 断开连接:四次挥手断开连接。
因为TCP为了保证数据传输的可靠性,牺牲了数据包的传输速度,因为“三次握手”和“数据包效验机制”等把传输过程中发送数据包的数量直接增加了一倍,所以传输速度不如UDP。
|