网络体系结构与基本知识
之前的文章说了因特网和计算机网络分类。这篇文章来介绍下体系结构。
生活中做任何事情要有一套逻辑顺序,体系结构就是体现这种顺序的,我想要跟别人通信,中途会经历什么?网络通信自然繁琐,毕竟涉及到的设备较多。
至于体系结构的历史在此就不多说了,感兴趣的话可以自己去看看。而这节课的目的,是为了让你在后期学习中能深刻体会网络“天罗地网”的设计。
OSI体系结构
我们使用网络很简单,怎么上网啊!玩游戏啊!下载东西啊!等等,这些小孩子都会!但是网络可是依靠着大量的硬件软件运作的。每一个部分都在相互配合,一起为我们服务。因此最早的网络分为7层。
这个就是OSI的7层模型
上图可见,OSI的结构非常清楚;理论也很完整;但是也有缺点,有些功能的定义重复了;而且上图的7层结构实现起来也复杂。
说白了,我就是觉得有人认为7层太多了,懒得记!OSI结构就是理论上非常清晰,单独拿出每一层的解释也很详细,但是网络毕竟是各层设备配合完成的,因此把他们放在一起分析的时候,就会很混乱。
后来就出现了TCP/IP并成功代替了OSI的地位(但是TCP/IP源于OSI的)
TCP/IP协议
毕竟是长江后浪推前浪,TCP/IP的优点:考虑到了各层设备网络互联的问题;在网络管理上也很好管理;划分了连接的方式。
不过TCP/IP可没有继承它老爹OSI的优点。因为从各层配合的角度考虑而不分你我,使得TCP/IP各层概念不清晰;概念的不清晰导致通用性也很差;网络接口层也没有实质性内容。
如下图
注:TCP/IP是一个协议簇,里面包含着众多的协议
OSI结构清晰但是复杂不实用,TCP/IP结构不完整但各层联系紧密。为此,我们折中一下,用TCP/IP五层来完成我们研究学习。
网络基本知识
上述的体系结构只是一部分!对于网络,我们还有几个重要的知识去理解。
实体,协议,服务和数据单元
实体:表示任何可发送以及接收信息的硬件或软件进程
说白了就是路由器,交换机,手机的APP或者电脑软件这一类的统称。不过我们在网络通信里用这个名称来定义。
协议:是控制两个对等实体进行通信的规则的集合
我们做事情总要统一,去实习有三方协议,买保险有保险的协议,网络通信自然也要协议。两个实体通信也要符合某种规范或者约定吧!那么一个网络协议有什么组成呢?语法,语义和同步
语法:数据和控制信息的结构或格式
假如你和我来签合同,首先你要保证这个合同是中文的,且它符合一个合同的格式,不然我不认识外文或者发现你的合同漏洞百出,那么我就会扔了它并拒绝你(这就是语法)
语义:对接收或发出的消息应该做出什么样的响应
当你的合同语法没问题了,我就开始看内容,如果发现有的合同内容我办不到或者和我想象的出入很大,那么我可能就会在履行这个合同条例时出现重大问题(这个就是语义)
同步:事件实现的顺序
假设上述全部符合,那么我会从头审视,这个合同我该从哪一步做起,是先复印身份证,还是先交钱等等(这个就是同步)
这三个词很好理解,但是它贯穿了整个网络通信,因为每一层设备的交互都需要协议完成,我们在描述一个通信协议时,可以从这三点出发概括该协议的特点。
服务:这个很好理解,就是实体之间,下层要为上层提供服务,上层需要下层提供支持。这个时候上下层进行交互的地方就是服务访问点
但是,协议和服务是不一样的!协议的制定让我可以为上层实体服务。但是本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服务用户是透明的。
协议是“水平的”,即协议是控制两个对等实体进行通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。上层使用下层的服务需要通过指令完成。
上述一段可能不太好理解。我举个例子,上面不是说了吗?你(乙方)和我(求职者)签了合同,我按照合同上的内容工作。比如公司有项目,(乙方)把我派到了(甲方)提供专业服务。我为(甲方)提供服务后按照协议你(乙方)会发给我应有的待遇。但是,(甲方)不知道我和(乙方)签了什么协议,他只知道在这个领域,找我能帮他解决问题,而我能为(甲方)提供服务,全都是因为我和(乙方)的协议。
再举一个例子,服务的“垂直”和协议“水平”其实就好比:一个外交官要向它国外交官讲话,但是它国外交官不懂中文,因此我们要向翻译人员讲话并由翻译官来完成翻译。我向翻译员讲话,翻译员起到了一个“服务”的作用,但是我真正的通信的对象是它国外交官,最终的协议是我们之间的“水平”交流达成的
数据单元
数据单元就是指为了完成网络通信所定义的最小基本单位。网络通信都是由这些组合起来的数据单元进行传输而完成的。
协议数据单元(PDU):指的是不同端点中的各层对等实体间,为完成该协议交换的信息单元
服务数据单元(SDU):指实体为完成请求功能所需要的数据单元
注:这里数据单元提到的“协议”和“服务”请参考上段的解释
也就是说,在我进行网络通信的时候,每一层都会有相应的数据,有些数据是我要向对端“水平”发送的内容;而有些内容是为了“垂直”向各个层请求服务的。
上图就是数据所在各层时的称呼,以及额外添加的报头
(这个很重要,后续对各层会展开分析!数据单元简直就是网络通信的“血液”)