OSI七层网络参考模型
一、物理层
我们要发送出去的数据在计算机里只不过是无数的0和1,0或1就叫做比特,物理层就是把这些比特用不同的媒介传输出去,可以用电、光或者其他形式的电磁波来表示和传输信号,数据从网络接口出去以后,会经过不同的网络拓扑,并不是一条线走到底,因此需要中继器和集线器这样的设备,但还是不够,信号要去到哪台设备是需要定向的,因此需要高级点的数据网络模型。
二、数据链路层
在数据链路层这里,比特会被封装成帧,帧就是这一层表示数据的特殊名字而已,在封装的时候会加上MAC地址,也就是物理地址,网卡出厂的时候就有着全球唯一的MAC地址,为了可以通过MAC地址对不同设备进行数据的传输,就出现了交换机,比方说这里有一台交换机,连接多台主机,发送端发送数据的时候,交换机就知道了发送端的MAC地址,如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去了,物理地址就是这样一跳一跳的进行传递,另外因为物理层在传输0和1的时候,可能会0变成1或者1变成0,会进行差错检测,以及一定的差错纠正,另外设备之间的传输能力以及接受能力也是个问题,很可能这边喷水式发送,另一边”夹缝“式接受,因此需要流控制来避免这种不对称,我们知道互联网是一张大网,如果用MAC物理地址作为唯一的寻址方式是不科学的,比如我和你买了同一个厂出的网卡,我和你的网卡如果差别就只有一个字母,但是物理地址相距十万八千里,物理地址此时就很难做出快速定位,就相当于我知道你的名字,但不知道你住哪里,找不到你,因此需要ip地址来进行寻址和路由选择,IP这样的逻辑地址就是实现端到端的基础了,而不是物理地址那样跳到跳传输。
三、网络层
说到路由选择,也就是说路由器也是网络层的核心,包就是网络层里数据的名字,在封装为二层的帧之前就是包,路由器根据包里的IP地址进行路由转发,地址管理和路由选择就是这一层的核心,虽然有MAC和IP地址可以抵达对方主机,但是对方主机可能运行这无数多个软件进程,假设我用 谷歌和火狐浏览器同时登陆网站,如何让数据去到指定的软件服务上,就需要用到端口号作为地址来定位了,比如客户端这里生成不同的端口号,即使同时访问HTTP端口号80也是没问题的,根据不同的源端口号来做出响应就可以了。
四、传输层
所以传输层在网络层端到端的基础上,实现了服务进程到服务进程的传输,段就是传输层里数据的名字,在封装为3层包之前的就是段,传输层管理两个节点之间的数据的传输,负责可靠传输和不可靠传输,也就是大家熟知的协议TCP和UDP,其中TCP允许应用把字节流变成多份段,而不是整个字节数据完整的发送出去,传输层还有流量控制来确保传输速度,再加上错误控制来进行数据完整的接收。
五、会话层
会话层比如说现在登录了某个网站,网站服务可以保持你的登录状态,不用每次都输入账号和密码,当然网站服务会管理和控制登陆状态,另外会话层还负责同步服务,比方说上次看电影中途退出了,再次登录账号时候,就可以自动同步到上次看到的时间段。
六、表示层
不同计算机内部的各自表达方式可能不太相同,表示层就来负责这样的转换,也就是编码和解码,数据往往还需要进行加密,比方说HTTPS就会对我们的数据进行加密和解密,另外我们还需要给文件瘦身,压缩也是这一层负责的。
七、应用层
应用层表示层和会话层的数据统称为应用数据,或者应用负载,也可以叫上层数据,同时也是教科书上说的报文,数据在各层的名字分别是,报文、段、包、帧和比特,就地址来说,有端口号,IP逻辑地址和MAC物理地址,就传输功能来讲,有服务进程到服务进程,端到端,还有跳到跳。
总结
了解了各层的作用,就可以把各层之间联系起来,客户端要发送数据,也就是报文,报文来到传输层就,加上端口号,封装成段,段来到网络层封装成包,注意这里的包是包含有目标IP地址的,毕竟你要知道数据要发送到什么地方,但因为目标IP地址不是同一个网络下的,要发送到其他的网络,就需要经过默认网关,现在就出现了一个问题,客户端主机最初并不知道默认网关的MAC地址,没有办法封装成帧,这个时候就可以用ARP协议进行广播,找到网关IP对应的MAC地址,把包封装成帧,源MAC地址填自己的,目标MAC地址填广播地址,假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去”人手一份“,所以默认网关收到消息后,查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机,同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,默认网关就这样做出响应,这样原路返回,发送端就知道默认网关的MAC地址了,现在就可以封装成帧,并且传输数据,比特流到了默认网关的时候,解封为帧发现是发送给自己的,再解封为包查看到目标IP地址是在另一个网络中的,就会进行路由转发,最终到达目的网络,如果目标网关知道目标IP地址和MAC地址是哪台主机封装成帧就可以直接发送过去了,如果不知道也还是可以用ARP广播下就好了,目标主机收到包确认是自己的IP地址以后,解封查看段可以发现源和目标端口号,用目标端口号给到指定的应用程序,应用程序处理好以后,就可以按照源的信息做出响应,回去的原理也是一样的。
相关文章:

OSI七层网络参考模型
一、物理层 我们要发送出去的数据在计算机里只不过是无数的0和1,0或1就叫做比特,物理层就是把这些比特用不同的媒介传输出去,可以用电、光或者其他形式的电磁波来表示和传输信号,数据从网络接口出去以后,会经过不同的网…...

RAG与知识库搭建
Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时&…...

