网络封装分用

目录

1,交换机

2,IP

3,接口号

4,协议

分层协议的好处:

5,OSI七层网络模型.

6,TCP/IP五层网络模型(主流):

[站在发送方视角]

[接收方视角]


1,交换机

交换机和IP没有关系,相当于是对路由器接口的扩充,这时相当于主机都与路由器相连处于局域网中,把越来越多的路由器连接起来成一个非常复杂的网络,称为广域网(万维网就是指将世界上的所有路由器连接到一起)

2013年,移动互联网全面普及,"应用市场"的出现,可以将主机上的功能进行扩充

单机->局域网->广域网->移动互联网

2,IP

IP:描述了一台主机在互联网中所处的地址,用一个32为的整数来表示,使用"点分十进制"(方便人们阅读)这样的方式来描述IP

3,接口号

接口号:区分当前主机指定的应用程序(进程),一个主机上,使用网络的程序有很多,通过端口号进行区分,从而表示当前主机收到的信息是交给那个进程使用.接口号是一个两个字节的整数(0->65535),0->1023是有特殊的含义的,所以我们日常程序开发的时候,一般使用剩下的接口号

4,协议

协议:就是在约定通信双方,交互数据的规则.协议是一切通信的基础,通信至少有两个主机,发送方的数据需要让接收方可以读懂,也就是双方按照相同的规则来构造/解析数据.此时我们就将网络通信问题转换成如何使用通信协议的问题

网络上传输数据,一般是以光信号/电信号/电磁波...二进制数据.由于网络通信非常负责,如果使用协议就会使协议非常庞大,复杂.,所以对对协议进行拆分,让每个小协议专注解决一个/一类问题.协议布局:约定好协议之间不能随意交互,但是但是相邻的层之间可以相互交互,上层协议可以调用下层协议,下层协议给上层协议提供服务.我们称之为协议栈.

分层协议的好处:

1),降低了使用成本,使用某个协议不需要关注关注其他协议的实现.

2),降低了整个体系的耦合性,可以灵活的变更某个层次的协议

5,OSI七层网络模型.

6,TCP/IP五层网络模型(主流):

(用户)应用层(应用系统):

     ↓   传输层(操作系统):关注网络通信中的起点和终点,并不关心其中的细节

     ↓   网络层(操作系统):网络通信的路径规划"路由选择".负责地址管理

     ↓   数据链路层(硬件):在针对上述规划好的路径,进行具体实施

(硬件)物理层(硬件):描述的是硬件设备(网络这样的设备)需要满足的条件

驱动程序:操作系统和硬件通信,管理硬件,使用的软件程序(一般是由硬件厂商提供)

• 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四 层;

• 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;

• 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;

• 对于集线器,它只实现了物理层;

上述只是站在经典模型上来讨论的,但是现实是,交换机,也可能是工作在网络层,甚至是传输层/应用层

路由器,也有可能是工作在数据链路层,也有可能是传输层,也有可能是应用层

数据在网络通信的整体流程:分装和分用

[站在发送方视角]

1,用户在文本框中输入"hello"字样,然后点击发送,程序就会把这个数据从输入框读取到,构造成一个"应用层数据包".应用层网络协议就描述了这个数据包的构造,此处的应用层协议往往是程序员自行定义的.

进行网络传输数据,通常要把"结构化的数据"转化成一个"二进制字符串",这个过程称之为序列化,把二进制字符串转化成结构化数据这个过程称之为反序列化

举例:

应用层数据包:数据包格式:发送者;接受者;时间;内容\n

2,应用程序,就会调用操作系统提供的API(传输层给应用层通过API)

操作系统会提供一个类似于"发送数据"这样的的API,然后应用层会将上述准备好的应用层数据包作为参数传进来,于是应用层数据包就到了系统内核里进入到传输层的代码层面,到达传输层层面就会把上述应用层数据包再次封装成一个传输层数据包(传输层有诸多协议,但主要的是TCP和UDP)具体使用那种,看的是在应用层方面使用的是那种API就是使用的那种协议(不同的协议提供的API是不相同的)(计算机网络中的封装实际上就是字符串的拼接)

