不二如是 发表于 2020-2-7 08:53:43

04 - 把数据包送达到主机的IP

本帖最后由 不二如是 于 2020-2-7 21:34 编辑

上一讲介绍完 Chrome 的多线程架构。

本讲开始浏览器中常用到的协议部分。

在衡量 Web 页面性能的时候有一个重要的指标叫 FP(First Paint),是指:

从页面加载到首次开始绘制的时长。
这个指标直接影响了用户的跳出率,更快的页面响应意味着更多的 PV(page view,页面浏览量,或点击量)、更高的参与度,以及更高的转化率。

那什么影响 FP 指标呢?

其中一个重要的因素是网络加载速度。

要想优化 Web 页面的加载速度,你需要对网络有充分的了解。

而理解网络的关键是要对网络协议有深刻的认识,不管你是使用 HTTP,还是使用 WebSocket,它们都是基于 TCP/IP 的~

如果你对这些原理有足够了解,也就清楚如何去优化 Web 性能,或者能更轻松地定位 Web 问题了。

在网络中,一个文件通常会被拆分为很多数据包来进行传输,而数据包在传输过程中又有很大概率丢失或者出错。

那么如何保证页面文件能被完整地送达浏览器呢?


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

数据包要在互联网上进行传输,就要符合网际协议(Internet Protocol,简称 IP)标准。

互联网上不同的在线设备都有唯一的地址,地址只是一个数字。

这和大部分家庭收件地址类似,你只需要知道一个家庭的具体地址,就可以往这个地址发送快递。

这样物流系统就能把物品送到目的地。

计算机的地址就称为 IP 地址。

访问任何网站实际上只是你的计算机向另外一台计算机请求信息。

如果要想把一个数据包从主机 A 发送给主机 B 。

那么在传输之前,数据包上会被附加上主机 B 的 IP 地址信息,这样在传输过程中才能正确寻址。

额外地,数据包上还会附加上主机 A 本身的 IP 地址,有了这些信息主机 B 才可以回复信息给主机 A 。

这些附加的信息会被装进一个叫 IP 头的数据结构里。

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

IP 头不是本文重点,如果需要详细了解,请自行搜索{:10_302:}

为了方便理解,我先把网络简化分为三层结构,如下图:



一起来看下一个数据包从主机 A 到主机 B 的旅程:


[*]上层将含有“鱼C论坛”的数据包交给网络层
[*]网络层再将 IP 头附加到数据包上,组成新的 IP 数据包,并交给底层
[*]底层通过物理网络将数据包传输给主机 B
[*]数据包被传输到主机 B 的网络层,在这里主机 B 拆开数据包的 IP 头信息,并将拆开来的数据部分交给上层
[*]含有“鱼C论坛”信息的数据包就到达了主机 B 的上层了

下一讲我们来介绍 UDP 是如何把数据包送到应用程序滴。



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

qiuyouzhi 发表于 2020-2-7 09:28:18

沙发~~~
页: [1]
查看完整版本: 04 - 把数据包送达到主机的IP