5-网络初识——封装和分用

news2024/9/22 13:23:07

目录

1.数据封装的过程

2.数据分用的过程

PS:网络数据传输的基本流程(以QQ为例,A给B发送一个hello):

一、发送方:

二、接收方:


  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 "上层协议字段" 将数据交给对应的上层协议处理。

1.数据封装的过程

2.数据分用的过程

PS:网络数据传输的基本流程(以QQ为例,A给B发送一个hello):

一、发送方:

用户A在输入框中输入hello这个字符串,qq这个应用程序,就把这个字符串构造成一个应用层数据报。

  • ①应用层:

所谓的应用层数据报,本质上就是一个遵守了约定格式的字符串。

应用层数据报具体的数据格式,咱们不清楚,每个应用程序都不一定一样,只有开发qq的程序员才知道。

一个假设的应用层协议格式:"发送方qq号;发送时间;接收方qq号;消息内容"

程序要调用操作系统的API,把这个应用层数据,交给传输层。

  • ②传输层(进入系统内核了):

在传输层中,要把上述应用层数据,构造成传输层数据。

传输层最知名的协议就是UDP协议和TCP协议。

此处是使用UDP,就需要构造出UDP数据报(在应用层数据基础上,加个UDP报头)。

这是另外一个特定格式的字符串(这里涉及到源端口和目的端口),此处就像字符串拼接一样,把这个报头和后面的数据拼到一起。

所谓的报头就是一个标签,通过标签表示出当前要把这个消息怎样进行传输。

为啥要往上拼报头?就像商家发货,要套上包装,不止一层。

  1. 防止里边的货物损坏。
  2. 可以在包装上贴上标签,用来写一些信息,如:发件人地址、发件人姓名、收件人地址、收件人姓名、货物名称等。

传输层把这个UDP数据报,交给网络层。

  • ③网络层:

网络层最知名的协议就是IP协议。

IP协议要基于上述数据,打包成一个IP数据报。

IP报头也相当于是一个字符串,包含了另外一组信息(最核心的信息:源IP和目的IP)

网络层数据报准备好,还需要进一步交给数据链路层。

  • ④数据链路层:

数据链路层最知名的协议是以太网。

基于上述数据,还要打包成一个"以太网数据帧"。

接下来这个数据继续往下传输,交给物理层。

  • ⑤物理层:

物理层把上述二进制数据转换成电信号/光信号,此时就真正把数据给发出去了。

上述过程,从应用层到物理层,层层加码,这个过程称为"封装"。

此处省略中间的转发过程,只考虑B的接收。

二、接收方:

  • ①物理层:

网卡接收到的是光信号和电信号,是在物理层,把这个光电信号转换回二进制的数据。

转换回的数据,其实是一个以太网数据帧。

  • ②数据链路层:

 数据链路层需要去掉帧头帧尾,取出中间的载荷,交给上层的网络层IP协议。

以太网数据帧帧头里也会记录这个载荷是不是一个IP数据报。

  • ③网络层:

IP协议针对这里进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的传输层数据报交给上层传输。

IP报头里会记录,载荷是UDP还是TCP。

  • ④传输层:

UDP再进行解析,取出报头,取出载荷,再把这个载荷交给对应的应用层程序。

UDP报头里有一个重要的字段,"目的端口",目的端口是一个具体的应用程序,关联在一起的,因此就可以根据这个端口来把数据交给应用程序了。

  • ⑤应用层:

qq应用程序,qq就会针对应用层协议进行解析,显示到界面上。

上述,从下到上层层解析,就是"分用"。

表示一个网络传输的数据单位:

  • 包(package)
  • 报(datagram)
  • 帧(frame)
  • 段(segment)

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

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

相关文章

Linux:忘记root密码解决办法

如果你是虚拟机只要将光盘镜像连接到虚拟机上,以光盘iso镜像启动 如果你是真机或服务器那将实体u盘或实体光盘连接至设备并且以连接的设备启动 开机时候打断开机 使用 (u盘|光盘)引导启动 troubleshooting rescue a centos system 输入 1…

前后端分离式项目架构流程(爆肝两万字)

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言: 【🎇前端】先创建Vue-cli项目,请选择此项目【🎀创建路由】打开命令行工具,进入你的项目目录,输入下面命令。1.创建 router …

SimpleCG绘图函数(4)--绘制圆

在前一篇教程我们利用绘制矩形功能绘制了一个城市,接下来我们讲解另外一个同样重要且基础的图形----圆形。并一起看看该图形能绘制哪些应用呢。 绘制圆形相关函数如下: //圆心坐标(nXCenter,nYCenter),半径为nRatio//绘无填充制圆 void circle( int nXCenter, int …

KG-BERT: BERT for Knowledge Graph Completion 2019ACL

把BERT用在知识图谱补全上 提出KG-BERT模型,在预训练好的BERT基础上继续fine-tuning。 1.传统KGC方法 传统的KGC方法一般依赖于KGE,而KGE往往通过将KG中的三元组关系投影到某个表示空间中,然后使用打分函数对三元组的合理性进行评估&#x…

OA系统流程传出文档

