为什么要分层?
结构清晰
模块化易于系统维护和更新(任何一层服务的改变对其他层可以做到无感知)
有利于标准化
缺点
分的层太多效率就越低。
协议是控制两个对等实体进行通信的规则的集合,是水平的。
任一层实体需要使用下层服务,遵循本层协议,实现本层功能,向上层提供服务,服务是垂直的。
下层协议的实现对上层的服务是透明的。
上层通过接口和下层交互。
OSI 7 层模型
1984年,开放系统互联,目的是支持异构网络的互联互通。
现在来看是理论模型。理论成功,市场失败。
实线是数据的真正流动方向
上面4个层次是不被中间系统实现的。所以上面的4个层称之为端-端层。
每一层都会加头信息,交给下一层。直到数据链路层,加头加尾,然后交给物理层就变成了一系列比特在物理介质中传播。目的主机收到一系列比特,就能往上交给链路层。链路层去头去尾,交给网络层。。。
那么为什么需要数据封装(加头)
增加控制信息
控制信息包括:地址,差错检测编码,协议控制(优先级,服务质量,安全控制)
物理层
主要就是用来传输01比特串。解决单一比特传输问题。
单工模式,只能单向传输。(电视)
半双工,可以双向通讯,只能交替进行。(对讲机,说不能听,听不能说)
全双工,可以双向同时进行。
数据链路层
负责节点-节点 数据传输。(帧为数据单位)
物理链路直接相连的2个相邻节点的直接传输。
让接受一端,收到比特流的时候可以完成切分。所以要引入帧的概念。
还要负责物理寻址。在帧头增加发送端和接收端的物理地址表示数据。
在这条线上每个机器都会收到,但是只有62的节点会进行接受。
数据链路层还要解决流量控制,匹配2边的发送接受速度。避免淹没接收端。
差错控制,检测并重传损坏的数据。
访问控制,在任一给定时刻决定哪个设备拥有链路控制使用权。如上图
网络层
负责源主机到目的主机的数据分组交付。可能穿越多个网路。在链路层的物理寻址在此时就没用了。因为那个只能找到物理直接相连的寻址。
所以需要逻辑寻址,确保数据分组被送达目的主机,如IP地址。
路由,路径选择。
分组转发。
传输层
负责源-》目的(进程间) 完整报文传输。
报文的分段和重组。
SAP寻址。确保完整保温提交给正确进程,如端口号。
流量控制,差错控制 从端的角度。
会话层(实际中不独立存在)
对话的建立和维护
对话的同步,在数据流中插入“同步点”,当一个连接阻塞丢失了可以恢复到最近的同步点。
表示层(实际中不独立存在)
处理2个系统间交换信息的语法和语义问题。
数据表示转化(如大端,小端)转换为主机独立的编码
加密,解密
压缩解压缩。
应用层
支持用户通过用户代理或网络接口使用网络服务。
如FTP,SMTP,HTTP
TCP/IP 模型
所有的应用都可以架构在IP之上。
5层参考模型
综合了OSI 和 TCP/IP 的优点。
报文-》段(头,报文)-》数据报 (加头)-》数据帧(加头加尾)