数据传输过程

news2025/1/15 16:44:59

2 数据传输过程


        了解网络中常用的分层模型后,现在来学习一下数据在各层之间是如何传输的。

2.1数据封装与解封装过程(一)


        下面我们将以TCP/IP五层结构为基础来学习数据在网络中传输的“真相”。由于这个过程比较
抽象,我们可以类比给远在美国的朋友邮寄圣诞节礼物的过程。
        如图所示,当给朋友写一封信时,一定会遵照一个约定俗成的信件格式去写信。例如,在
开头写对收信人的称呼,接下来是问候语“你好”等,中间是信的内容,最后落款写自己的姓名,
日期等。那么,这个书信格式及通信采用的语言实际上就是和朋友之间的协议,只有遵照这个协议。

        写好了信,要将信装在信封中。在信封上,要书写收信人的地址和姓名等,再将信交给邮局。邮局根据收信人的目的地址,将信件再次封装成大的包裹,通讨运输部门发往目的城市,运输部门会将信件的包裹送达目的地的邮局。目的地的邮局会将信件送达收信人手中,在这个寄信的例子中,一封信的传输需要经过三个层次。首先发信和收信的双方是这个过程中的最高层,位于下层的邮局和运输部门都是为了最高层之间的通信在服务,寄信人与收信人之间要有一个约定,这个协议保证收信人能读懂寄信人的信件,两地的邮局和运输部门之间也有约定,如包裹的大小、地址的书写方式,运输到站的时间等。
        邮局是寄信人和收信人的下一层,为上一层提供服务,邮局为寄信人提供服务时,邮筒就是两个层之间的接口。
1.数据封装过程
        正如前一节所讲内容,在计算机网络中层次的划分要比上述的例子更细致,每一层实现的功能也更为复杂。为了能够更明确地说明此过程,我们将以两台主机的通信为实例进行分析讲解,如图所示。 

1)应用层传输过程
        在应用层,数据被“翻译”为网络世界使用的语言--二进制编码数据,大家可以试想一下人们需要通过计算机传输数据的形式千变万化,各式各样,有字母,数字,汉字,图片,声音等,这些信息对于单一通过弱电流传输的计算机来说太过于“复杂”,因此这些人类方便识别的信息被应用层通过各种特殊的编码过程转换成二进制数据,这就是上面所描述的“翻译”过程,也是应用层在网络数据传输过程中最为核心的贡献,
2)传输层传输过程
        在传输层,上层数据被分割成小的数据段,并为每个分段后的数据封装TCP报文头部。应用层将人们需要传输的信息转换成计算机能够识别的二进制数据后,这些数据往往都是海量的。例如,一张高清晰的图片转换成二进制数据可能会有几百万位甚至几千万位,如此庞大的数据一次性传输的话,一旦网络出现问题而导致数据出错就要重新传输,数据量讨大会加大出错的概率,最终可能会导致网络资源耗尽。因此,将数据先分割成小段再逐段传输,一日出现数据传输错误只需重传这一小段数据即可。
        在TCP头部有一个关键的字段信息--端口号,它用干标识上层的协议或应用程序,确保上层应 用数据的正常通信。计算机是可以多进程并发运行的,如图26中的例子,左边的计算机在通过 QO发送信息的同时也可以通过E浏览器浏览右边主机的Web页面,对于右边的主机就必须弄清楚左边主机发送的数据要对哪个应用程序实施通信。但是对于传输层而言,它是不可能看懂应用层传输具体数据的内容的,因此只能借助一种标识来确定接收到的数据对应的应用程序,这种标识就是端口号。
