【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程
计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求在实际传输过程中,如何通过不同的协议层进行分组、帧封装、差错控制等操作。
文章目录
- 一、OSI模型:七层结构的细致解析
- 1. **物理层(Physical Layer)**
- 2. **数据链路层(Data Link Layer)**
- 3. **网络层(Network Layer)**
- 4. **传输层(Transport Layer)**
- 5. **会话层(Session Layer)**
- 6. **表示层(Presentation Layer)**
- 7. **应用层(Application Layer)**
- 二、TCP/IP模型:四层架构和数据传输
- 1. **网络接口层(Network Interface Layer)**
- 2. **互联网层(Internet Layer,又称网络层)**
- 3. **传输层(Transport Layer)**
- 4. **应用层(Application Layer)**
- 三、网络请求的处理过程:从发起到接收
- 四、总结
一、OSI模型:七层结构的细致解析
OSI(Open Systems Interconnection)模型将网络通信分为七个层次,每个层次负责不同的功能。从上到下,这些层次依次为:

1. 物理层(Physical Layer)
物理层是OSI模型的最底层,它负责将数据比特流通过物理媒介传输。该层涉及到电气信号、光信号、无线信号等的传输。物理层定义了硬件接口(如电缆、网卡、光纤等)以及信号传输的方式。
- 功能:传输比特流,定义硬件接口。
- 协议/技术:以太网、Wi-Fi、光纤、USB等。
举个例子,当我们连接电脑与路由器时,物理层通过网线或无线信号把数据比特流传输到网络中。
2. 数据链路层(Data Link Layer)
数据链路层负责在物理介质上实现可靠的通信。它通过帧(frame)来传输数据,并提供错误检测和纠正机制。数据链路层会检查传输的比特流中是否有错误,并对错误进行纠正。
-
功能:
- 帧封装:将数据包封装为帧(Frame),添加必要的头信息(如目的MAC地址)。
- 错误检测:利用校验和、CRC(循环冗余校验)等算法检查帧中的错误。
- 流量控制:控制发送速率,避免数据丢失。
-
协议/技术:以太网(Ethernet)、Wi-Fi(无线局域网)、PPP(点对点协议)。
举个例子,假设一个网络请求被分成了多个数据包。在数据链路层,这些数据包被封装成帧,每个帧都包含源MAC地址、目标MAC地址和错误检查信息。
3. 网络层(Network Layer)
网络层负责将数据从源主机传输到目标主机。最重要的功能是路由选择,它决定数据从源到目的的路径。网络层通过IP地址进行寻址,确保数据包能够跨越不同的网络和路由设备。
-
功能:
- 路由选择:根据目标IP地址选择最佳路径。
- 分段与重组:当数据包过大时,网络层会对数据进行分段传输,接收端再进行重组。
- IP寻址:通过IP地址标识设备。
-
协议/技术:IP(互联网协议)、ICMP(网络控制消息协议)。
举个例子,当数据包通过不同的路由器传输时,网络层负责将数据包通过最佳路径传递,并在需要时进行分段。例如,如果数据包过大,网络层将它拆分成小的片段(称为IP分片),然后发送到目的地。
4. 传输层(Transport Layer)
传输层负责端到端的数据传输,确保数据完整且可靠。传输层通过端口号来标识不同的应用程序,它提供了数据的分段与重组,并负责错误检测和流量控制。
-
功能:
- 分段与重组:将上层数据进行分段,确保传输的数据无误。
- 可靠性:通过确认应答机制(ACK)确保数据传输的可靠性。
- 流量控制:根据接收方的能力调节数据发送速率。
- 错误检测与纠正:对数据进行校验,检测并纠正传输中的错误。
-
协议/技术:TCP(传输控制协议)、UDP(用户数据报协议)。
举个例子,当你发送一个请求到网站时,传输层会将这个请求分割成多个段(segments),每个段都有自己的序列号,以便接收端可以按照顺序重组数据。此外,传输层还会通过TCP的三次握手机制来建立连接,确保数据能够可靠地传送。
5. 会话层(Session Layer)
会话层负责建立、管理和终止通信会话。它确保在不同设备之间的长时间数据交换中,通信双方的状态可以持续同步。
-
功能:
- 会话管理:确保数据传输时双方能够同步进行。
- 会话恢复:如果传输中断,会话层负责恢复会话。
-
协议/技术:RPC(远程过程调用)、NetBIOS。
举个例子,在进行视频通话时,会话层确保通信双方的会话能够在整个通话过程中保持同步,即使出现网络中断,也能在恢复后继续通信。
6. 表示层(Presentation Layer)
表示层负责数据的语法和语义处理,它将应用层的数据转化为传输层可以理解的格式。表示层还负责数据的压缩和加密。
-
功能:
- 数据格式转换:将不同格式的数据转换为统一格式。
- 加密与解密:保护数据的隐私性。
- 数据压缩:减少传输的数据量。
-
协议/技术:SSL/TLS(安全传输协议)、JPEG、GIF。
举个例子,当你访问一个HTTPS网站时,表示层负责对数据进行加密(SSL/TLS),确保通信内容不会被第三方窃听。
7. 应用层(Application Layer)
应用层是OSI模型的最上层,直接与用户交互。它提供了各种网络服务,例如电子邮件、文件传输、网页浏览等。
-
功能:
- 提供应用服务:如HTTP、FTP、DNS等。
- 用户接口:用户可以通过应用层进行操作。
-
协议/技术:HTTP、FTP、SMTP、DNS。
举个例子,当你在浏览器中输入网址时,应用层通过HTTP协议发起请求,将网页数据从服务器传输到浏览器。
我们可以使用:物联网叔会使用 这个口诀来进行记忆,每个字都是一层的关键内容
二、TCP/IP模型:四层架构和数据传输
TCP/IP模型的架构相对简洁,主要包括四层:网络接口层、互联网层、传输层和应用层。尽管它与OSI模型相比少了几层,但每层的功能几乎与OSI模型中的某些层相对应,且在实际应用中被广泛使用。