传输层数据包(这里假设使用的是UDP协议):

这时UDP报头里面就包含了UDP的相关信息,比如发送者的端口号和接受者的端口号...

3,传输层构造成数据之后,就会继续使用网络层是API进一步把数据交给网络层,网络层也有诸多协议,其中最主要的就是IPv4协议,简称(IP协议),IP协议就会把上述拿到的传输层数据包构造成网络层数据包

网络层数据包:

此时IP报头里面包含了很多信息,主要是发送方的IP地址,和接收方的IP地址

4,网络层继续调用数据链路层的API,把数据交给数据链路层处理,数据链路层的常见协议是以太网协议

网络传输数据的基本单位:1,数据包,2数据报3,数据段4,数据帧>>>这几个术语之间是有差别的,但是在日常交流中不会过分去区分

5,上述得到的数据,需要进一步交给物理层(硬件设备)网卡会针对上述的二进制数据,进行真正的传输操作,就需要将上述的00101这样的信号转换成光信号/电信号/电磁波...

[接收方视角]

1,接收方接受的是光信号/电信号,把这样的信号还原成10101这样的二进制字符串数据.

2,物理层转换回来的数据,会交给数据链路层,以太网拿到这个数据包,就会对这个数据包进行分析,拿出这里的报头和荷载,根据报头的信息决定这个数据包是丢弃还是转发,还是自己保留(将载荷交给上层协议)

3,网络层拿到解析好的数据包,然后根据IP协议,对这个数据包进行解析,取出IP报头和荷载,根据报头的信息进行处理(丢弃/转发/保留[交给上层协议])

4,传输层UDP协议也要针对数据进行解析,取出UDP报头和载荷,此处也需要将载荷交给应用层协议

5,数据就到了应用程序这里,这时程序就会针对数据进行"反序列化",针对这里的数据就要进行下一步逻辑(显示到屏幕上或者声音提醒)

两台主机之间往往不仅只有一根网线,而是有诸多的交换机和路由器连接完成数据的转发的

中间的交换机和路由器都涉及到了封装和分用,交换机的分装和分用到了数据链路层,就可以决定数据是丢弃还是继续进行转发,不用再继续进行分用

路由器是分装分用到了网络层,就可以决定数据是否丢弃还是继续转发了,不用在继续进行分用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8-----手机机型维修工具助手 功能较全 涵盖解锁 刷机 修复等选项 维修推荐

上图是一款功能较全的维修加密狗。目前可以无限制 任何人使用。看图片可以了解其中涵盖刷机 解锁 修复分区 查看短接图 安装驱动 修复基带等等选项。而且其中有针对各个机型型号的对应功能操作。以及一些rec5.0相关的操作选项。 通过此博文了解 ★★★★★此工具涵盖的一些…

论文解读《NewsBench:一个评估中文新闻大型语言模型编辑能力的系统评估框架》

引言:感觉这篇文章,对 LLMs 的新闻编辑能力做了一个详细的实验和分析,而且还贡献了一个宝贵的中文新闻数据集,蛮不错的,后面或许可以用起来,就拜读了一下。 这篇博客的题目说是解读,其实大部分…

Java发邮件:如何配置SMTP服务器实现发信?

Java发邮件功能实现的教程?Java发邮件的方式有哪些? 无论是用于用户注册确认、密码重置,还是系统通知,Java发邮件都是不可或缺的一部分。AokSend将详细介绍如何配置SMTP服务器,以便在Java发邮件时能够顺利发送邮件。 …

如何创建和编辑抖音百科词条,不会的找我们代创建!

如何创建和编辑抖音百科词条,不会的找我们代创建! 如何创建抖音百科个人词条,个人抖音百科的创建 #抖音百科 #百科 #推广 做过百度百科的老板们注意了,等一下别划走。 2024 年品宣新风口出现了,抖音百科正在替代百度…

Flask-JWT-Extended登录验证

