(7)OSI/RM参考模型各层的主要功能

OSI/RM模型将通信分为7层,包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。各层分别负责比特流传输、数据链路管理、路由选择、端到端连接、会话管理、数据格式转换和应用交互。每层通过接口与相邻层通信,并使用下层服务,同等层间通过协议通信,为网络中不同主机提供可靠通信。

OSI/RM”是英文“Open Systems Interconnection Reference Model”的缩写

OSI参考模型将整个通信功能划分为7个层次,其划分的主要原则是:

1网络中各主机有相同的层次

2 不同主机的同等层具有相同的功能

3同一主机内相邻层之间通过接口通信

4 每层可以使用下层提供的服务,并为其上层提供服务

5不同主机的同等层通过协议来实现同等层之间的通信

拓展OSI参考模型各层的主要功能?_百度知道 (baidu.com)

划分原则:

1、网路中各节点都有相同的层次;

2、不同节点的同等层具有相同的功能;

3、同一节点内相邻层之间通过接口通信;

4、每一层使用下层提供的服务,并向其上层提供服务;

5、不同节点的同等层按照协议实现对等层之间的通信;

6、根据功能需要进行分层,每层应当实现定义明确的功能;

7、向应用程序提供服务。

OSI各层的功能

层次位置参考模型各层作用传输单元

物理层

利用传输介质为通信主机之间建立、管理和释放物理连接,实现比特流的透明传输,为数据链路层提供数据传输服务比特(bit)
数据链路层通过建立数据链路层链接,采用差错控制与流量控制的方法,使有差错的的物理线路变成无差错的数据链路
网络层通过路由选择算法为分组通过通信子网选择恰当的传输路径,实现流量控制、阻塞控制与网络互联的功能分组
传输层为分布在不同地理位置计算的进程通信提供可靠的端-端链接与数据传输服务;向高层屏蔽了地层数据通信的细节报文
会话层负责维护两个会话主机之间连接的简历、管理和终止,以及数据的交换
表示层负责通信系统之间的数据格式交换、数据加密与解密,数据压缩与恢复
应用层

实现协同工作的应用程序之间的通信过程控制

### OSI 参考模型的协议数据单元 (PDU) #### 物理 物理负责传输原始比特流,不涉及任何封装或解封操作。因此,在这一并没有特定的 PDU 名称。 #### 数据链路 在数据链路,PDU 被称为 **帧 (Frame)** 。帧包含了来自网络的数据包以及必要的控制信息,用于实现节点间可靠的数据传输[^1]。 ```python class Frame: def __init__(self, source_mac, destination_mac, data): self.source_mac = source_mac self.destination_mac = destination_mac self.data = data frame_example = Frame("00:A0:C9:1E:E7:D8", "FF:FF:FF:FF:FF:FF", b'Network Layer Data') ``` #### 网络网络,PDU 称作 **分组 (Packet)** 或者更具体地说是 IP 数据报。这主要处理逻辑地址寻址和路由选择等功能[^2]。 ```python from ipaddress import IPv4Address class Packet: def __init__(self, src_ip: IPv4Address, dst_ip: IPv4Address, payload): self.src_ip = src_ip self.dst_ip = dst_ip self.payload = payload packet_example = Packet(IPv4Address('192.168.1.1'), IPv4Address('192.168.1.2'), b'Transport Layer Data') ``` #### 传输 对于传输而言,依据所使用的协议不同而有所区别: - 使用 TCP 协议时,PDU 是 **段 (Segment)** ,其中包含源端口、目的端口号以及其他控制字段如 SYN 标志位等[^3]。 - 若采用 UDP,则相应的 PDU 就简单得多,被称为 **用户数据报 (Datagram)** 。 ```python import socket # Example of a simple segment creation with Python's struct module for demonstration purposes only. def create_tcp_segment(src_port, dest_port, seq_num, ack_num, flags=b'\x50\x02'): from struct import pack tcp_header = pack('!HHLLBBHHH', src_port, dest_port, seq_num, ack_num, ((flags[0]<<8)|flags[1]), 0, 0, 0) return tcp_header + b'Data' tcp_segment_example = create_tcp_segment(12345, 80, 0, 0) udp_datagram_example = bytes([src_port >> 8 & 0xFF, src_port & 0xFF, dest_port >> 8 & 0xFF, dest_port & 0xFF]) + \ len(data).to_bytes(2,'big') + checksum.to_bytes(2,'big') + data ``` #### 会话及以上次 从会话到应用之间的 PDUs 并没有统一的标准名称;通常情况下这些高级上的消息可以直接视为应用程序产生的数据单位或者是通过API调用来表示的状态变化指令等形式存在。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值