网络四层模型和七层模型的区别
网络四层模型(TCP/IP 模型)和七层模型(OSI 模型)的核心差异体现在分层数量、起源目的及实际应用场景:四层模型是实际互联网使用的简化标准,七层模型是理论化的通用参考框架。
1. 核心定义与起源
对比维度 | 四层模型(TCP/IP 模型) | 七层模型(OSI 模型) |
---|---|---|
起源背景 | 源于 20 世纪 60 年代美国军方 ARPANET 项目,从实际网络通信需求中演化而来 | 由国际标准化组织(ISO)1984 年制定,为统一全球网络通信标准而生 |
设计导向 | 实用导向:以 “解决真实网络通信问题” 为核心,不追求理论完美,优先保证效率与可实现性 | 理论导向:以 “标准化、通用性” 为核心,试图统一不同厂商设备的兼容性,侧重框架完整性 |
分层数量 | 4 层(简化设计,合并冗余功能) | 7 层(细粒度拆分,每层职责单一) |
2. 分层结构对比
四层模型通过 “合并关联层” 简化架构,将七层模型的 7 层整合为 4 层,具体对应关系如下:
四层模型(TCP/IP) | 核心功能 | 对应七层模型(OSI) | 核心功能 |
---|---|---|---|
应用层 | 提供具体应用服务,整合 “应用 + 表示 + 会话” 功能(如 HTTP、FTP、DNS、SMTP) | 应用层 | 为应用程序提供交互接口(如浏览器、邮件客户端的调用接口) |
表示层 | 处理数据格式(加密、压缩、编码,如 SSL、JPEG、JSON 解析) | ||
会话层 | 建立、维护、终止终端间通信会话(如会话超时控制、连接断开重连) | ||
传输层 | 端到端数据传输,负责可靠性 / 不可靠性控制(如 TCP 可靠传输、UDP 不可靠传输) | 传输层 | 端到端数据传输,管理端口与流量控制(如 TCP 的三次握手、UDP 的无连接传输) |
网络层 | 路由选择与 IP 寻址,负责跨网络数据转发(如 IP 协议、路由器转发逻辑) | 网络层 | 路由选择与逻辑地址处理,确定数据传输路径(如 IP 地址、ICMP 差错控制) |
网络接口层 | 整合 “数据链路 + 物理层” 功能,负责物理硬件通信(如网卡、MAC 地址、网线传输) | 数据链路层 | 物理地址(MAC)管理与帧传输,处理链路错误(如交换机的 MAC 地址表) |
物理层 | 物理介质传输,定义电信号、接口标准(如网线类型、无线频段、电压规范) |
3. 实际应用差异
- 实际应用差异
-
四层模型:是互联网的“实际运行标准”,所有网络设备(路由器、交换机)和协议(TCP、IP、HTTP)均基于此设计,直接落地使用。
-
七层模型:更多用于“理论教学和问题排查”(如分析网络故障时,按七层逐一定位),实际中没有完全符合七层模型的设备或协议。
总结:
设计目的不同:OSI 是 ISO 制定的 “理论参考框架”,目标是统一设备兼容性;TCP/IP 是源于实际需求的 “实用标准”,直接支撑互联网通信。
分层结构不同:OSI 分 7 层(细粒度,如单独有表示层管加密、会话层管连接);TCP/IP 简化为 4 层,合并了 OSI 的冗余层(如 “应用 + 表示 + 会话” 合并为应用层)。
实际用途不同:OSI 几乎不落地,多用于教学和故障排查(如逐层定位网络问题);TCP/IP 是互联网事实标准,日常用的 HTTP、IP、路由器都基于它工作。 |
浏览器请求一个网址的过程?
当在浏览器输入一个网址,就在应用层根据http协议生成一个请求报文,
在浏览器会通过DNS服务器将域名解析为ip地址,
然后通过socket套接字调用操作系统的协议栈就到了传输层,在传输层给TCP加上TCP头部(主要包含源端口和目的端口),
网络层添加IP头部(主要加上源ip地址,目的IP地址),
数据链路层(把这个ip的数据包)添加以太网头部(主要加上源MAC地址,目的MAC地址),然后打包成一个以太网真正能传输的数据包,数据经路由器,交换机转发最终到了服务器。
服务器收到了这个数据包,在每一层拆掉对应的报文头部,得到了请求的数据进行处理,形成响应内容。
在生成一个响应报文,这个响应报文再通过相同的过程传送给浏览器,浏览器进行解析得到我们看到的内容。
具体:
- 域名解析(找 IP):浏览器先查本地 DNS 缓存,若没有就向 DNS 服务器发送请求,把域名(如www.xxx.com)解析成服务器的 IP 地址(如 192.168.1.1),确定 “要发给谁”。
- 建立 TCP 连接(三次握手):解析出 IP 后,浏览器通过 Socket 调用系统协议栈,在传输层与服务器建立 TCP 连接(三次握手确认双方通信能力),同时确定源端口(浏览器随机分配)和目的端口(如 HTTP 默认 80、HTTPS 默认 443)。
- 发起 HTTP 请求(应用层封装):连接建立后,浏览器在应用层按 HTTP 协议生成请求报文(包含请求头、请求体,比如 “GET /index.html”),并将报文往下传递。
- 数据分层封装(往下传):
- 传输层:给请求报文加 TCP 头部(源 / 目的端口),变成 TCP 段;
- 网络层:加 IP 头部(源 / 目的 IP),变成 IP 数据包;
- 数据链路层:加以太网头部(源 / 目的 MAC 地址),变成可在物理网传输的帧,通过网线 / 无线发给路由器、交换机,最终传到服务器。
- 服务器处理并响应:服务器接收帧后,从下往上逐层拆包(拆以太网头→IP 头→TCP 头),拿到 HTTP 请求,处理后生成响应报文(含状态码、响应内容),再按同样的分层封装流程,把响应发回浏览器。
- 浏览器渲染页面:浏览器接收响应后,拆包拿到 HTML、CSS、JS 等资源,解析并渲染,最终呈现出我们看到的网页;若 TCP 连接不再用,会通过四次挥手断开。