1. 介绍 """安装:pip install Flask-JWT-Extended创建对象 初始化与app绑定jwt JWTManager(app) # 初始化JWTManager设置 Cookie 的选项:除了设置 cookie 的名称和值之外,你还可以指定其他的选项,例如:过期时间 (max_age)&…

erlang学习:mnesia数据库与ets表1

Mnesia 和 ETS 都是 Erlang 提供的表管理工具,用于存储和检索数据,但它们之间有一些重要的区别和共同点。 共同点 都是Erlang提供的表存储机制:ETS 和 Mnesia 都允许你在内存中创建表,并且可以用来存储键值对或者更复杂的数据结…

VC++以资源方式打开可执行文件

刚看一个资料说可以在VC中,以资源方式打开可执行文件,然后它如果包含对话框一些资源,会呈现出来,可以把其他程序界面上的控件直接拷贝到自己程序; 但是操作了一下没有成功, 先新建一个空对话框准备拷贝东…

Modbus_tcp

目录 一:modbus起源 1.起源 2. 分类: 3. 优势: 4. 应用场景: 5.ModbusTCP特点(掌握): 二、 ModbusTCP的协议 1. 报文头 2. 寄存器 1. 线圈(Coils) 2. 离…

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来,之后就是将broker启动起来,broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic,因为发消息的逻辑和收消…

虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统

欢迎关注虹科,为您提供最新资讯! #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中,零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试,提出了基于虹科Baby-LIN系列产…

【教程】鸿蒙ARKTS 打造数据驾驶舱---前序

鸿蒙ARKTS 打造数据驾驶舱 ​ 前面2章我介绍了如何通过定义View绘制箭头以及圆形进度,初步了解了鸿蒙如何进行自定义View。接下来我将通过我最近在带的一个VUE的项目,简单实现了几个鸿蒙原生页面。帮助大家快速上手纯血鸿蒙开发. 本项目基于Api11Stage模…

Qt 弹出菜单右键菜单 QMenu 设置不同颜色的子项

概述 在Qt中,可以使用样式表(StyleSheet)来自定义 QMenu 的外观,包括其子项(如菜单项QAction)的颜色。但是,这通常可以设置 QMenu 的整体样式,而不能单独设置某个子项的颜色。不过&…

Cobalt Strike的下载与基本用法

CobaltStrike4.8 链接:百度网盘 请输入提取码 提取码:tgf3 what Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个&…

第六部分:1---进程间通信,匿名管道

目录 进程间通信 进程间通信的目的: 进程间通信的本质: 管道: 管道的定义: 匿名管道 单向通信的管道通路: 进程和文件之间的解耦: 单向管道的读写端回收问题: 管道通信主要实现动态数…

Java多线程-(线程的创建,线程安全,线程状态)

第一章.创建线程的方式 1.第一种方式_extends Thread 1.定义一个自定义线程类继承Thread 2.重写run方法(run方法是用于设置线程任务的) 3.创建自定义线程类对象 4.调用Thread类中的start方法(start方法:开启线程,jvm自动执行run方法) public class MyThread extends Thread{…

MacOS安装MAT教程

MAT下载地址MAT下载地址MAT下载地址MAT下载地址 如果不知道你的芯片类型, 可以执行如下命令 uname -m

VMware中安装win7和kail等虚拟机

主要内容 第一部分 安装win 7第二部分 安装kali第三部分 安装UbuntuUbuntu22.04上安装PwntoolsUbuntu上安装vim 第四部分 安装win 10office Word全套安装教程 第一部分 安装win 7 1.打开安装好的虚拟机 参考链接:虚拟机VMware安装windows7 64位操作系统&#x…

(娱乐)魔改浏览器-任务栏图标右上角加提示徽章

一、目标: windows中,打开chromium,任务栏中会出现一个chromium的图标。我们的目标是给这个图标的右上角,加上"有1条新消息"的小提示图标,也叫徽章(badge)注意:本章节纯属娱乐,有需要…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色,它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析,并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题

问题现象 配置https之后 IE打不开登陆页面 Uclient没有问题。 jvm控制台 显示如下 basic: 已调整小应用程序大小且已将其添加到父容器中 basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 170755 us, pluginInit dt 722531 us, TotalTime: 89328…