泛微OA如何与第三方接口交互 注意: 1.对于泛微OA中不能作为节点后的自定义编码代码,可能有以下几种原因: 代码存在语法错误:节点后的自定义编码代码应该是正确的Java代码,如果代码中存在语法错误,如缺少分号或者括号不匹配等,将不能正常编译执行。 缺少必要的依赖:节点…

C++ 内存分区模型

C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放 , 存放函数的参数值 , 局部变量等 堆区&…

CS5366芯片方案|单芯片type-C转HMID+PD+U3拓展坞方案|CS5366设计电路原理图

CS5366是一款高性能USB Type-c/DisplayPort TM(DP)到HDMI2.0转换器,设计用于USB Type-c源到HDMI2.0sink。CS5366集成了符合DP1.4标准的接收器和符合hdmi2.0标准的发射器。还包括两个CC控制器用于CC通信,以实现DP Alt Mode和功率传…

目标检测中,DETR方法为何class设置为91+1,DINO中为91

基于DEtection TRansformer的DETR框架https://github.com/facebookresearch/detr因为end-to-end,无需后处理等优点,逐渐得到青睐。DINO方法https://github.com/IDEA-Research/DINO更是取得了在COCO2017的SOTA结果。 其中,在DETR方法中&#…

Revit简单的门族创建及CAD图纸翻模门窗

一、Revit简单的门族创建步骤 门是我们建筑模型中不可缺少的一个构件,如何在族中绘制一个自己的门族呢?下面教大家绘制一个简单的门族,让你了解门的构件绘制。 打开公制门族进行创建 首先我们要进行门框的创建,很多人会以为系统自带的这个是…

【数据结构】一篇文章带你彻底学会《后缀表达式》

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

什么是项目可交付成果?定义、示例及管理工具

项目产生可交付成果&#xff0c;这只是项目活动的结果。项目可交付成果可大可小&#xff0c;其数量也因项目而异。它们是由项目管理团队和利益相关者在项目规划阶段商定的。 换句话说&#xff0c;任何类型的项目都有投入和产出。投入是你投入到项目中的东西&#xff0c;如数据…

Pixhawk无人机-ArduPilot 软件SITL仿真模拟飞行(SITL+MAVProxy)

1 引言 本人是先看了多个博客实现了&#xff1a;在ubuntu下建立完整的ardupilot开发环境。 该文是基于搭建完编译环境后&#xff0c;也就是搭建好ardupilot的仿真环境实现的。 在文章: 《Pixhawk无人机扩展教程(5)—SITL仿真模拟飞行&#xff1a;开发环境搭建》.中指出&#…

究竟什么是CRM?一文带您了解

目录 一、什么是CRM&#xff1f;它是用来做什么的&#xff1f; 1、获取商机的源头&#xff1a;全渠道营销管理 2、业绩提升的核心&#xff1a;销售管理 3、有温度的触达&#xff1a;客户服务 二、企业为什么需要布局CRM 1、销售是一场没有硝烟的战争 2、信息孤岛存在&am…

调用华为API实现中文语音识别

目录 1. 作者介绍2. 华为云中文语音识别2.1 录音文件识别与获取2.2 限制要求2.3 对象存储服务&#xff08;OBS&#xff09;简介 3. 实验过程以及结果3.1获得API3.2 代码实现3.3 运行结果 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 张楠&#xff0c;女…

【unity之c#专题篇】——进阶知识实践练习

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

如果你很焦虑、浮躁,不如去读一读林曦这本《无用之美》

生活中不可或缺的是柴米油盐&#xff0c;而濡养人心的往往是无用之美。——林曦    很难用语言写出这本书的美。有些书会给你带来内心的激荡&#xff0c;有些会让你充满力量&#xff0c;而林曦老师的书便自带一种轻盈的美&#xff0c;越往下读越能让人凝神静气。      …

浅谈一下@Async和SpringSecurityContext可能会遇到的问题和解决方案

Async和SpringSecurityContext 场景回溯 在执行一个用时较长的批量插入业务的时候,我尝试使用Async异步对业务进行优化,但是却给我报了空指针的错误,定位之后发现 此处我是基于SpringSecurity来获取用户的 是currentUserService获取到的当前登陆用户为空导致的,但是当前确实是…

文心一言 VS 讯飞星火 VS chatgpt (27)-- 算法导论5.1 2题

二、请描述 RANDOM(a&#xff0c;b)过程的一种实现&#xff0c;它只调用 RANDOM(0&#xff0c;1)。作为a和b的函数&#xff0c;你的过程的期望运行时间是多少? 文心一言&#xff1a; 假设我们有一个伪随机数生成器&#xff0c;可以生成在[0,1)范围内的随机数。那么我们可以使…

深入探讨JMeter中不为人知的JSONPath用法

在jmeter使用过程中&#xff0c;我们经常会看到接口返回数据类型为application/json&#xff0c;也就时我们常说的json格式。 而在功能测试时&#xff0c;我们经常会要对它的结果进行断言&#xff0c;确认结果是否与预期一致&#xff0c;有时候还会想从结果中提取某个值&#…

第十六章行为性模式—职责链模式

文章目录 职责链模式解决的问题结构实例存在的问题 JavaWeb 源码 - FilterChain 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为类…