互联网数据传输原理 |OSI七层网络参考模型

news2024/11/18 1:24:31

网络模型

在这里插入图片描述

OSI 网络参考模型,仅作为参考,也就是说OSI网络实际中并不使用。我们只是把OSI网络模型作为参考,在网络出现问题的时候,可以从一个宏观的整体去分析和解决问题。而且搭建网络的时候也并不一定需要划分为7层

但是当今互联网广泛使用的是TCP/IP网络模型,他原本是四层,实际上划分为五层更符合实

OSI模型的目的:解决主机之间的网络通讯

各层的作用

例子:华为电脑用浏览器访问苹果电脑搭建的网站。两个应用具体需要如何进行交互就是应用层的事情了。应用层并不是说你需要使用什么应用程序,而是应用如何沟通。常用的应用层协议HTTP协议,使得应用之间可以实现沟通。

在这里插入图片描述

应用层就是最接近用户的那一层。但是应用层只不过是逻辑上把两个应用连通,实际物理上的连通是需要物理层的。我们要发送出去的数据在计算机里只不过是无数的0和1,0或者1就叫做比特。物理层就要把这些比特用不同的媒介传输出去。

在这里插入图片描述

可以用电,用光或者其他形式的电磁波来表示和传输信号。数据从网络接口出去以后会经过不同的网络拓扑。

在这里插入图片描述

并不是一条线走到底,因此需要中继器和集线器这样的设备。

在这里插入图片描述

但还是不够,信号要去到哪台设备是需要定向的。因此需要高级一点的网络模型,在数据链路层这里,比特会被封装成

在这里插入图片描述

帧就是这一层表示数据的特殊名字而已。在封装的时候会加上MAC地址,也就是传说中的物理地址。网卡出厂的时候就有着全球唯一的MAC地址。

在这里插入图片描述

为了可以通过MAC地址对不同设备进行数据的传输,就出现了交换机。这里说的是二层交换机。

在这里插入图片描述

比方说这里有一台交换机,连接多台主机。

在这里插入图片描述

发送端发送数据的时候,交换机就知道了发送端的MAC地址。如果此时交换机也知道接收端的MAC地址,就可以把数据直接发送过去了。物理地址就是这样一跳一跳地进行传递

在这里插入图片描述

另外因为物理层在传输0和1的时候,可能会0变成1,或者1变成0。会进行差错检测以及一定的差错纠正。

在这里插入图片描述

另外设备之间的传输能力以及接受能力也是个问题,很可能这边“喷水”式传输,另一边“夹缝式”接受。因此需要流控制来避免这种不对称。

在这里插入图片描述

我们知道互联网是一张大网,如果用MAC物理地址来作为唯一的寻址方法是不科学的。

比如我和你买了同一个厂的网卡,我和你的网卡差别只有一个字母。

在这里插入图片描述

但是我和你距离十万八千里,物理地址此时就很难做出快速定位。

在这里插入图片描述

相当于我有你的名字,但不知道你住哪里,找不到你。因此需要IP地址来进行寻址路由选择。IP这样的逻辑地址就是实现端到端的基础了,而不是物理地址那样的跳到跳传输。

在这里插入图片描述

说到路由选择,也就是说路由器也是网络层的核心。

在这里插入图片描述

就是网络层里数据的名字。在封装为二层的帧之前就是包。

在这里插入图片描述

路由器根据包里IP地址进行路由转发。

在这里插入图片描述

地址管理和路由选择就是这一层的核心。虽然有MAC和IP地址可以抵达对方主机,但是对方主机可能运行着无数多个软件进程。假设我用谷歌和火狐浏览器同时登录网站,如何让数据去到指定的软件服务上,就需要用到端口号作为地址来定位了。比如客户端这里生成不同的端口号。

在这里插入图片描述

即使同时访问HTTP端口80也是没问题的,根据不同的源端口号来作出响应就可以了。所以传输层(运输层)在网络层的端到端基础上,实现了服务进程到服务进程的传输就是传输层里数据的名字。

在这里插入图片描述

传输层管理两个节点之间数据的传输,负责可靠传输不可靠传输,既TCP UDP

在这里插入图片描述

