为什么要有网络参考模型的出现呢?要解释这个问题,我们还得聊聊协议这个东西
网络协议
- 为了使数据可以在⽹络上从源传递到⽬的地,⽹络上所有设备需要“讲”相同的“语⾔”
- 描述⽹络通信中“语⾔”规范的⼀组规则就是协议
- 网络协议决定了数据的格式和传输的规则
例如:两个⼈交谈,必须使⽤相同的语⾔,如果你说汉语,他说阿拉伯语……
协议分层
网络的通信过程本身是很复杂的,数据以电⼦信号的形式穿越介质到达正确的计算机,然后转换成最初的形式,以便接收者能够阅读
为了降低⽹络设计的复杂性,将协议进⾏了分层设计
就好比计算机的cpu它实际上只能识别0/1代码,但是0/1这些代码怎么传输过来,他是不需要关心的
分层设计的意义
- ⽤户服务层的模块设计可相对独⽴于具体的通信线路和通信硬件接⼝的差别
- ⽽通信服务层的模块设计⼜可相对独⽴于具体⽤户应⽤要求的不同
例如:⽂件传输或电⼦邮件服务模块的设计,不必关⼼底层通信线路是光纤还是双绞线
邮局实例:
邮局对于写信⼈来说是下层 运输部门是邮局的下层 --下层为上层提供服务 写信⼈与收信⼈之间使⽤相同的语⾔ 邮局之间的约定 --同层次之间使⽤相同的协议
目前的网络参考模型有OSI和TCP/IP两种,我们下面来重点讨论
OSI参考模型
是ISO组织(国际标准化组织)在1985年研究的网络互联模型
我们可以用“物数网传会表应”的方法来记这7层
用QQ聊天来解释OSI模型
-
应用层: 你用qq发出一条消息(比如“你吃了吗”)
-
表示层:把这条消息识别为计算机可以识别的语言并且压缩加密
-
会话层:建立链接也就是说会话,两端需要建立关系才能使用(你需要找到对方的qq进程,并让它接受)
-
传输层:将应用层传过来的数据进行保存,产生的数据段发送到网络层。(传输层靠端口号转发)
-
网络层:将传输层的数据段进行保存,产生的数据包发送到数据链路层(网络层靠IP地址转发)
-
数据链路层:将网络层的数据包进行保存,产生的数据帧发送到物理层。(数据链路层主要靠mac地址转发)
-
物理层:将这些二进制数字组成的比特流转化成电信号在网络中传输。
因为OSI协议栈比较复杂,且TCP和UDP协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型
TCP/IP究竟是4层还是5层,是不少网络人员讨论的话题,目前IEEF将TCP分为了两种模型,四层就是标准模型,五层为对等模型,我们只需要了解每一层的作用,无需纠结它到底是四层还是5层
总结
- 任何事情,做大之后都会有标准的出现,而互联网也不例外,分层设计的理念能够让我们在设计程序更方便,排查故障时更清晰
- 还记得我们讲的网络的历史吗,其中TCP/IP模型是比OSI模型更早的,这或许也是其能够被更广泛应用的原因把