【大话存储】学习笔记(7章),OSI

2018-02-06  本文已影响29人  dy2903

任何系统之间,如果需要通信,都需要一套自己的协议系统。这个协议系统一般要定义互相通信的语言,以及硬件。

OSI是被提取抽象出来的系统间通信模型,中文意思是“开放式系统互联”,是描述多个系统之间交流的通用模型。

OSI模型

OSI初步

在讲OSI之间,我们首先看一个例子,PC a向PC b发送数据包的过程如下:

可以发现里面最重要的就是三个元素

OSI的七个层次

OSI模型将系统通信划分为了7个层次,最上面的三个层次可以归属到应用层。这个层不需要关心如何将数据传送到对方,只关心如何组织和表达数据。

应用层

应用层是OSI的最上层,表示一个系统对另一个系统要传达的最终消息。

只关注数据, 不关注指令如何发送

表示层

表示层就是对应用层数据的一种表示。

发送方必须用双方规定好的格式来表示信息:可以嵌入在实体数据中。

会话层

会话层:建立会话交互机制。实际是双方的应用程序之间的交互。

应用层、表示层、会话层的数据内容都被封装起来,交给押运员传输层

TCP/IP只有4层:应用层、传输层、网络层、物理链路层,它将OSI的应用层、表示层、会话层合并为一层,即应用访问层。意思是这个层全部与应用程序相关的逻辑,与网络通信无关。应用程序只需要调用下层的接口就可以完成通信。

下四层的作用是把上三层的数据成功送到目的地。

传输层

典型的传输层程序如下:

TCP主要处理拥塞和流量控制。路由器是调度中心,它可以决定走哪条路。TCP不能调度,它只是在发生了拥挤就只能通知后续的货物慢点发。如果道路畅通,则通知后面的货物加速发送。

那么TCP是怎么知道链路是否拥塞呢?它可以通过接收方返回的ACK应答来判断链路拥挤的。如果半天都没收到对方的签字,说明拥塞,有丢失

** 传输层的程序一定运行在通信双方的终端设备上。**而不是在中间的互联设备上。

因为传输层是一种端到端的保障机制,必须保证成功收到了并成功处理数据,才算发送成功了。如果只到了对方的网卡,但是断电了,也不叫端到端保障。

具体的可以再看从输入网址到浏览器返回内容(二),TCP/IP篇

网络层

上面说到了传输层其实只是一个押运员,它并不能进行调度,那么如何选路就交给了网络层。

同样以客户寄货物为例,当客户把货物交给货运公司的时候,会填写目的地址,至于应该走哪条路,统统不管,全部交给网络层处理。

总结一下就是,客户寄送货物的时候需要给出最终的目的地址,不管这个货物途径哪个中转站,所有的中转站都会知道最终的目的地址。

比如,要从新疆将货物寄到青岛,但是新疆到青岛没有直到的火车,所以只能去北京转出。

那么新疆的调度会去查找路由表,发现必须先到北京。注意此时在货物上贴上的还是青岛的标签,而不是北京的标签,但是会将货物发到去北京的火车上。

货物到北京,查看最终的目的地,会查找北京调度中心的路由表,此路由表与新疆的表不同。于是将货物送到去青岛的火车。

可以看出** 路由器就是调度的角色**

比如从青岛访问北京的服务器,具体步骤如下:

在中转的过程中,目的IP并不会改变,改变的只是MAC地址,也就是说会将MAC地址改为下一站的地址。

数据链路层

数据链路层:连通两个设备之间的链路,将上层的数据包再次打包成对应链路特定的格式。按照对应链路的规则在链路上传输给对方。

数据链路就好比交通规则:上路之前还需要看公路的质量怎么样,和对方商量传输的事宜。

链路层的作用:

两台PC之间的通信和两个路由器之间通信是有区别的。

路由间的通信:

简单的路由设备工作在OSI的第三层,即网络层,没有上4层的处理逻辑。

所以收到包之后,只检查包中的IP地址,不改变IP头之上的其他内容。

如果有NAT功能的路由器,会对IP包的源或者目的IP地址做修改

下图为通信路径上各个设备所作用的层次示意图:


image.png

未收到确认的包会放到缓冲区中,不会删除,直到收到对方的确认。

所以即使中途的设备把包丢弃了,运行在两端的TCP/IP协议依然会重传,这就是端到端的保障,因为设备中途网络设备不会缓存发送的数据,更不会自动重传。

现在我们来对比一下IP头和TCP头的区别:

物理层

物理层:在一种介质上将数据编码发送给对方。

注意链路层是控制物理层的。

我们可以把物理层看做传送带,不会进行货物分批,所以需要链路层给每批货物加标志性的头,接收方看到标志了以后就知道新一批货物来了。

经过物理层编码后,最终变成了一串bit流。通过电路振荡传输给对方,收到bit流之后,提交给链路层程序,剥去链路层同步头、帧头帧尾、控制字符。

MTU ,最大传输单元:每种链路都有自己最合适的分批大小

如果一次传输传送大于这个大小的货物,超过了链路接收放的处理吞吐量,会造成缓冲区溢出。

不过TCP和IP协议都会给货物分批。TCP会首先给货物分批,到了IP层,会按照链路层的分批大小来进行分批,如果TCP的分批大小已经小于链路层的分批,不会再分。

被IP层分批的货物,最终会由接受方的IP层再组装,但是由TCP分批的货物,接收方的TCP层不会合并。对货物的处理分析全部交由上层的应用程序来处理

image.png
上一篇 下一篇

猜你喜欢

热点阅读