其中TCP允许应用把字节流变成多份段,而不是整个字节数据完整地发送出去。

在这里插入图片描述

传输层还有流量控制来确保传输速度,再加上错误控制来进行数据完整的接收。

在这里插入图片描述

接下来会话层也比较好理解。比方说你现在登录了某个网站,网站服务可以保持你的登录状态,不用每次都输入账号和密码。当然网站服务会管理和控制登录状态。

在这里插入图片描述

另外会话层还负责同步服务。比方说你上次看到电影高潮的时刻突然停电了,再次登录账号的时候就可以自动同步岛上次看到的时间段。

在这里插入图片描述

不同计算机内部的各自表达方式可能不太相同。表示层就来负责这样的转换,也就是编码解码

在这里插入图片描述

数据往往还需要进行加密,比方说HTTPS( SSL/ TLS)就会对我们的数据进行加密和解密。

在这里插入图片描述

另外我们可能还需要给文件瘦身,压缩也是这一层负责的。

在这里插入图片描述

应用层,表示层和会话层的数据统称为应用数据或者应用负载也可以叫上层数据。同时也是教科书上说的报文。

数据在各层的名字分别是:报文比特

在这里插入图片描述

就地址来说:有端口号IP逻辑地址MAC物理地址

在这里插入图片描述

就传输功能来讲:有服务进程到服务进程端到端跳到跳

在这里插入图片描述

数据流通过程

客户端要发送数据,也就是报文。报文来到传输层加上端口号,封装成段。段来到了网络层,加上IP地址,封住成包。注意这里的包是含有目标IP地址的,毕竟你要知道数据要发送到什么地方。

在这里插入图片描述

但因为目标IP地址不是同一个网络下的,要发送到其他的网络就需要经过默认网关。现在就出现了一个问题,客户端主机最初并不知道默认网关的MAC地址,没有办法封装成帧。这个时候就可以用ARP协议进行广播,找到网关IP对应的MAC地址把包封装成帧。

网关:计算机的网关(Gateway)就是到其他网段的出口,也就是路由器接口IP地址

ARP协议:即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址

源MAC地址填自己的,目标MAC地址填广播地址。假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去“人手一份”。

在这里插入图片描述

所以默认网关收到消息后查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机。同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,默认网关就这样做出响应。这样原路返回,发送端就知道默认网关的MAC地址了。

在这里插入图片描述

现在就可以封装成帧,并且发送数据。

在这里插入图片描述

比特流到了默认网关的时候,解封为帧发现是送给自己的,那解封为包查看到目标IP地址是在另一网络中的,就会进行路由转发,最终到达了目的网络。如果目标的网关知道目标IP地址和MAC地址是哪台主机,封装成帧就可以直接发送过去了。

在这里插入图片描述

如果不知道也还是可以用ARP喊下街就好。目标主机收到包确认是自己的IP地址以后,解封查看段可以发现源和目标端口号,用目标端口号给到指定的应用程序。应用程序处理好以后,就可以按照源的信息做出响应。回去的原理也是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1303076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向AOP(2)spring

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

C语言使用malloc函数模拟开辟二维数组(带分析)

系列文章目录 🌟 个人主页:古德猫宁- 🌈 信念如阳光,照亮前行的每一步 文章目录 系列文章目录🌈 *信念如阳光,照亮前行的每一步* 当我们使用malloc函数来模拟创建一个二维数组时,我们需要理解…

VBA信息获取与处理:在EXCEL中随机函数的利用

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

Caching the Application Engine Server 缓存应用程序引擎服务器

Caching the Application Engine Server 缓存应用程序引擎服务器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 应用程序引擎…

客服工单系统推荐:哪个最适合您?

客服工单系统是企业的业务过程的“保安”,保障业务流程的顺利开展,同时保障企业客户的权益。所以,市场上有越来越多的企业纷纷配置了客服工单系统,以提供客户服务质量。 对于有购买意向的中小企业来讲,需要关注哪些因…

OpenKylin安装idea

Web和客户端都支持Linux了,一个为了Linux上调试程序方便,一个为了把开发环境彻底支持Linux,在Linux上安装idea运行代码,之前剔除Maven那些的优点就来了,在OpenKylin上我只要安装idea和jdk就能正常运行代码了。 首先从…

