OSI模型的数据封装和解封

 

数据 封装
    当主机跨越 网络 向其他设备传输数据时,就要进行数据封装,就是在OSI模型的每一层加上 协议 信息。每一层只与接受设备上相应的对等层进行通信。
    为了实现通信并交换信息,每一层都使用协议数据单元(Protocol Data Units,PDU)。在模型中的每一层,这些含有控制信息的PDU被附加到数据上。他们通常被附加到数据字段的报头中。但它们也可以附加在数据字段的报尾中。
    在OSI模型的每一层,通过封装使每个PDU被附加到数据上,而且每个PDU都有特定的名称(物理层:比特流;链路层:数据帧;网络层:数据包;传输层:数据段;)其名称取决于在每个报头中所提供的信息。这种PDU信息只能呢个由接收方设备中的对等层读取,在读取之后,报头就被剥离,然后把数据交给上一层。
    图1.28显示了PDU,以及PDU怎样给每一层附加控制信息。这个图演示了上层用户数据怎样被转换,以便在网络上进行传输。数据流被送到传输层,通过发送天内哦公布包,传输层能够建立一条到接收方设备的虚电路。然后数据流被分割成更小的块,并且根据协议创建一个传输层报头(PDU),将它附加到数据字段的报头中。现在这种数据块就称为数据段。每个数据段要进行排序,以便数据流能够在接收方精确地重现,与它在发送时的顺序完全一样。

图1.28数据封装。

然后,每个数据段被交到网络层,以便通过互联网实现网络寻址和 路由 选择。在网络层,使用逻辑寻址(比如 IP)将每个数据段送到正确的网络中。网络层协议向来自传输层的数据段中添加控制报头,现在所得到数据块就称为数据包或数据报。记住传输层和网络层一起工作,以在接收方主机中重建数据流,但他们并不将他们的PDU放在本地网段上——这时得到由关 路由器 或主机信息的唯一方式。
    链路层负责从网络层接收数据包并将它们放到网络介质(有线或无线)上。数据链路层将每个数据包封装成帧,帧的报头中包含了源和目的主机的硬件地址。如果目的设备在以个远程网络中,帧就会被送往路由器,以通过互联网络传送到目的地。一旦它达到了目的网络,就会使用以个新的帧将数据包送往目的主机。在传输过程中,帧会变,但是数据包不会变。
    为了将帧送到网络上,它首先必须被转换成数字信号的形式。帧实际上时1和0的逻辑组,物理层负责将这些数值封装为数字信号,在同1个本地网络中就可以直接传输了。接收方设备将使数字信号实现同步(靠时钟频率Clock Rate)并从数字信号中提取出1和0,这是设备就可以构建帧,执行循环冗余效验(CRC),并根据帧的FCS字段中的结果来检验数据是否被正确传送。如果他们匹配,就从阵中提取出数据包,然后丢弃声誉的部分。这个过程就称为解封装。数据包被提交到网络层,在这里对地址进行检查。如果地址匹配,就从数据包中取出数据段。然后丢弃声誉的部分。在传输层对数据段进程处理,这里将重建数据流,并向发送方站点去确认它收到了每个数据块。然后,它将数据流送往高层的应用程序。
    在发送方设备中,数据封装过程如下:
    1.用户信息转换为数据,以便在网络上传输。
    2.数据转换为数据段,并在发送方和接收方主机之间建立以条可靠的连接。
    3.数据段转换为数据包或数据报,并且在报头中放上逻辑地址,这样,每以个数据包都可以通过互联网进行传输。
    4.数据包或数据报转换为帧,以便在本地网络中传输。在本地网段上,使用硬件(以太网)地址唯一表示每一台主机。
    5.帧转换为比特流,并采用数字编码和时钟 方案
    6.为了详细说明这个过程,用图1.29来详细解释分层寻址的概念。
    请记住,数据流是从高层送往传输层的。作为 技术 员,我们确实不用关心数据流时从那里来的,因为那时程序员关心的问题。我们的工作时可靠地重建是数据流,并将它送往接收方设备的高层。
    在进一步讨论图1.29之前。我们线讨论 端口 号的概念。传输层使用端口号来等译虚电路和上层进程,如图1.30所示。
    传输层接收到数据流,将它们组合成段。并通过创建虚电路来建立可靠的绘画,然后它将每个段排序(编号),并使用确认技术和流量控制。如果你正在使用 TCP,虚电路就由源端口号定义。记住,主机的源端口号时从1024开始分配的(0~1023是为周知端口保留的)。当数据流在接收方主机中可靠的重建时,目的端口号就定义了准备接收数据流的上层进程(应用程序)。

图1.29


既然我们了解了端口号的概念,以及它们时怎样用在传输时的,现在让我们再回到图1.30

图1.30


一旦传输层数据头信息被加到数据片中,它就变成了数据段并交给网络层,一起交付的还由目的IP地址(目的IP地址随数据流一起从上层交给传输层,它时通过位于高层的名字解析方法——可能时DNS来找到的。)

    网络层在每个数据段的前面添加报头,病假逻辑地址(IP地址)。一旦在数据段前面添加了报头,PDU就称为数据包。在数据包中由以个协议字段,用来描述数据时从哪里来的(即上层协议的类型,可能时UDP或TCP),当数据包到达接收方主机时,这会使网络层将数据段交给正确的传输协议。

    网络层负责找到目的地址和硬件地址,这个硬件地址指示了数据包将被送到本地网络的哪一台主机中。通过使用地址解析协议ARP就可以做到这一点。网络层的IP协议将查看目的 IP地址,并将此地址与它自己的源IP地址和子网掩码进行比较,如果时以个本地网络请求,本机主机的硬件地址就会通过ARP请求来得到:如果数据包时被送往远程主机的,IP协议就查找默认网关(路由器)的IP地址。

    然后,数据包就与本地主机或默认网关的目的硬件地址一起被送交给数据链路层。数据链路层将在数据包的前面添加1个报头,并添加其他一些数据,从而将数据包变成了帧(我们称之为帧,时因为在数据包中添加了报头和报尾,这使得数据就像书挡或帧),这一切就如图1.29所示。帧使用Ether类型字段来描述数据包来自网络层的哪一个协议。现在,对帧运行循环冗余效验CRC,运行CRC的结果就放在帧的“帧效验序列FCS”字段中,FCS就是帧的报尾。

    现在帧就可以交给物理层了,一次一位,这里将使用位定时规则来对数字信号中的数据进行编码。网段中的每台设备将与时钟同步,并从数字信号中抽取1和0来构建一帧。在重建出以帧之后,就运行CRC,以确保帧时正确无误的。如果一切正常,主机就检查目的地址,看帧时不时给它们的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值