网络分层模型

OSI七层模型(物数网传会表应)

在这里插入图片描述

  1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
  2. 数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1
  3. 网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
  4. 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
  5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
  6. 表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
  7. 应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

TCP/IP四层模型(网网传应)

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(又叫网络接口层)(Link)四层

参考:https://www.cnblogs.com/clamp7724/p/12123545.html

### 计算机网络分层模型详解 #### OSI 七层模型概述 OSI 参考模型是一个概念框架,用于理解和标准化不同类型的通信系统之间的互操作性。该模型分为七个层次,每一层负责特定的功能并提供服务给上一层[^1]。 - **物理层 (Layer 1)**:定义了硬件连接的标准,包括电压电平、线缆规格以及接头形状等。 - **数据链路层 (Layer 2)**:处理节点间的数据帧传输,并管理错误检测与纠正机制。 - **网络层 (Layer 3)**:决定最佳路径来发送包,涉及路由选择算法。 - **传输层 (Layer 4)**:确保端到端可靠交付消息流,支持流量控制功能。 - **会话层 (Layer 5)**:建立、管理和终止应用程序间的对话。 - **表示层 (Layer 6)**:转换数据格式以便于接收方解读;加密解密也是在此完成。 - **应用层 (Layer 7)**:直接面向用户提供各种高级别服务,比如HTTP、FTP等协议均位于此层面。 #### TCP/IP 四层模型解析 相比之下,TCP/IP 模型更为简洁实用,在实际互联网环境中得到了广泛应用。它同样划分成四个主要部分: - **网络接口层**:对应 OSI 的物理层和数据链路层,关注如何通过底层媒介传送比特序列。 - **网际互联层(即网络层)**:类似于 OSI 中的第三层,专注于逻辑地址分配及寻址过程中的细节工作,如IP编址方案。 - **传输层**:提供了两种不同的传输方式——UDP无连接不可靠的服务形式,还有TCP面向连接且可靠的传递方法。 - **应用层**:集成了多个高层协议和服务程序,涵盖了从Web浏览到电子邮件等多种用途的应用实例[^2]。 #### 对比分析 尽管两者都旨在促进异构系统的互联互通,但在具体实现上有显著差异: - 结构复杂度方面,OSI 更加细致入微地拆分职责范围,而 TCP/IP 则采取更紧凑的设计思路; - 实施灵活性角度出发,后者由于其简单性和高效性能成为事实上的工业标准; - 功能覆盖面上看,虽然 OSI 提供了一个理想化的视角,但很多特性并未得到充分实践验证,反而是基于 TCP/IP 构建起来的真实世界网络证明了自己的价值所在[^3]。 ```python # Python代码示例展示简单的套接字编程,体现了TCP/IP四层模型中的一部分原理 import socket def create_tcp_server(host='localhost', port=8080): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((host, port)) server_socket.listen(5) while True: client_conn, addr = server_socket.accept() data = client_conn.recv(1024).decode('utf-8') print(f"Received message from {addr}: {data}") create_tcp_server() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺平程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值