网络分层模型

        网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。

       每一层为上一层提供服务,并为上一层提供一个访问接口或界面。

1.OSI参考模式:OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。 ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。
==》七层:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层(这是一种事实上被TCP/IP 模型淘汰的协议。在当今世界上没有大规模使用。)

2.TCP/IP模型:TCP/IP协议栈是美国国防部高级研究计划局计算机网(ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部赞助的研究网络。最初,它只连接了美国境内的四所大学。随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。最终ARPANET发展成为全球规模最大的互连网络-因特网。最初的ARPANET于1990年永久性地关闭;

==》五层:应用层、传输层、网络层、数据链路层、物理层(早期是四层,后来借鉴OSI的七层参考模型,将网络接口层划分为物理层和数据链路层,形成一个新的五层结构)

HTTP,TCP,UDP等都是网络分层模式中的某一层的协议;

3.Socket (套接字)

Socket 本身不算是协议,它只是提供了一个针对 TCP 或者 UDP 编程的接口。是网络驱动层提供给应用程序的接口或者说一种机制。在计算机网络编程技术中,两个进程或者说两台计算机可以通过一个网络通信连接实现数据的交换,这种通信链路的端点就称为套接字(Socket)

### 计算机网络分层模型详解 #### 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值