页面渲染-网络通信篇

271 阅读6分钟

铺垫

只要我们在地址栏中输入我们想要访问的网址,比如www.pornhub.com,用力的敲下那颗回车键,等待我们的有两种结果:

  • 1、一大堆 正经 的东西在你眼前跳动,看得你都饿了
  • 2、页面像你的脑子一样,一片空白
    甚至还要跳出几个字来嘲讽你。

这时你肯定不能忍啊,不搞清楚这个页面是怎么加载出来的,我就不(看不到)是(正经的)人(东西了)

不能再废话了,感觉要被打。

网络分层

我们先从比较底层的概念讲起来吧,虽然日常中别人问你页面是怎么渲染的,你不可能一开口就跟人家提网络,提各种底层通信协议,也不可能人家问你为啥这个页面加载这么慢啊?你来一句,网速的问题啊!

你只需要淡定从容地将整个流程简要概括一下,凸显出你的逻辑性就可以让对方比较满意了(再说人家也没那么多时间听你巴拉巴拉半天)。但是想要达到这个效果并且不怕别人刨根问底找你茬的话,各种底层原理还是需要了解的。

TCP/IP五层模型

计算机网络中最开始是OSI七层网络模型,比较详细,但是也感觉比较复杂,为了在可理解范围内简化这个模型,TCP/IP四层、五层模型就应运而生了。不仅可以表达网络结构,也比较简洁。从上层往下:

  • 应用层(HTTP)
  • 传输层(TCP/UDP)
  • 网络层(IP)
  • 数据链路层
  • 物理层

其中下面两层,物理层和数据链路层是特别底层的与硬件相关的部分,我们不需要了解得太深。

硬件层

简单来说,就是通过网线、光纤等将各种硬件基础设备连接起来,传递0/1电信号,这种 0 和 1 ,不光我们不知道代表啥意思,计算机自己本身其实也不知道,所以需要另一层模型来规定0/1信号组合的规范和意义。

数据链路层

我们在这一层,需要将0/1字符组合成有意义的数据再传入硬件层,那这时为了避免混乱,以太网协议*诞生了,它规定了一组电信号(0/1信号)由64-1518个字节组成,而其中又分为两部分:

  • 标头:18个字节组成,用来携带发送者和接收者的身份信息;
  • 数据体:46-1500个字节组成,携带要传输的数据内容;

上述两个部分组成的一组电信号成为,如果传输的数据更大的话,需要多个帧来携带传输。此时想到大学时候学的一个概念,帧中继...

那我们在传输的过程中,怎么知道接收方到底是谁呢?MAC地址来了。

  • 每一台计算机都有一个网卡接口,而每张网卡都有一个特定的标识,由48位16进制的数字组成,具有唯一性,可能跟人的DNA类似吧。在传输中,发送的数据包都会携带着目标接收方的MAC地址,以便于对方能够准确的接收到我们发送的数据,同时也避免不该收的人收到我们的数据。
  • 在你发送数据时,其实向所有连接方都发送了数据包,虽然携带着目标服务器的MAC地址,但是你并不知道它具体在哪里,只能通过广撒网的方式,将鱼钩抛出去,让他自己上钩。这就是 广播 的概念:通知通知,请xxx速到8号柜台领取你的快递。数据包并不是什么好饲料,所以其他鱼不会乱咬钩,可能这也是协议吧,不然就乱套了。

怎么知道对方的MAC地址呢?这是一个好问题,日后再说。

世界上有那么多台计算机,如果每发送一次数据,就向全世界说我爱你,恐怕那个傻子也很难找到你吧,所以👇

网络层

  • 子网:广播的方式适合在小范围内传播、通知,也就是适合在同一个 子网(也就是局域网) 中通知,那么该如何判断一个MAC地址属于哪个子网呢?与发送方属于同一子网的计算机,我们就直接广播通知,否则就将数据发给网关,让其去转发我们的数据。
  • IP地址:判断两台计算机是否处于同一个子网,什么为依据呢?IP地址。目前ip协议有IPv4和IPv6,常用的还是IPv4,它由32位2进制组成,通常我们将其转为4段十进制编码:0.0.0.0 - 255.255.255.255;IP地址由网络主机两部分组成,只要网络部分相同,我们就称其为同一子网。但是网络位和主机位又不是固定的,那么我们怎么比较呢?
  • 子网掩码:从前上课没有认真听讲,看来这懒债是早晚要还的。子网掩码是什么?也是32位二进制数字组成,不过他比较单纯,网络位全为1,主机位全为0
  • 同一子网:将ip地址和子网掩码二进制形态的每一位做一次(与&)运算,如果结果与ip地址完全相同,则代表他们的网络位一定相同,属于同一子网。
  • ARP协议:为了获取接收方的MAC地址。在广播的过程中,发送信号会携带者目标的IP地址,同一子网内的其他计算机接收到该信号后,与自己的IP地址进行比较,如果相同,则将自身的MAC地址返回给发送方,这就是ARP协议。
  • 解惑:上面我们说到,传输数据的时候,携带着MAC地址进行传输,也是通过广播的方式,现在,获取MAC地址时候,也是广播,那其他计算机怎么知道你到底是童谣还是章子怡呢?
    其实在获取MAC地址的过程中,发送信号所携带的是特殊的(假的)MAC地址,其他计算机,一眼就看出你不是人,大威天龙...

通过以上内容,我们已经可以在两个计算机之间进行通信了,那么我在掘金写文章,别人给我点的赞,怎么样才能顺利地显示在我眼前呢?

传输层

下回分解,未完待续...