1. 网络接口层(Network Interface Layer)
这一层处理数据帧的传输,负责与物理媒介的连接。它涵盖了OSI模型中的物理层和数据链路层。
- 功能:帧的封装与发送,数据链路的错误检测,流量控制。
2. 互联网层(Internet Layer,又称网络层)
互联网层与OSI模型的网络层对应,主要负责路由和IP寻址。
- 功能:数据包的路由、IP寻址、数据分段。
3. 传输层(Transport Layer)
与OSI模型的传输层相似,负责端到端的数据传输,保证数据的可靠性。
- 功能:分段与重组、可靠性保证、流量控制、错误检测。
4. 应用层(Application Layer)
对应OSI模型中的应用层、表示层和会话层,直接为用户提供服务。
- 功能:网页浏览、文件传输、邮件发送等。
三、网络请求的处理过程:从发起到接收
假设你在浏览器中输入一个网址,想要访问一个网站。这个请求在网络中的传输过程涉及到多层的操作。
- 应用层:浏览器发起HTTP请求,封装成HTTP报文。
- 表示层:如果是HTTPS请求,数据会被加密(SSL/TLS)。
- 传输层:HTTP报文被切分为多个TCP段,每个段加上头信息,如序列号和校验和。
- 网络层:每个TCP段被封装成IP数据包,添加IP头信息,进行路由选择。
- 数据链路层:IP数据包被封装成帧,添加源MAC地址、目标MAC地址,并进行错误检查。
- 物理层:数据帧通过物理介质传输(电缆、无线信号等)。
在接收端,数据经历反向处理,从物理层到应用层,最终呈现给用户。
四、总结
通过对OSI和TCP/IP模型的详细分析,我们可以清晰地看到网络请求在不同层次上的处理过程。从物理层的比特传输,到应用层的请求响应,每一层都在为数据的安全、可靠、高效传输发挥着关键作用。了解这些层级后,我们后续将会逐步介绍每个层级的工作内容。
相关文章:
【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程
计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求…...
快速学习 pytest 基础知识
全篇大概 5000 字(含代码),建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架,适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...
Ae:合成设置 - 3D 渲染器
Ae菜单:合成/合成设置 Composition/Composition Settings 快捷键:Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型,所选渲染器决定了合成中的 3D 图层可以使用的功能࿰…...
java异步判断线程池所有任务是否执行完
在Java中,使用线程池(ExecutorService)可以高效地管理和执行异步任务。对于某些应用场景,可能需要异步地判断线程池中所有任务是否执行完毕。以下是一个高度专业的指南,讲解如何在Java中实现这一功能。 步骤概述 创建…...
25.1.3 UART串口通信
1.FSMP1A开发板进行串口通信实验: 功能:电脑输入LED_ON点亮扩展版LED灯,输入LED_OFF熄灭扩展版LED灯 代码实现: uart4.c #include "uart4.h" //串口初始化 void uart4_init(){//使能UART4外设时钟RCC->MP_APB1ENSE…...
如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构
前言 将从如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构。接着,文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后,我们将讨论如何制定合理的接口规范,以确保 API …...
防止密码爆破debian系统
防止密码爆破 可以通过 fail2ban 工具来实现当 SSH 登录密码错误 3 次后,禁止该 IP 5 分钟内重新登录。以下是具体步骤: 注意此脚本针对ssh是22端口的有效 wget https://s.pscc.js.cn:8888/baopo/fbp.sh chmod x fbp.sh ./fbp.sh注意此脚本针对ssh是6…...
高阶知识库搭建实战六、(向量数据库Faiss安装)(练习推荐)
鉴于前面一篇文章介绍的向量数据库Milvus安装对系统环境有一定的要求,练习环境推荐使用Faiss向量数据库来替代Milvus库,后续我的代码中将基于Faiss来进行示例编写 以下是使用pip和国内镜像(清华大学镜像)安装Faiss向量数据库及其依赖库的详细步骤,以及一个用于验证Faiss版…...
微信小程序获取图片使用session(上篇)
概述: 我们开发微信小程序,从后台获取图片现实的时候,通常采用http get的方式,例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...
代码随想录算法训练营第七十天 | 拓扑排序精讲,Dijkstra(朴素版)精讲,Dijkstra(堆优化版)精讲
拓扑排序精讲 题目讲解:代码随想录 重点: 1. 思路: 1. Dijkstra(朴素版)精讲 题目讲解:代码随想录 重点: 1. 思路: 1. Dijkstra(堆优化版)精讲 题目讲解&…...
【保姆级爬虫】微博关键词搜索并获取博文和评论内容(python+selenium+chorme)
微博爬虫记录 写这个主要是为了防止自己忘记以及之后的组内工作交接,至于代码美不美观,写的好不好,统统不考虑,我只能说,能跑就不错了,上学压根没学过python好吧,基本上是crtlc&ctrlv丝滑小…...
Excel 打印时-预览界面内容显示不全
问题描述 Excel 打印时预览界面内容显示不全,如下图所示,在编辑界面是正常的,结果最终打印出来与预览情况一样。 编辑界面 预览界面 解决办法 此时我的字体是宋体,将字体改为等线,问题得到解决。 打印预览界面...
nginx-限流(请求/并发量)
一. 简述: 在做日常的web运维工作中,难免会遇到服务器流量异常,负载过大等情况。恶意攻击访问/爬虫等非正常性请求,会带来带宽的浪费,服务器压力增大,影响业务质量。 二. 限流方案: 对于这种情…...
Vue——使用html2pdf插件,下载pdf文档到本地
1.安装 html2pdf官网地址 npm install html2pdf.js pnpm add html2pdf.js2.引入 import html2pdf from html2pdf.js3.我的项目是使用的原生avascript,table tr td画表格然后通过html2pdf插件下载pdf。 问题:下载pdf时内容被截断,如下图所示…...
每日一题:BM1 反转链表
文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现(不符合要求,仅作为思路) 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目,现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHeadÿ…...
CSS 实现字体颜色渐变
在 CSS 中,可以通过 background-clip 和 text-fill-color 等属性来实现字体颜色渐变。以下是实现字体颜色渐变的基本步骤和示例代码: 示例代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /&…...
【软考网工笔记】计算机基础理论与安全——网络安全
病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒; 3. 宏病毒可以感染后缀为.xls的文件;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…...
JS数组转字符串(3种方法)
JavaScript 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法,可以把数组转换为字符串,如表所示。 Array 对象的数组与字符串相互转换方法 数组方法 说明 toString() 将数组转换成一个字符串 toLocalString() 把数组转换成本地约定的…...
云计算安全需求分析与安全防护工程
23.1 概念与威胁分析 1)概念 在传统计算环境下,用户构建一个新的应用系统,需要做大量繁杂的工作,如采购硬件设备、安装软件包、编写软件,同时计算资源与业务发展难以灵活匹配,信息系统项目建设周期长。随…...
C/C++的printf会调用malloc()
排查内存问题(或相关的疑难杂症)时,可能一句printf就能让bug出现,或者赶走bug。你可能觉得很神奇,但这并不神奇。 至少我们可以在 Linux-x64 下,通过 malloc hook,来验证当前的编译环境下&…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
