为什么要有OSI参考模型:
还是那个问题,如果每个厂家都有自己的参考模型,都定义了不同的标准体系,那么不同厂家的计算机就无法实现互联互通,因此由国际化标准组织OSI制定了一套标准的参考模型
OSI参考模型解释:
1、其实俩个主机之间的通信就是一个封装和解封装的过程,我们通过QQ发送的消息其实是对应用层的data数据的处理,然后你发送的data数据从上往下封装每层加上自己的头部或尾部,最终形成了一个附加了许多头部附加信息的二进制比特流,这个过程叫做封装
2、当比特流通过链路传送到接受主机时,它将比特流解封装,就是将附加的头部信息一层一层的去掉,最终还原出发送发的data数据
3、添加头部的作用有很多,比如说头部信息包含目的主机的ip地址,通过这个头部信息里的ip地址才能够找到目标主机;再比如,你可以通过头部信息判断信息的优先级and so on。
OSI参考模型精解:
应用层:
只有与网络打交道的程序才能算上应用层程序,例如记事本就不算应用层的程序
表示层:
1、俩台主机可能编码方式不同,或者把一个比特流转化成一张图片,这时候就需要表示层进行数据格式变换
2、假如你要发送你的银行卡密码给你的好友,直接发送会被人劫包直接窃取,所以需要表示层进行加密
3、当你进行数据通话时,数据量太大,这时候就需要会话层进行数据压缩,接受方进行数据恢复
会话层:
其实会话层的功能就是建立和释放会话,举个例子:
当你用浏览器访问百度服务器时,服务器和客户端会建立一个session,同时服务器为客户端产生一个sessionID保存在客户端的cookie中,当你再次访问百度服务器时,服务器会检查你的cookie,发现你的cookie中保存着和百度服务器的一个session,你们就可以直接进行通信了,说白了将session就是一个身份标识,就是一个房产证,只有证明了这个房子是你的,你才可以入住。只有你证明了你和我有连接,我们才能通信。
传输层:
1、可靠传输和不可靠传输:
可靠传输是指通过建立连接,你发送的数据在目的主机接收到后给你返回一个确认收到的信息,这样可以确保数据被对方正确的接收,这叫可靠传输
不可靠传输是指你只负责将数据发出去,目的主机收没收到你根本不关心,你只管发送
可靠传输主要用在对于数据的准确性和可靠性有要求的场景,但是应答回复机制会占用一定的时间和资源,这样就导致了不能及时的交付;不可靠传输主要用于对实时性有要求且对于数据的正确性要求不高的场景,这样节省了应答的时间成本,能够及时的交付;
2、差错控制:
数据丢失、数据重复传送、数据出错都在传输层检验
3、流量控制:
简单来说就是发送的速度和接收的速度要匹配,发送方发出的数据要来得及接收,这就叫做流量控制;
4、复用分用:
一台主机可以有多个应用、多个进程,那如何确定从网络层传输的数据是给哪个应用呢?为解决这个问题产生了端口的概念,一个端口号可以唯一标识一个应用程序
我们把从网络层接受的数据传输到对应的端口上的过程叫做分用
我们把从应用层接收到的不同应用程序的数据通过一个传输层传出去的过程叫做复用
网络层:
1、路由选择:
从主机A到主机B存在多条路径,通过路由算法选择一条最佳路径的过程就叫做路由选择
2、流量控制:不多赘述了
3、差错控制:
通过奇偶校验等方式确定数据的正确性
4、拥塞控制:
当网络对某一资源的需求量大于网络的可用资源就叫做拥塞;简单来说就是一条路上不能有太多的车,车太多就容易堵车,堵车这种现象就叫做拥塞
数据链路层:
流量控制在这一层不是重点功能
在这一层的四大功能:封装成帧、透明传输、差错校验、访问控制
1、成帧:
完成将网络层接受的数据封装成帧(怎么封装后续会详细讲)
2、透明传输:
在封装成帧的过程中会有帧定界符,当出现帧定界符的时候我们认为这是一个帧,但是若传输的数据中也存在和帧定界符相同的字符怎么办?如何确定是数据还是帧定界符,这就是透明传输所要完成的工作;即如何唯一确定字符的含义。
3、差错控制:
帧错+位错(也会在后续详细讲)
4、访问控制:
若采用总线形式的拓扑结构,那么肯定会存在这样的特点,同一时间只有一个主机能发送消息,其他主机只能侦听,那么如何确实信道是否被占用就是访问控制要解决的问题。
物理层:
其实它的工作就是尽可能的屏蔽掉传输媒体和通讯手段的差异,后续会具体展开讨论