小程序嵌套H5

小程序嵌套H5 使用Hbuild x开发H5页面项目里面使用了js-sdk工具包H5发布完成之后生成URL。新建一个小程序空项目,填写小程序的appid。本地调试的时候如果报错无法打开该网页,那么需要勾选先的不校验。发布体验版本需要注意下面的两个配置点。 使用Hbuild…

CV计算机视觉每日开源代码Paper with code速览-2023.12.6

点击计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构:Transformer】Rejuvenating image-GPT as Strong Visual Representation Learners 论文地址:https://a…

你好!堆排序【JAVA】

目录 1.简单介绍 2.大小顶堆 3.基本思想 4.基本思路 4.代码实现数组转化堆 5.代码排序 6.总代码测试 1.简单介绍 堆排序是一种基于堆数据结构的排序算法,其核心思路是利用堆这种特殊的数据结构来对数据进行排序。堆是一种完全二叉树,并且满足父节…

建筑可视化数据大屏汇总,UI源文件(PC端大屏设计)

酷炫的大屏设计让数据更好的展现,方便业务人员分析数据,辅助领导决策。现在分享大屏Photoshop源文件,以下为部分截图示意。 划重点:文末可获得完整素材包~ 01 科技建筑平台数据可视化 02 建筑公司可视化数据汇总平台 03 深蓝…

算法Day27 身材管理(三维背包)

身材管理(三维背包) Description Input Output Sample 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt(); // 输入n的值int money sca…

TrustZone之完成器:外围设备和内存

到目前为止,在本指南中,我们集中讨论了处理器,但TrustZone远不止是一组处理器功能。要充分利用TrustZone功能,我们还需要系统其余部分的支持。以下是一个启用了TrustZone的系统示例: 本节探讨了该系统中的关键组件以及它们在TrustZone中的作用。 完成器:外围设备…

Docker创建镜像的方式---Dockerfile

Dockerfile可以创建自定义镜像。包括配置文件,挂载点,对外暴露的端口,设置环境变量。 Docker创建镜像的方式 1、 基于已有镜像创建:根据官方提供的镜像源,创建镜像。然后拉起容器。是一个白板智能提供基础的功能&…

【收获】成长之路

目录 一、前言二、计算机方面三、专业知识方面四、总结 一、前言 四年,对于一个人的成长来说,是一个相当重要的阶段。在这段时间里,我经历了许多挑战、收获了许多成就,也在不断地成长和改变。回首这四年的点点滴滴,我深…

mybatis多表映射-延迟加载,延迟加载的前提条件是:分步查询

1、建库建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

牛客网(二叉树)

https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking 这个题目和leetcode比起来就是有一些不一样,需要我们自己来写接口函数,所以…

Linux系统编程(一):基本概念

参考引用 Unix和Linux操作系统有什么区别?一文带你彻底搞懂posix Linux系统编程(文章链接汇总) 1. Unix 和 Linux 1.1 Unix Unix 操作系统诞生于 1969 年,贝尔实验室发布了一个用 C 语言编写的名为「Unix」的操作系统&#xff0…

鸿蒙原生应用/元服务开发-Stage模型能力接口(二)

ohos.app.ability.AbilityConstant (AbilityConstant)一、说明 AbilityConstant提供Ability相关的枚举,包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口…

stm32学习总结:3、Proteus8+STM32CubeMX+MDK很有搞头

stm32学习总结:3、Proteus8STM32CubeMXMDK很有搞头 文章目录 stm32学习总结:3、Proteus8STM32CubeMXMDK很有搞头一、前言二、资料收集三、实际案例-点灯1、Proteus8安装2、Proteus创建stm32F013C6项目并添加外围LED电路3、STM32CubeMX配置F103C6引脚生成…

某信服 EDR 白程序DLL劫持

本文用到的白程序回复公众号20231211进行获取。 嗯… 记得去年HW的时候某信服给我装的EDR一直没卸载,不是不想卸载,是因为卸载要密码,所以就摆烂了。。。。 找到EDR这个目录,然后把目录复制到虚拟机中,然后一个一个e…