一、OSI模型是什么?
OSI模型(Open System Interconnection Reference Model,即开放式系统互联参考模型)是一个计算机网络体系结构模型,是由国际标准化组织(ISO)制定的一个标准框架。
OSI模型将网络通信协议分为7层,每一层都包含着自己的功能与协议。它的主要目的是为了解决网络设备之间的通信问题,使得每个设备都能理解如何在网络中进行通信。
二、OSI模型的优点
OSI模型的主要优点在于,它能够让不同厂商的设备互相通信,由于OSI模型是一个开放式模型,不同厂商都可以按照该模型进行开放式的设计,从而保证了设备之间的互相通信。
三、OSI模型共有几层?
OSI模型分为7层,每层都处理着网络通信中的特定任务,这7层分别是:
- 物理层(Physical Layer)
- 数据链路层(Data Link Layer)
- 网络层(Network Layer)
- 传输层(Transport Layer)
- 会话层(Session Layer)
- 表示层(Presentation Layer)
- 应用层(Application Layer)
四、OSI模型分为几层?
OSI模型的7层可以按照功能划分到以下3个大类中:
- 下层(Physical Layer、Data Link Layer、 Network Layer、 Transport Layer):主要负责数据传输和网络路由的功能。
- 中间层(Session Layer、Presentation Layer):主要负责数据的表示、安全性、语音传输和数据的同步及恢复。
- 上层(Application Layer):为用户提供应用级别的服务,如文件传输、电子邮件、万维网等。
五、OSI模型的七个层次
1.物理层(Physical Layer)
物理层是OSI模型的第一层,也是最底层,它与底层硬件交互,负责精细控制信息的传输方式,包括数据传输的物理媒介、物理特性以及物理连接方式等。物理层与设备硬件相关,它的主要功能是在物理媒介上传输原始数据比特流(1和0)。
物理层主要负责的是
- 传输数据字节流到物理媒介上。
- 定义接口、插头、插口的物理和电气特性
- 定义光缆标准、连接器、网络段距离等
- 通信速率、编码协议等行业或标准规范。
2.数据链路层(Data Link Layer)
数据链路层是OSI模型的第二层,它负责将网络层交下来的数据包封装成帧,并添加在帧头帧尾的标记,并完成与物理层的交互。数据链路层的主要目的是提供可靠且有序的数据传输服务。
/* 格式化成帧结构,文件头+帧头+帧内容+帧尾+文件尾*/ public class Frame { public FrameHeader frameHeader; public byte[] frameData; } //为每个帧添加帧头和帧尾 public class FrameHeader{ private byte[] head; private byte[] tail; private int length; private int crc; }
3.网络层(Network Layer)
网络层是OSI模型的第三层,其主要目标是向数据添加源和目的地址,以便向目标地址发送数据。网络层可以为每个数据包添加服务类型,例如语音或数据。
网络层有多种功能:
- 路由选择和地址解析,寻找最优的传输路径,保证信息的正确快速传输
- 对网络拥塞情况和数据包优先级进行控制,降低丢包率
- 数据隔离与安全性防护,加强网络数据安全性,识别数据包中拥有的安全权限。
4.传输层(Transport Layer)
传输层是OSI模型的第四层,它的主要作用是将数据从一个应用程序传输到另一个应用程序。传输层可以通过可靠的端到端数据传输和流控制来提供可靠的数据传输。
/* 建立TCP连接 */ ServerSocket server = new ServerSocket(port); Socket socket = server.accept(); Socket client = new Socket(host, port); /* 传输数据 */ InputStream inputStream = socket.getInputStream(); OutputStream outputStream = server.getOutputStream(); outputStream.write(messageBytes); outputStream.flush();
5.会话层(Session Layer)
会话层是OSI模型的第五层,它主要负责在不同计算机之间建立、管理和终止会话。会话层可以通过使用不同的认证方式、加密算法、会话控制协议以及其他机制来确保数据的保密性和完整性。
6.表示层(Presentation Layer)
表示层是OSI模型的第六层,它负责将数据从计算机内部表示转换为网络可传输的格式。
在表示层中可以实现以下功能:
- 数据传输的加密、解密和压缩。
- 数据格式的转换和编码解码,提高通信效率和数据传输速度。
7.应用层(Application Layer)
应用层是OSI模型的第七层,它是与最终用户进行交互的最上层。应用层的主要任务是向用户提供网络服务,例如电子邮件、文件传输和终端仿真等。
/* JAVA中的Socket网络编程 */ public class SocketClient { private static final int PORT = 8877; private static final String HOST = "localhost"; public static void main(String[] args) throws IOException { Socket socket = null; PrintWriter out = null; BufferedReader in = null; socket = new Socket(HOST, PORT); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String message = "Hello World!"; out.println(message); System.out.println("Client: " + message); String response = in.readLine(); System.out.println("Server: " + response); } }