MySQL提权之UDF提权
1、前言 最近遇到udf提权,几经周折终于搞懂了。感觉挺有意思的,渗透思路一下子就被打开了。 2、什么是udf提权 udf 全称为user defined function,意思是用户自定义函数。用户可以对数据库所使用的函数进行一个扩展(windows利用…...
【设计模式】结构型设计模式之 组合模式
介绍 这里的组合模式,与之前的设计模式中的"组合关系"完全是两码事,这里的组合模式主要用来处理结构为树形的数据。 组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树状结构来表示…...

我给KTV服务生讲解防抖,他竟然听懂了
端午节三天假期,的最后一天,我和朋友闲来无事,想着去唱会儿歌吧,好久不唱了,于是吃了午饭,石景山就近找了一家KTV,我们团好了卷就过去了。 装修还算不错,很快找到服务生,…...
抽象java入门1.3.1
前言: 本期内容是为了更好补充关于方法(函数)的定义 开始: 函数(function)表示每个输入值对应唯一输出值的一种对应关系。 核心在于:输入值和输出值这两个元素 真的吗? 错&…...

使用Rufus工具制作Ubuntu To Go——很详细
一、准备工作 准备工具: 1、下载Rufus(主角)软件 2、准备一个U盘(制作启动盘,32G足够) 3、准备一个U盘或硬盘(小白128G足够,装Ubuntu系统) 4、下载Ubuntu系统镜像文件 1、下载软件Rufus 先来看…...

Android Jetpack Compose 实现一个电视剧选集界面
文章目录 需求概述效果展示实现思路代码实现总结 需求概述 我们经常能看到爱奇艺或者腾讯视频这类的视频APP在看电视剧的时候都会有一个选集的功能。如下图所示 这个功能其实很简单,就是绘制一些方块,在上面绘制上数字,还有标签啥的。当用户…...
C++多线程并发
文章目录 C多线程并发std::chronoC中的多线程:std::thread主线程等待子线程结束:join主线程分离子线程:detach异步:std::async异步的另一种用法:std::launch::deferredstd::async的底层实现:std::promisest…...

新火种AI|摊上事儿了!13名OpenAI与谷歌员工联合发声:AI失控可能导致人类灭绝...
作者:小岩 编辑:彩云 2024年,OpenAI的CEO Sam Altman就没有清闲过,他似乎一直走在解决麻烦的路上。最近,他的麻烦又来了。 当地时间6月4日,13位来自OpenAI和Google Deep Mind的现任及前任员工联合发布了…...
Web前端后端精通:深度解析与技能进阶
Web前端后端精通:深度解析与技能进阶 在数字时代的浪潮中,Web前端后端技术的精通成为了信息科技领域的核心竞争力。本文将从四个方面、五个方面、六个方面和七个方面深入探讨Web前端后端技术的精髓,带领读者领略这一领域的魅力与挑战。 一、…...

【C语言】09.函数递归
递归其实是⼀种解决问题的方法,在C语言中,递归就是函数自己调用自己。 一、递归的介绍 1.1递归的思想 把⼀个大型复杂问题层层转化为⼀个与原问题相似,但规模较小的子问题来求解;直到子问题不能再被拆分,递归就结束…...

php高级之框架源码、宏扩展原理与开发
在使用框架的时候我们经常会看到如下代码 类的方法不会显示地声明在代码里面,而是通过扩展的形式后续加进去,这么做的好处是可以降低代码的耦合度、保证源码的完整性、团队开发的时候可以分别写自己的服务去扩展类,减少代码冲突等等。我自己…...

(2024,示例记忆,模型记忆,遗忘,差分评估,概率评估)深度学习中的记忆:综述
Memorization in deep learning: A survey 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0 摘要 1 引言 0 摘要 深度神经网络(DNNs)驱动的深度学习ÿ…...

硬件产品经理
边端协调管理平台 主页一:模型管理1.1 边侧模型管理 二:配置管理2.1 终端软件配置管理 三:设备管理3.1 区域位置管理3.2 工控机管理(其实就是围绕授权)3.3 生产设备管理3.4 设备运行管理 四:数据服务4.1 实…...
AES加密、解密工具类
1、AES加密、解密工具类 这篇文章,主要记录一下AES加密、解密的工具类代码,在需要使用的时候,直接复制黏贴即可。 package com.gitcode.pms.common.util;import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.crypto.Cipher; import javax.crypto.spec.…...

普通人想要自学ai,该如何入手,看完这篇你就懂了,零基础教程!
学会了AIGC之后,我只想说:无敌是多么寂寞? 之前我整理一篇会议记录起码要2小时。现在交给AI ,5分钟搞定; 之前整理账目总是出错,现在利用AI财务整合器,轻松解决统计难题; 之前写个…...
Less的简单总结
Less 是一个开源的 CSS 预处理器,它扩展了 CSS 语言,增加了变量、嵌套规则、运算符、函数等特性,使编写 CSS 更加高效、灵活且易于维护。下面是对 "Less" 的一个总结文档: 简介 名称:Less(通常表…...
Android:UI:Drawable:View/ImageView与Drawable
文章目录 在View/ImageVIew中显示DrawableDrawable对View的更新操作在View/ImageVIew中显示Drawable API View.setBackground(Drawable) ImageView.setImagDrawable(Drawable) 源码分析 View.mBackground在View.draw(Canvas)中绘制,调用Drawable.draw(Canvas) ImageView.m…...

网络安全实验BUAA-全套实验报告打包
下面是部分BUAA网络安全实验✅的实验内容 : 认识路由器、交换机。掌握路由器配置的基本指令。掌握正确配置路由器的方法,使网络正常工作。 本博客包括网络安全课程所有的实验报告:内容详细,一次下载打包 实验1-路由器配置实验2-AP…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...

C++--string的模拟实现
一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...