3)网络层传输过程
        在网络层,上层数据被封装上新的报文头部--P头部。值得注意的是,这里所说的上层数据包括TCP头部,也就是说,这里的上层是指传输层。对干网络层而言,它是看不懂TCP报文头部中内容的,在它看来,无论是应用层的应用数据,还是TCP 头部信息都属于上层数据,在IP头部中有一个关键的字段信息-P地址,它是由一组32位的二进制数组成的,用于标识网络的逻辑地址。回想刚才寄信的例子,我们在信封上填写对方的详细地址和本地的详细地址,以保证收件人能够顺利收到信件,在网络层的传输讨程与其很类似,在P头部中包含目标P地址和源P地址,在网络传输讨程中的一些中间设备,如路电器,会根据目标P地址来逻辑寻址,找到正确的路径将数据转发到目的端。如果中间的路由设备发现目标的IP地址根本是不可能到达的,它将会把该消息传回发送端主机,因此在网络层需要同时封装目标IP和源IP。
4)数据链路层传输过程
        在数据链路层,上层数据被封装一个MAC头部,其内部有一个关键的字段信息-MAC地址,它由一组48位的二进制数组成,在目前阶段,我们先把它理解为固化在硬件设备中的物理地址,具
有全球唯一性。例如,之前讲解的网卡就有属于自己的唯一的MAC地址,和P头部类似,在MAC
头部也同时封装着目标MAC地址和源MAC地址。其实,二层封装还涉及尾部的封装,考虑大家目
前的学习层次,不再详述,后续会讲解相关内容。
5)物理层传输过程
        无论在之前哪一层封装的报文头部还是上层数据信息都是由二进制数组成的,在物理层,将这些二进制数字组成的比特流转换成电信号在网络中传输。
2.数据解封装过程
        数据被封装完毕通过网络传输到接收方后,将进入数据的解封装过程,这将是封装过程的一个逆过程,如图所示。

        在物理层,首先将电信号转换成二进制数据,并将数据送至数据链路层,在数据链路层,将查看目标MAC地址,判断其是否与自己的MAC地址吻合,并据此完成后续处理,如果数据报文的目标MAC地址就是自己的MAC 地址,数据的MAC 头部将被“拆掉”,并将剩余的数据送至上一层;
如果目标MAC地址不是自己的MAC地址,对于终端设备来说,它将会丢弃数据,在网络层与在数
据链路层类似,目标P地址将被核实是否与自己的P地址相同,从而确定是否送至上一层,到了传
输层,首先要根据TCP头部判断数据段送往哪个应用层协议或应用程序,然后将之前被分组的数据
段重组,再送往应用层;在应用层,这些二进制数据将经历复杂的解码过程,以还原发送者所传输
的原始信息。
3.相关数据传输的一些基本概念
1) PDU
        对于OSI参考模型而言,每一层都是通过PDU(Protocol Data Unit,协议数据单元)来进行通信
的;而对于TCP/IP五层结构,也可以沿用这个概念,PDU是指同层之间传递的数据单位。例TCP/IP
五层结构体系中,上层数据被封装TCP头部后,这个单元称为段(Segment);数据段向下传到网络
层,被封装IP头部后,这个单元称为包(Packet);数据包继续向下传送到达数据链路层,被封装MAC头部后,这个单元称为帧(Frame);最后帧传送到物理层,帧数据变成比特(Bits)流;比特流通过
物理介质传送出去,如图所示。 

 2)常见硬件设备与五层模型的对应关系
        常见的设备属干哪一层并没有严格的定义或是官方的RFC文档说明,但是了解网络设备属干哪一层对于后续的网络硬件课程学习具有很好的指导意义。
        设备属于哪一层要看这个设备主要工作在哪一层,一般来说,常用的个人计算机和服务器都属于应用层设备,因为计算机包含所有各层的功能;路由器属于网络层设备,因为路由器的主要功能是网络层的逻辑寻址:传统的交换机属于数据链路层设备(这里之所以说传统,是因为如今三层,
四层的交换机已经非常普遍了),因为交换机的主要功能是基于 MAC 地址的二层数据帧交换;网卡
一般意义上定义在物理层,虽然目前有些高端的网卡甚至涵盖防火墙的功能,但其最主要 最基本
的功能仍是物理层通信,还有就是硬件防火墙,理论上讲,它应该属于传输层设备,因为它主要基于传输层端口号来过滤上层应用数据的传输,但是需求永远是网络行业发展的原动力,如今的防
火墙更注重整体解决方案的实现,对于病毒,木马,垃圾邮件的过滤已经成为防火墙的附属功能,
而且已经在企业中广泛应用,因此,很多人愿意将防火墙归属于应用层,表为网络各层典型的硬件设备。

 未完待续

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

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

