【计算机网络】深入解析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,来验证当前的编译环境下&…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...
