目录
一. 协议的分层
二. OSI七层网络协议
三. TCP/IP五层网络协议
四. 网络设备所在分层
五. 封装
六. 分用
七. 传输中的封装和分用
八. 数据单位术语
一. 协议的分层
常见的分层为两种OSI七层模型和TCP/IP五层模型
为什么要协议分层?
在网络通信中,存在设计很多的细节和规则,如果这些规则依靠一个协议来说明,那么这个协议肯定会非常的复杂,如果把这一份协议根据某种要求分割成多个小份协议,为了让这些小份协议更好的相互配合,于是就引出了协议分层(上层调用下层提供的功能,下层为上次提供服务)的概念
协议分层的好处
- 上层协议直接调用下层协议提供的接口即可,不需要了解下层协议具体的实现细节
- 某一层协议被替换掉后,不会对其他层造成影响
参考打电话,1.只需要会说汉语就可以打电话,不需要知道电话是如何工作的 2.电话从无线电话变成有线电话,对你打电话没有任何的影响
二. OSI七层网络协议
OSI七层网络协议将网络分为七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
- 应用层:提供应用程序之间的通信服务(电子邮件——电子邮件协议)
- 表示层:负责数据的格式化和转换
- 会话层:负责建立、管理和终止会话
- 传输层:负责数据(起点和终点)两个节点之间的数据传输(端到端的传输)
- 网络层:负责起点和终点之间的道路(路径规划)
- 数据链路层:负责两个相邻节点之间的通信
- 物理层:负责在一条物理通信线路上传输比特
这是最初设计的七层网络协议,后来在实施的过程中,发现太麻烦了,于是进行了简化,现在最常用的是TCP/IP五层网络协议
三. TCP/IP五层网络协议
TCP/IP五层网络协议将网络分为了五层:应用层,传输层,网络层,数据链路层,物理层
- 应用层:明白数据要用来干什么,实现什么功能 (安排数据在应用程序中如何使用)
- 传输层:负责数据(起点和终点)两个节点之间的数据传输(端到端的传输)
- 网络层:负责起点和终点之间的道路(路径规划)
- 数据链路层:负责两个相邻节点之间的通信
- 物理层:负责在一条物理通信线路上传输比特
对于程序员来说,下面四层已经被操作系统内核和硬件实现好了,程序员只需要关注传输层提供的接口调用和具体代码要实现怎么样的功能即可
四. 网络设备所在分层
设备 | 工作层级 | 核心功能 |
---|---|---|
中继器、集线器 | 物理层 | 放大电信号、扩展物理传输距离,广播信号 |
网桥、交换机 | 数据链路层 | 基于 MAC 地址转发数据帧,隔离冲突域(网桥)或提供高效局域网通信(交换机)。 |
路由器 | 网络层 | 基于 IP 地址路由数据包,连接不同网络,选择最优路径。 |
负载均衡器 | 传输层 | 分配流量、提高系统可用性和性能,处理TCP/UDP数据段 |
网关 | 应用层 | 用于连接不同类型的网络,处理应用层协议转换 |
事实上,很多的交换机和路由器功能更强大,更复杂,交换机具有路由器的一些功能(可以工作在网络层),路由器也具有交换机的一些功能(可以工作在数据链路层)
五. 封装
发送方发送数据,当数据从应用层传递到物理层时(从上到下),每一层都会在数据上添加自己的协议头(或尾),形成新的数据单元。
1)应用层
- 应用层使用应用层协议,将用户的数据封装成应用层数据单元
- 应用程序调用操作系统提供的API,将这个数据单元交给传输层
- 应用层主要使用的协议:HTTP协议,HTTPS协议,根据实际情况自己定义协议
2)传输层
- 传输层使用传输层协议,将应用层数据单元添加TCP/UDP报头封装成TCP/UDP数据报
- 下层(网络层)提供API,传输层调用API将数据报传给网络层,这样下层就可以处理这个数据
- 传输层主要使用的协议:UDP协议和TCP协议
3)网络层
- 网络层使用IP协议,将TCP/UDP数据报添加IP报头并封装成IP数据包
- 下层(数据链路层)提供API,网络层调用下层API将IP数据包传给下层,这样数据链路层就可以处理数据
- 网络层主要使用的协议:IP协议
4)数据链路层
- 数据链路层使用以太网协议,将IP数据报添加以太网帧头和帧尾并封装成以太网数据帧
- 下层(物理层)提供API,数据链路层调用API将以太网数据帧传给下层,这样物理层可以处理数据
- 数据链路层主要使用的协议:以太网协议
5)物理层
- 将以太网数据帧,二进制结构的数据转换成光信号/电信号/电磁波,然后进行发送
添加报头的过程就是封装,报头虽然起不到保护数据的操作,但是可以承载一些关键信息用来转发数据信息
上述这些一系列的操作,数据从你的电脑发送了出去(刚出家门),具体路上怎么走的,我们不管,假设数据到接收端了,数据怎么处理,处理的过程就是分用
六. 分用
1)物理层
- 将接受到的光信号/电信号/电磁波信号,这些物理信号转换成数字信号(二进制信号)
- 调用上层协议提供的API,将这些数据传输给上层, 这样数据链路层就可以处理数据
2)数据链路层
- 得到下层传来的二进制数据,根据以太网协议,按照以太网数据帧的格式对二进制数据进行解析,去除帧头和帧尾,取出其中的载荷部分
- 通过调用上层(网络层)提供的API,将载荷部分交给上层协议,网络层就可以处理数据
3)网络层
- 得到下层传来的IP数据包,根据IP协议,按照IP数据包的格式进行解析,去除IP报头,取出载荷部分
- 通过调用上层(传输层)提供的API,将载荷部分交给上层,传输层就可以处理数据
4)传输层
- 得到下层传来的UDP数据报,根据UDP协议,按照UDP数据报的格式进行解析,去除UDP报头,取出其中的载荷部分
- 通过调用上层(应用层)提供的API,将载荷部分交给上层,应用层就可以处理数据
5)应用层
- 得到下层传来的数据,按照应用层协议,根据对应的格式来解析数据,得到这些数据后,根据自己要实现的功能来处理这些数据
七. 传输中的封装和分用
在现实情况中,两台主机一般不是通过网线直连的 ,而是通过一系列的交换机或者路由器进行网络传输
- 在经过交换机或者路由器的过程中,也需要进行封装和分用的过程
- 在封装和分用的过程中,得到载荷部分和关键信息
- 由于网络设备的不同,导致分层的程度也不同
1)交换机
如果是交换机,则封装分用到数据链路层
- 物理层得到光电信号,将光电信号转换成二进制数据,交给数据链路层
- 交换机的数据链路层会对得到太网数据帧进行解析,
(1)取出载荷部分(2)解析帧头中的关键信息
根据帧头中的关键信息,决定数据往哪里发送,再进一步构建出新的以太网数据帧
将这个新的以太网数据帧通过物理层发送出去
2)路由器
如果是路由器,则封装分用到网络层
- 物理层得到光电信号,将光电信号转换成二进制数据,交给数据链路层
- 数据链路层得到以太网数据帧,根据数据帧拿到载荷,将载荷(IP数据包)交给网络层
- 网络层得到IP数据包,网络层将会对IP数据包进行解析
(1)取出载荷部分(2)解析帧头中的关键信息
根据报头中的关键信息,决定数据往哪里发送,再进一步构建出新的IP数据包
将这个新的IP数据包交给数据链路层(加上帧头帧尾),再交给物理层(二进制数据转换成光电信号)继续传输
八. 数据单位术语
常见的单位有:包(packet)段(segment)报(datagram)帧(frame)
IP数据包,TCP数据段,UDP数据报,以太网数据帧
点赞的宝子今晚自动触发「躺赢锦鲤」buff!