相关文章

人工智能深度估计技术

人工智障(能)走起!!! 下面是基本操作: 在Hugging Face网页中找到Depth Estimation的model,如下图: Hugging Face – The AI community building the future. (上Huggin…

从自动驾驶到智能助理:AI和ML技术的革命性应用与前景

人工智能(AI)和机器学习(ML)的快速发展正在改变我们的世界。它们以惊人的速度渗透到各个领域,从自动驾驶汽车到智能助理、语音识别和自然语言处理等。AI和ML技术的应用范围和影响力越来越广泛,为我们的日常…

SpringMVC拦截器学习笔记

SpringMVC拦截器 拦截器知识 拦截器(Interceptor)用于对URL请求进行前置/后置过滤 Interceptor与Filter用途相似但实现方式不同 Interceptor底层就是基于Spring AOP面向切面编程实现 拦截器开发流程 Maven添加依赖包servlet-api <dependency><groupId>javax.se…

【Rust】Rust学习 第十八章模式用来匹配值的结构

模式是 Rust 中特殊的语法&#xff0c;它用来匹配类型中的结构&#xff0c;无论类型是简单还是复杂。结合使用模式和 match 表达式以及其他结构可以提供更多对程序控制流的支配权。模式由如下一些内容组合而成&#xff1a; 字面值解构的数组、枚举、结构体或者元组变量通配符占…

CSS笔记

介绍 CSS导入方式 三种方法都将文字设置成了红色 CSS选择器 元素选择器 id选择器 图中div将颜色控制为红色&#xff0c;#name将颜色控制为蓝色&#xff0c;谁控制的范围最小&#xff0c;谁就生效&#xff0c;所以第二个div是蓝色的。id属性值要唯一&#xff0c;否则报错。 clas…

【STM32RT-Thread零基础入门】 6. 线程创建应用(线程挂起与恢复)

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 挂起线程2. 恢复线程 二、程序设计1. car_led.c2.car_led.h3. main.c 三、程序测试总结 前言 在上一个任务中&a…

Mysql group by使用示例

文章目录 1. groupby时不能查询*2. 查询出的列必须在group by的条件列中3. group by多个字段&#xff0c;这些字段都有索引也会索引失效&#xff0c;只有group by单个字段索引才能起作用4. having条件必须跟group by相关联5. 用group by做去重6. 使用聚合函数做数量统计7. havi…

ShardingSphere02-MySQL主从同步配置

1、MySQL主从同步原理 基本原理&#xff1a; slave会从master读取binlog来进行数据同步 具体步骤&#xff1a; step1&#xff1a;master将数据改变记录到二进制日志&#xff08;binary log&#xff09;中。step2&#xff1a; 当slave上执行 start slave 命令之后&#xff0c…

mysql------做主从复制,读写分离

1.为什么要做主从复制&#xff08;主从复制的作用&#xff09; 做数据的热备&#xff0c;作为后备数据库&#xff0c;主数据库服务器故障后&#xff0c;可切换到从数据库继续工作&#xff0c;避免数据丢失。 架构的扩展。业务量越来越大,I/O访问频率过高&#xff0c;单机无法满…

matlab面向对象

一、面向对象编程 1.1 面向过程与面向对象 区别&#xff1a; 面向过程的核心是一系列函数&#xff0c;执行过程是依次使用每个函数面向对象的核心是对象&#xff08;类&#xff09;及其属性、方法&#xff0c;每个对象根据需求执行自己的方法以解决问题 对象&#xff1a;单个…

JAVA 读取jar包中excel模板

1、在resources路径下&#xff0c;新建report文件夹&#xff0c;放入excel模板 2、配置文件中的目录&#xff0c;分隔符使用 / template: /report/报告模板V1.0.xlsx3、使用getResourceAsStream()读取 XSSFWorkbook wb;try {//需要以/开始InputStream resourceAsStream this.g…

中国芯,寻找新赛道迫在眉睫

北京华兴万邦管理咨询有限公司 商瑞 陈皓 近期国内半导体行业的热点可以用两个“有点多”来描述&#xff0c;一个是中国芯群体中上市公司股价闪崩的有点多&#xff0c;另一个是行业和企业的活动有点多。前者说明了许多国内芯片设计企业&#xff08;fabless商业模式&#xff09;…

怎么去选消息队列? Kafka vs. RabbitMQ

在上周&#xff0c;我们讨论了使用消息队列的好处。然后我们回顾了消息队列产品的发展历史。如今&#xff0c;在项目中需要使用消息队列时&#xff0c;Apache Kafka似乎是首选产品。然而&#xff0c;考虑到特定需求时&#xff0c;它并不总是最佳选择。 基于数据库的队列 让我们…

【由于无法验证发布者,所以 windozs 已经阳止此软件。】

由于无法验证发布者&#xff0c;所以 windozs 已经阳止此软件。 由于无法验证发布者&#xff0c;所以 windozs 已经阳止此软件。IE点击【Internet选项】在打开Internet选项的对话框中&#xff0c;点击“安全”选项卡在打开的新窗口中点击“受信任的站点”图标&#xff0c;然后点…

Linux查看文本内容的一些技巧

Linux查看文本内容的一些技巧 headtailcat输出filename.txt中第二列的内容awkcutvimdiff abc.txt def.txt 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语…

sql入门-约束

约束 作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据 外键增加--删除 # 创建dept -- 主表 create table dept ( id int primary key auto_increment comment id, name varchar(50) unicode comment 部门名称 )comment 部门表; insert into dept(name) v…

SQL注入之万能用户名

文章目录 分析代码原理实现 分析代码 在安装的cms数据库目录C:\phpStudy\WWW\cms\admin下找到login.action.php文件&#xff0c;查看第20行&#xff0c;发现如下php代码&#xff1a; $user_row $db->getOneRow("select userid from cms_users where username "…

FreeCAD傻瓜式教程之约束设定、构建实体、开孔、调整颜色、透明度、参考距离、任意修改尺寸、保持开孔居中、外部图形、基准平面等

本内容基于官方教程中的绘制简单的零件中的体会&#xff0c;在初次绘制的时候&#xff0c;总是无法完成&#xff0c;几经尝试才发现其关键点所在&#xff0c;以此文记录&#xff0c;用以被查资料&#xff0c;同时也希望能够帮到纯白新手快速熟悉该软件的绘图方法。 一、. 打开软…

联想小新Pro 16笔记本键盘失灵处理方法

问题描述&#xff1a; 联想小新Pro 16新笔记本开机准备激活&#xff0c;到连接网络的时候就开始触控板、键盘失灵&#xff0c;但是有意思的是键盘的背光灯是可以调节关闭的&#xff1b;外接鼠标是正常可以移动的&#xff0c;但是只要拔掉外接鼠标再插回去的时候就不能用了&…

8.22 作业

1. 中断实验 按下key1 led3取反 按下key2 led2取反 按下key3 led1取反 main.c #include "key.h" extern void printf(const char *fmt, ...); void delay_ms(int ms) {int i,j;for(i 0; i < ms;i)for (j 0; j < 1800; j); }int main() {rcc_init();led_…