网络协议系列--网络分层,TCP/IP五层模型【掘金日新计划】

1,366 阅读7分钟

da025f33d7584f3ebc59624e72e0c9db_tplv-k3u1fbpfcp-zoom-crop-mark_1304_1304_1304_734.webp

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

网络协议系列 第1篇--网络分层,TCP/IP五层模型【掘金日新计划】
网络协议系列 第2篇--传输层工作原理【掘金日新计划】
网络协议系列 第3篇--TCP有哪些机制【掘金日新计划】
网络协议系列 第4篇--应用层HTTP发展史【掘金日新计划】
网络协议系列 第5篇--HTTPS原理【掘金日新计划】
网络协议系列 第6篇--网络协议串讲【掘金日新计划】
网络协议系列 第7篇--补充一些底层网络知识【掘金日新计划】


 ~  ~前言:每日革新自我、追求进步,这是掘金日新计划的精神。
 ~  ~ 本系列将试图阐明网络协议的原理。系列将由7篇文章组成(别问我为什么是7篇,绝不是为了发表7篇掘金会送马克杯( ˇωˇ )).第一篇试图将网络分层,以及从TCP/IP五层模型的第一二层开始讨论。接下来主要的篇幅还是在传输层和应用层展开。系列的最后再以“打开一个url”的角度,继续将网络协议补充完整。

周尛先森




网络分层,TCP/IP五层模型

网络协议虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我当年学习它的时候也废了挺大功夫。

网络分层、TCP协议、HTTPS中对称与非对称加密,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了网络协议

本文以问题的形式逐步展开,一步步解开计算机网络的面纱,希望能帮助你彻底搞懂网络协议。


网络为什么需要协议?

在网络世界中,网络连接着大量的机器,机器之间需要通信,就通过网络和其他机器传递信息。

在现实世界中,人类通过语言的方式互相传递信息,其衍生出来的语言约有四千种至八千种,两个语言不通的人相遇的时候,沟通就变得非常艰难。这种情况在网络世界也是一样,而网络协议就是用来解决语言不通的问题的

当我们浏览淘宝网页的时候,我们的浏览器和淘宝的服务器建立了连接,那你有没有深入思考过,浏览器是如何做到这件事情的?它之所以能够显示缤纷多彩的页面,是因为它收到了一段来自 HTTP 协议的“东西”。浏览器按照协议解析淘宝发来的“信息”,最后页面展现在用户的眼前


网络分层的含义是什么?

下面是抽象出来的五层模型,按计划,文本主要讲前3层,剩下的后续会深入探究。 下载 (1).png

上面说到,网络中大量的机器互相通信。当我们点开淘宝页面的时候,中间其实经过了很多不同的设备,这时候我们就需要用到更多的规则包裹信息,信息到一个目的地(一层)就取下一层规则。理论上,就算再多不同种类的设备,只要继续添加规则,也可以让信息通过一个个设备到达目的地。

我们回到那个淘宝页面,当我们访问淘宝首页的时候,那些商品信息是通过什么方式,最终展现在浏览器上的呢?请看图:

下载 (2).png 可以看到,当“信息”发出,每经过一个设备的时候,设备会给信息加上不同的包装,作用就是告诉接收方里处在相同层级的设备:“这是我使用的规则,你知道改怎么做的”,然后接收方就刷刷刷的取下规则,交给他的下一个设备。

揭秘层与层之间的关系 TCP/IP五层模型里,每层之间有着什么样的关联。也可以理解为,一个网络包的本质就是俄罗斯套娃,五层协议,每层协议负责对应层级的封包和拆包。

所以说:只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。


物理层、数据链路层是什么?

物理层:其实只需要一根网线、一个夹线器和两个水晶头,就能实现第一层物理层。

首先我们剪开一小节网线,把里面6条脚裸露出来,然后将网线用1-3、2-6 交叉接法压入水晶头,再分别插入两台电脑的网线口,然后分别给两台电脑配上不同的ip地址,到此为止,两台电脑已经构成了一个最小的局域网,也即 LAN。但是问题也来了,现在我有3台电脑了,怎么将它们连起来?

数据链路层:我买了一个集线器,将3条网线插在集线器,而网线的另一端连接着3台电脑。那么这时候已经实现了3台电脑的连接。为什么呢,原来集线器的作用就是将收到的信息,复制到其他端口上,也就是说,我有A、B、C三台电脑。A想给C发一条信息,A发出的信息经过集线器,集线器把消息传给了B和C,这样通信的目的就达到了,因为C接收到A传来的信息,只不过B也收到了。

如何让消息只给C发送,接下来到MAC层工作了,MAC层拿到了消息,在局域网中怎么知道目标电脑是哪台机器,这时候就要靠吼了:“我这有条消息,谁是ip为 192.168.**.* 的设备,出来领一下消息”,目标机器听到广播,就会领取这条消息,并且双方都会记下对方的MAC地址,以备下次收发消息时用。


网络层又是什么?

以太网采用广播方式发送数据包,A发送的消息B和C都会收到,不仅效率低,而且局限在发送者所在的子网络。也就是说,如果两台计算机不在同一个子网络,广播是传不过去的。试想下,如果广播方式会跨子网络传播,那随便一台连了互联网的设备发送一条消息,整个网络会产生多少条广播的消息。

因此,必须找到一种方法,能够区分哪些MAC地址属于同一个子网络,哪些不是。如果是同一个子网络,就采用广播方式发送,否则就采用路由方式发送。但是,MAC地址本身无法做到这一点。它只与厂商有关,与所处网络无关。

当网络中的两台主机要进行通信时,必须知道双方各自的IP地址,TCP/IP协议通过IP地址来识别网络中不同的主机

于是网络层出现了。它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络

网络层出现以后,每台计算机有了两种地址,一种是MAC地址另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。

网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。目前,广泛采用的是IP协议的第四版和第六版,分别称为IPv4和IPv6。

小结

我们从TCP/IP五层模型开始,利用浏览器打开淘宝页面这个例子,介绍了网络分层的含义。然后再具体讲了物理层、数据链路层和网络层。物理层只需要一根网线,而数据链路层则比物理层多需要一个集线器,网络层的话更是在前两者之上,再加上一个路由器。

最后,让我们一起加油吧!

gg.jpg

都看到这了,不如顺手点个赞再走 ( *ˇωˇ* )