当前位置: 首页 > news >正文

【计算机网络】深入解析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模型中的应用层、表示层和会话层,直接为用户提供服务。

  • 功能:网页浏览、文件传输、邮件发送等。

三、网络请求的处理过程:从发起到接收

假设你在浏览器中输入一个网址,想要访问一个网站。这个请求在网络中的传输过程涉及到多层的操作。

  1. 应用层:浏览器发起HTTP请求,封装成HTTP报文。
  2. 表示层:如果是HTTPS请求,数据会被加密(SSL/TLS)。
  3. 传输层:HTTP报文被切分为多个TCP段,每个段加上头信息,如序列号和校验和。
  4. 网络层:每个TCP段被封装成IP数据包,添加IP头信息,进行路由选择。
  5. 数据链路层:IP数据包被封装成帧,添加源MAC地址、目标MAC地址,并进行错误检查。
  6. 物理层:数据帧通过物理介质传输(电缆、无线信号等)。

在接收端,数据经历反向处理,从物理层到应用层,最终呈现给用户。


四、总结

通过对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 图层可以使用的功能&#xff0…...

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(上篇)

概述&#xff1a; 我们开发微信小程序&#xff0c;从后台获取图片现实的时候&#xff0c;通常采用http get的方式&#xff0c;例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...

代码随想录算法训练营第七十天 | 拓扑排序精讲,Dijkstra(朴素版)精讲,Dijkstra(堆优化版)精讲

拓扑排序精讲 题目讲解&#xff1a;代码随想录 重点&#xff1a; 1. 思路&#xff1a; 1. Dijkstra&#xff08;朴素版&#xff09;精讲 题目讲解&#xff1a;代码随想录 重点&#xff1a; 1. 思路&#xff1a; 1. Dijkstra&#xff08;堆优化版&#xff09;精讲 题目讲解&…...

【保姆级爬虫】微博关键词搜索并获取博文和评论内容(python+selenium+chorme)

微博爬虫记录 写这个主要是为了防止自己忘记以及之后的组内工作交接&#xff0c;至于代码美不美观&#xff0c;写的好不好&#xff0c;统统不考虑&#xff0c;我只能说&#xff0c;能跑就不错了&#xff0c;上学压根没学过python好吧&#xff0c;基本上是crtlc&ctrlv丝滑小…...

Excel 打印时-预览界面内容显示不全

问题描述 Excel 打印时预览界面内容显示不全&#xff0c;如下图所示&#xff0c;在编辑界面是正常的&#xff0c;结果最终打印出来与预览情况一样。 编辑界面 预览界面 解决办法 此时我的字体是宋体&#xff0c;将字体改为等线&#xff0c;问题得到解决。 打印预览界面...

nginx-限流(请求/并发量)

一. 简述&#xff1a; 在做日常的web运维工作中&#xff0c;难免会遇到服务器流量异常&#xff0c;负载过大等情况。恶意攻击访问/爬虫等非正常性请求&#xff0c;会带来带宽的浪费&#xff0c;服务器压力增大&#xff0c;影响业务质量。 二. 限流方案&#xff1a; 对于这种情…...

Vue——使用html2pdf插件,下载pdf文档到本地

1.安装 html2pdf官网地址 npm install html2pdf.js pnpm add html2pdf.js2.引入 import html2pdf from html2pdf.js3.我的项目是使用的原生avascript&#xff0c;table tr td画表格然后通过html2pdf插件下载pdf。 问题&#xff1a;下载pdf时内容被截断&#xff0c;如下图所示…...

每日一题:BM1 反转链表

文章目录 [toc]问题描述数据范围示例 C代码实现使用栈实现&#xff08;不符合要求&#xff0c;仅作为思路&#xff09; 解题思路 - 原地反转链表步骤 C语言代码实现 以前只用过C刷过代码题目&#xff0c;现在试着用C语言刷下 问题描述 给定一个单链表的头结点 pHead&#xff…...

CSS 实现字体颜色渐变

在 CSS 中&#xff0c;可以通过 background-clip 和 text-fill-color 等属性来实现字体颜色渐变。以下是实现字体颜色渐变的基本步骤和示例代码&#xff1a; 示例代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /&…...

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒&#xff1b; 3. 宏病毒可以感染后缀为.xls的文件&#xff1b;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…...

JS数组转字符串(3种方法)

JavaScript 允许数组与字符串之间相互转换。其中 Array 方法对象定义了 3 个方法&#xff0c;可以把数组转换为字符串&#xff0c;如表所示。 Array 对象的数组与字符串相互转换方法 数组方法 说明 toString() 将数组转换成一个字符串 toLocalString() 把数组转换成本地约定的…...

云计算安全需求分析与安全防护工程

23.1 概念与威胁分析 1&#xff09;概念 在传统计算环境下&#xff0c;用户构建一个新的应用系统&#xff0c;需要做大量繁杂的工作&#xff0c;如采购硬件设备、安装软件包、编写软件&#xff0c;同时计算资源与业务发展难以灵活匹配&#xff0c;信息系统项目建设周期长。随…...

C/C++的printf会调用malloc()

排查内存问题&#xff08;或相关的疑难杂症&#xff09;时&#xff0c;可能一句printf就能让bug出现&#xff0c;或者赶走bug。你可能觉得很神奇&#xff0c;但这并不神奇。 至少我们可以在 Linux-x64 下&#xff0c;通过 malloc hook&#xff0c;来验证当前的编译环境下&…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; 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文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...