图解网络OSI模型与TCP/IP
一、OSI模型与TCP/IP
1、OSI模型
OSI/RM(Open System Interconnection,开放系统互联参考模型)是由ISO(国际标准组织)创建的一个有助于开放和理解计算机的通信模型,OSI七层参考模型作为一套规范的标准,在网络世界得到广泛的应用,它把网络结构分为7个层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图所示。

在OSI模型中,每一层具有独立的功能,上下层之间能够完成网络信息的交互,每一层主要功能如下表所示:
表 OSI模型7个层的主要功能
| OSI模型各个层的名称 | 主要功能 |
| 物理层 | 比特流传输 |
| 数据链路层 | 提供介质访问、链路管理等 |
| 网络层 | 路由选路和转发 |
| 传输层 | 建立主机端到端连接和数据传输 |
| 会话层 | 建立、维护和管理会话 |
| 表示层 | 处理数据格式、数据加密等 |
| 应用层 | 提供应用程序接口 |
2、TCP/IP简介
TCP/IP(Transmission Control Protocol/Internet Protocol)协议由美国国防部高级研究计划局研究创立的,它由两个主要的协议TCP和IP而得名。TCP/IP协议是一种工业标准协议组,也称为协议栈,Linux和其他网络操作系统均将它作为标准的协议组。TCP/IP是为在大型的、由异构系统组成的网络通信而设计的一种开放的协议组。在一个基于TCP/IP的网络通讯中,可以根据任务和功能将TCP/IP协议组中的协议分为四个层次。
TCP/IP组中的每个协议都具备各自的功能和完成各自任务。在一次完整的通讯过程中,许多应用程序可能同时发生通讯行为。TCP/IP能够将它区分开来。TCP/IP通过各个协议协同工作完成网络中的两台或多台计算机进程间的通讯。
二.TCP/IP协议组
OSI模型是一种通用的、标准的、理论模型,有人称为“网络世界的法律”。但网络世界中没有一个流行的网络协议完全遵守OSI模型,TCP/IP也不例外,TCP/IP协议组有自己的模型,被称为TCP/IP协议族,在TCP/IP协议中,网络体系结构被分为4层,即:
- 应用层
- 传输层
- 互联网层
- 网络接口层
尽管TCP/IP协议开发工作甚至比OSI模型标准的制定还要早,但与OSI模型体系结构存在着一定的对应关系,其中网络接口层并没有具体的内容实现,TCP/IP协议遵从数据链路层和物理层已有的标准,具体的对应关系如图5.3所示。

