OSI网络参考模型
一、分层
1.首先我们需要了解什么是分层,为什么要分层和分层有什么好处
分层是实现网络通信的统一标准化而诞生的一种科学而有效的方法,在TCP/IP协议中得到了应用比如OSI七层分层模型
2.分层划分的优点
2.分层划分的优点
- 1.模块化设计:每个层次都具有不同的功能,且各层之间相互独立。这使得整个网络设计更加模块化,增加了灵活性和可维护性。如果需要改变某个特定层的实现或者新增功能,可以在不影响其他层次的情况下进行修改
- 2.简化复杂性:将网络通信过程分解为不同的层次,每一层只需关注自己的功能,而不需要考虑整个系统的复杂性。这种分层设计可以简化复杂的问题,使得网络的开发、部署和维护更加容易。
- 3.互操作性:通过明确定义每个层次之间的接口和协议,不同厂商或组织开发的网络设备和软件可以相互兼容。这种互操作性使得不同的系统能够无缝地进行通信,提高了网络的互联能力和可扩展性
- 4.容错性和可靠性:每个层次都有自己的错误检测、纠错和恢复机制,可以提高整个系统的容错性和可靠性。如果在某个层次出现故障或错误,只需要在该层处理,而不会对其他层次产生影响。
3.OSI七层参考模型
OSI七层参考模型:一个开放式体系结构,共七层(PS:当你发送数据时从上往下,接收数据时从下往上)
七层依次如下
| 各层名称 | 主要作用 |
|---|---|
| 应用层 | 网络服务与最终用户的一个接口 |
| 表示层 | 数据的表示、安全、压缩 |
| 会话层 | 建立、管理、终止会话 |
| 传输层 | 定义传输数据的协议端口号,以及流控和差错校验 |
| 网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
| 数据链路层 | 建立逻辑连接、进行硬件地址寻址、差错校验等功能 |
| 物理层 | 建立、维护、断开物理连接 |
其中又可分为上三层:应用层、表示层、会话层(无协议)
上三层统称应用层(数据都在本机中尚未发出)
1.应用层:网络服务与最终用户的一个接口
应用层简单的说是人向计算机发出一条指令,对话的一个接口
应用层协议:
HTTP(超文本传输协议【不仅仅是文本,还有图片和视频】):是一个简单的请求-响应协议,现在主要的场景是web服务,就是网页的传输,默认使用tcp的80端口http
HTTPs:是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性,偶人使用tcp的443端口
2.表示层:数据的表示、安全、压缩
表示层简单说是将人给的数据进行翻译给计算机,对数据有压缩和加密的功能
3.会话层:建立、管理、终止会话
会话层就是建立、管理或终止会话
下四层:传输层、网络层、数据链路层、物理层(有协议)
1.传输层:定义传输数据的协议端口号,以及流控和差错校验
只要在系统中打开一个程序,那么系统会随机分配一个端口号给应用程序
端口号的作用:确定系统上的某一应用程序
传输层:在发送数据的时候,通过协议和端口号来区分不同的应用程序
tcp协议(稳定但速度较慢 发之前确保能收到 安全性高,断点重传) udp协议(速度快但不稳定 只管发,不管对面收不收的到 安全性不高)
协议:使用不同的协议,可以决定数据传输的快慢和安全等
服务端:为他人提供服务(端口是固定的)极少部分是随机的,比如nfs端口号就是随机的。
客户端:需要他人提供服务(端口是随机的)
(PS:iana组织将前1024个端口号固定给了一些众所周知的程序)
2.网络层:进行逻辑地址寻址,实现不同网络之间的路径选择
网络层:确定传给哪台主机,选择传输的最佳路径 在逻辑上的(IP地址)进行选择
网络层中有一个ICMP协议(=ping)是检测网络主机双向连通性(在网络当中,有去有回才叫一次完整的通信)
3.数据链路层:数据链路层 建立逻辑连接、进行硬件地址寻址、差错校验等功能
数据链路层:再次确认传输对象(mac地址即网卡的地址 全球唯一),检查传输的数据是否完整
ARP(辅助协议) :将IP地址转换成mac地址,是优先级第一的协议
ARP协议运行的简单流程就是广播(除自己)所有人
谁是x.x.x.x(IP地址)请将mac地址告诉我
一般得知了mac地址以后会暂时缓存在ARP表中,未刷新之前ARP表中存放的 源ip地址(sender)和 目的IP地址 (target)都可以直接使用
4.物理层:建立、维护、断开物理连接
物理层:网线连在一起进行 电流传输(物理层的出现,物理接口的特性统一了物理设备的标准)
二、数据封装:报文
数据封装的过程:
详细的封装过程:
1.应用层: 上层数据
2.表示层: 上层数据
3.会话层: 打包上层数据
4.传输层: tcp或udp头部 + 上层数据 (这一层总称为:数据段)
5.网络层: IP头部+tcp或udp头部 + 上层数据 (这一层总称为:数据包)
6.数据链路层:mac头部+IP地址+tcp或udp头部 + 上层数据+校验位(检测数据完整性) (这一层总称为:数据帧)
7.物理层: 转化成电流(bit流)
简略的封装过程:
应用层: 上层数据
表示层: 上层数据
会话层: 打包上层数据
传输层: tcp或udp头部 + 上层数据
网络层: IP头部+数据段
数据链路层:mac头部+数据包+校验位(检测数据完整性)
物理层: 转化成电流(bit流)
PS:注意每层只能出现每层的数据,四层只看tcp或udp头部和端口号,三层只看ip头部中的ip地址,2层只看mac头部中的mac地址。