02 网络协议 - IP/UDP/TCP协议

Posted by CodingWithAlice on April 7, 2021

02 网络协议 - IP/UDP/TCP协议

性能指标:首次渲染时长FP(从页面加载到首次开始绘制的时长)

影响FP的重要因素:网络加载速度

—> 优化速度首先要了解网络协议:HTTP/WebSocket都是基于TCP/IP协议

—> 互联网中的数据是通过数据包来传输的。数据发送的数据很大,通常会被拆分为很多数据包来进行传输,而数据包在传输过程中又有很大概率丢失或者出错。

—> 解决的核心痛点:

  • 数据包如何送达主机
  • 主机如何将数据包转交给应用
  • 数据是如何被完整地送达应用程序

1. IP:把数据包送达目的主机

IP是非常底层的协议,只负责把数据包传送到对方电脑

计算机的地址就称为IP地址,访问任何网站实际上只是你的计算机向另外一台计算机请求信息的过程。

一个数据包从主机A到主机B的旅程

注意:IP头是IP数据包开头的信息,包含IP版本、源IP地址、目标IP地址、生存时间等信息

image-20210407223945418

2. UDP:把数据包送达应用程序

一篇详解 UDP 的文章:UDP详解

每个想访问网络的程序都需要绑定一个端口号,UDP 通过端口号把数据包分发给正确的程序

一个数据包从主机A旅行到主机B程序的路线

注意:和IP头一样,端口号会被装进UDP头里面,UDP头再和原始数据包合并组成新的UDP数据包。UDP头中除了目的端口,还有源端口号等信息

image-20210407224054561

  • 优点:传输速度快
  • 缺点:不能保证数据的可靠性
    • 数据包在传输过程中 容易丢失

    • 无法将小数据包还原成完整文件;

      (UDP可以校验数据是否正确,但是对于错误的数据包,UDP并不提供重发机制,只是 丢弃 当前的包,而且UDP在发送之后也无法知道是否能达到目的地)

  • 应用场景:关注速度、但不那么严格要求数据完整性的领域,如在线视频、互动游戏等

3. TCP:把数据完整地送达应用程序

一篇写得很细的博文:TCP 的那些事儿(上)TCP 的那些事儿(下)

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • 优点:
    • 对于数据包丢失的情况,TCP提供重传机制;
    • TCP引入了数据包排序机制,用来保证把乱序的数据包组合成一个完整的文件;
  • 缺点:牺牲了传输速度
单个数据包的传输流程

注意:TCP头除了包含了目标端口和本机端口号外,还提供了用于排序的序列号,以便接收端通过序号来重排数据包

image-20210407224137360

一个完整的TCP连接的生命周期
  • 建立连接:三次握手

  • 传输数据:接收端需要对每个数据包进行确认操作,所以当发送端发送了一个数据包之后,在规定时间内没有接收到接收端反馈的确认消息,则判断为数据包丢失,并触发发送端的重发机制。

  • 断开连接:四次挥手

    image-20210407224154376