1、应用层
定义了TCP/IP应用协议以及处理应用程序的具体细节,应用层是应用程序进入网络的通道。在应用层有许多TCP/IP工具和服务,如:FTP、Telnet、SNMP、DNS等等。
2、传输层
提供主机之间的通讯会话管理,并且定义了传输数据时的服务级别和连接状态。工作在这一层的传输协议在计算机之间提供会话连接的建立,并负责将应用层的数据向IP层传递或IP层的数据向应用层传递。传输层具有两个核心协议,用于提供数据传输的方法:
(1)TCP传输控制协议
传输控制协议(TCP:Transport Control Protocol)是指提供可靠的、面向连接的数据报传递服务。传输控制协议可以确保IP数据报的成功传递,对程序发送的大块数据进行分段和重组,可以确保正确排序以及按顺序传递分段的数据。
通过计算校验和,进行传输数据的完整性检查。为必须使用可靠的基于会话的数据传输的程序,如客户/服务器数据库和电子邮件程序,提供首选方法。
(2)UDP用户数据包协议
UDP是TCP/IP协议栈中传输层次中的另一个传输协议,UDP提供快速的、无连接的、无确认的数据包传输服务。不同于TCP,UDP提供“尽最大努力传递”的无连接数据报服务,不要求确认信息的返回,不保证数据包的有序性以及不提供出错包的重传机制。如果需要可靠的通信,则必须使用TCP协议或通过应用程序本身的纠错机制。UDP常用于网络上的广播和多播通讯。同样,UDP也用于传输少量不重要的数据,例如,广播一组计算机的名字。UDP消息在IP数据报中封装和发送。
3、互联网层
互联网层将上层传下来的数据装入IP数据报,包括用于在主机间以及经过在网络转发数据报时所需用到的源和目标的地址信息,以实现IP数据报的路由。这一层包含四个核心协议:
(1)IP协议(网际协议)
IP是一种无连接的、不可靠的协议,主要用于编址数据包并负责路由数据包。可以将IP看作是TCP/IP协议组中的邮局,从事数据包的存储和转发工作。来自传输层的TCP或UDP数据包以及来自下层(网络接口层)的数据包在IP层中进行地址的标识和路由,最终送往目的地。
每个数据包中都封装有源IP地址和目标IP地址。如果源IP地址和目标IP地址在相同的网段,那么就直接从源发送到目标。如果不是,那么IP就使用一个适当的路由进行发送。IP还将定义数据包的TTL值(生命值),TTL值决定了数据包在网络上的最长传输时间,超时将被丢弃。
提示: IP从事数据包的发送,但对于数据包传输过程中发生的丢失、乱序、重复、破损,IP不会对此做出差错处理,因为差错的处理是高层协议的责任, 如TCP。
(2)ARP(地址解析协议)
地址解析协议把IP地址解析成MAC地址。当一个基于TCP/IP的应用程序需要从一台主机发送数据给另一台主机时,ARP在获得目标主机的IP地址后,然后寻找IP地址到实际MAC地址的映射。当ARP找到了MAC地址后,它就把这个信息传给IP,由IP把包发送出去。ARP在解析MAC地址时,首先查看ARP缓存,如果缓存中有相应的映射存在,则直接使用,反之ARP使用广播来解析MAC地址。
知识: 什么是MAC地址?
计算机中的网卡都要一个48位的物理地址,该地址通常称为MAC地址。网路世界中每个网卡的MAC地址是唯一的,MAC地址只对数据链路层有意义,网络上数据帧的交换依赖于MAC地址。
(3)ICMP(INERNET控制信息协议)
对数据报的传输提供诊断功能以及错误报告,基于IP通信的计算机或路由器通过ICMP就能够检测到错误并交换控制和状态信息。例如ping就是使用ICMP协议来检测是否能够到达目标计算机。
(4)IGMP(INTERNET组管理协议)
IGMP用于管理TCP/IP网络上的IP多播地址,网络接口层模型的最底层是网络接口层,指定如何通过网络物理地址发送或接收数据。例如,直接与网络媒体(如同轴电缆、光纤或双绞铜线)连接的硬件设备如何将比特流转换成电信。
相关文章:
图解网络OSI模型与TCP/IP
一、OSI模型与TCP/IP 1、OSI模型 OSI/RM(Open System Interconnection,开放系统互联参考模型)是由ISO(国际标准组织)创建的一个有助于开放和理解计算机的通信模型,OSI七层参考模型作为一套规范的标准&…...
15分钟学 Python 第31天 :Web Scraping
Day 31:Web Scraping 1. Web Scraping 概述 Web Scraping(网页抓取)是一种自动提取网站数据的技术。它常用于从网页中收集信息,对数据进行分析和处理。无论是获取产品价格、市场调研,还是收集新闻信息,We…...
前端编程艺术(2)----CSS
目录 1.CSS 2.CSS引入 3.选择器 1.标签选择器 2.类选择器 3.id选择器 4.属性选择器 5.后代选择器 5.直接子元素选择器 6.伪类选择器 链接相关 动态伪类 结构化伪类 否定伪类 其他伪类 UI元素状态伪类 4.字体 1.font-family 2.font-size 3.font-style 4.fo…...
前端的全栈混合之路Meteor篇(二):RPC方法注册及调用
在Meteor 3.0中,RPC(远程过程调用)机制是实现前后端数据交互的重要特性。通过RPC,前端可以轻松调用后端方法(Methods)并获取数据,而后端的逻辑也可以同步或异步执行并返回结果。本文将详细介绍M…...
重学SpringBoot3-集成Redis(三)之注解缓存策略设置
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(三)之注解缓存策略设置 1. 引入 Redis 依赖2. 配置 RedisCacheManager 及自定义过期策略2.1 示例代码:自定…...
【C++11】新特性
前言: C11 是C编程语言的一个重要版本,于2011年发布。它带来了数量可观的变化,包含约 140 个新特性,以及对 C03 标准中约600个缺陷的修正,更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化࿰…...
【游戏模组】重返德军总部2009高清重置MOD,建模和材质全部重置,并且支持光追效果,游戏画质大提升
各位好,今天小编给大家带来一款新的高清重置MOD,本次高清重置的游戏叫《重返德军总部2009》2009年发布,我相信很多玩家已经玩过了,如果你还没有玩过我也可以和你简单介绍一下剧情,这款游戏故事背景接续在《重返德军总部…...
CGLib动态代理和JDK动态代理Demo、ASM技术尝鲜
本文主要介绍CGLib和JDK动态代理的使用,不对源码进行深入分析。代码可直接复制使用。 类型 机制 回调方式 适用场景 效率 JDK动态代理 委托机制。代理类和目标类都实现了同样的接口。InvocationHandler持有目标类。代理类委托InvocationHandler去调用目标类原…...
[C++]使用纯opencv部署yolov11-pose姿态估计onnx模型
【算法介绍】 使用纯OpenCV部署YOLOv11-Pose姿态估计ONNX模型是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&#x…...
python you-get下载视频
You-Get是一个使用Python开发的命令行工具,用于下载网络上的音视频资源。你可以通过pip安装You-Get,具体操作如下: 打开命令行工具,输入pip install you-get,然后回车执行命令 You-Get还允许你指定下载的视频格式和质…...
SCUC博客摘录「 储能参与电能市场联合出清:SCUC和SCED模型应用于辅助服务调频市场(IEEE39节点系统)」2024年10月6日
2.1 SCUC模型在本方法中,首先利用SCUC模型确定机组出力计划和储能充放电计划。SCUC模型是电力系统经济调度的重要工具,通过优化发电机组出力计划和调度,实现电力系统的经济性和可靠性。在考虑储能的情况下,SCUC模型需要考虑储能的…...
Git分支-团队协作以及GitHub操作
Git分支操作 在版本控制过程中,同时推进多个任务> 程序员开发与开发主线并行,互不影响 分支底层也是指针的引用 hot-fix:相当于若在进行分支合并后程序出现了bug和卡顿等现象,通过热补丁来进行程序的更新,确保程序正常运行 常…...
力扣刷题 | 两数之和
目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 给定一个整数数组 nums 和…...
[C#]winform部署官方yolov11-obb旋转框检测的onnx模型
【官方框架地址】 https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov11-obb(You Only Look Once version 8 with Oriented Bounding Boxes)是一种先进的对象检测算法,它在传统的Yolov3和Yolov4基础上进行了优化,加…...
【GC日志和OOM日志分析】JVM GC日志和OOM Dump文件分析
1 缘起 充电、充电、充电。 增加一些必备的知识,帮助后续使用。 2 配置JVM参数 为分析GC日志以及OOM相关信息,配置JVM参数,分为三个部分: (1)堆内存,包括年轻代、最大堆内存; &a…...
【电路】1.1 实际电路和电路模型
1.1 实际电路和电路模型 科学理论的研究对象是现实世界背后的抽象世界,如: 数学中的 ∞ \infty ∞,经典力学中“质点”的概念,牛顿运动定律(如惯性定律,如果一个物体不受外力情况下,一直保持匀…...
Vue - 打包部署
vscode找到NPM脚本,点击build。 目录下出现dist目录则表示安装成功。 安装Nginxnginx: download 目录用途conf配置文件目录html静态资源文件目录logs日志文件目录temp临时文件目录 将刚刚打包好的文件放到html目录下。 点击nginx.exe,用localhost:默认…...
spring揭秘25-springmvc03-其他组件(文件上传+拦截器+处理器适配器+异常统一处理)
文章目录 【README】【1】文件上传与MultipartResolver【1.1】使用MultipartResolver进行文件上传【1.2】springmvc处理multipart多部件请求流程【1.3】使用springmvc上传文件代码实现(springmvc6.10版本): 【2】Handler与HandlerAdaptor&…...
springboot项目中属性的使用优先级;maven编译插件切换环境变量
概述 在项目部署时,相关的生产环境和测试环境是分开的,但是代码是同一套; 所以一般会有多套变量; 项目中默认变量(一般是测试环境) 线上变量(线上数据较敏感,一般也不会放在代码中&…...
【Qt】控件概述 (1)—— Widget属性
控件概述 1. QWidget核心属性1.1核心属性概述1.2 enable1.3 geometry——窗口坐标1.4 window frame的影响1.4 windowTitle——窗口标题1.5 windowIcon——窗口图标1.6 windowOpacity——透明度设置1.7 cursor——光标设置1.8 font——字体设置1.9 toolTip——鼠标悬停提示设置1…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
【 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内存模型的介绍 内存模型主要分…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
