在主题之前,我想先谈谈目前计算机的网络模型,主要谈谈 TCP/IP 模型:

  • 应用层:产生最原始的数据,常见协议如 http、ftp、websocket、DNS、QUIC

  • 传输层:传递应用层的数据给网络层,必要时进行切割,常见协议如 TCP、UDP

  • 网络层:目标寻址,常见协议如 IP、ARP、ICMP

  • 网络接入层:通过物理链路传输比特流到目标主机

接下来就正式进入主题了

1.查看浏览器缓存

没有缓存的话才会继续往下走,否则直接使用缓存的资源

2.解析URL和DNS解析

解析URL,如果应用层协议使用http,默认端口号是80

DNS解析:

image-20240228231336482

3.考虑TCP和TLS握手

对于一些重要的数据(不允许丢失),我们需要先建立TCP连接,他能保证我们的数据安全到达对方,否则可以考虑UDP传输

4.数据包装

网络模型每次往下一层,都会给数据包增加一个头部

  • 应用层:HTTP头
  • 传输层:TCP头,以及明文数据加密
  • 网络层:IP头
  • 数据接口层:MAC头

5.数据传输

数据包在网络里被多次转发,最终要到达目的地