热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据封装和解封装、数据传输单位

在两台主机通信的过程中,数据在经过网络时会进行封装和解封装。下面详细解释下封装和解封装的过程。  一、数据封装 比如说用户要发送hello这个英文单词,我们称要发送的这

在两台主机通信的过程中,数据在经过网络时会进行封装和解封装。下面详细解释下封装和解封装的过程。

 

 一、数据封装

 

比如说用户要发送hello这个英文单词,我们称要发送的这个英文单词为原始数据,即用户真正想要传输的数据。数据在上三层即应用层、表示层、会话层是不发生任何变化的。相当于用户在应用层发送了数据,数据直接透传到传输层。当数据来到传输层的时候,传输层会在这个数据上打上一个或者是TCP或者是UDP的头部,传输层一共工作着两个协议,即TCP/UDP协议。然后数据会在往下传,传到网络层,网络层会再在四层头部的外面添加上一个三层的IP头部。然后在往下传,传到数据链路层,数据链路层会在三层头部的外面在添加上一个二层的MAC头部,并在最后边添加上一个用于错误检测恢复的FCS,FCS叫做帧校验序列和。最终数据链路层把数据封装好之后,它给到物理层,物理层在把二层封装好的数据转换成比特流的形式,通过我们的有线网络或者无线网络传过去。这就是数据发送过程中的一个自上而下的封装过程。如下图所示:

 

 

二、数据解封装

 

当数据到达接收方之后,接收方需要对数据进行解封装。物理层把数据收过来,然后给到数据链路层,数据链路层先把二层的头部MAC和尾部FCS拆掉,拆掉之后给到网络层,网络层再把IP头部拆掉,在给到传输层,传输层再把4层的TCP或者UDP头部拆掉,最后露出原始数据给到会话层,在由会话层直接将原始数据透传到应用层,然后由接收者正常的接收数据。所以我们可以发现数据的解封装完全执行的是相当于封装的逆运算。解封装过程如下图所示:

 

 

最后概括一下,发送者和接收者在传递一个数据的时候,发送者是自上而下的封装,而接收者是自下而上的解封装。

 

三、传输单位

数据在每一层有不同的传输单位。发送方在将数据发送出来之后,数据在经过上三层时是不发生任何变化的,那么数据在上三层的时候有一个单位名称,叫做PDU,PDU叫做协议数据单元,即 protocol data unit 。当数据来到第四层之后,我们知道这时候四层会给数据加一个TCP/UDP头部,那么封装之后,此时的数据就不叫PDU了,而叫做数据段segment。接着到了网络层之后,网络会在四层头部的外面在加一个IP头部,在添加完IP头部之后,此时的数据叫做数据包packet。在数据链路层封装完之后,此时的数据就叫做数据帧frame。然后在给到物理层,由物理层转化为0101的二进制比特流。如下图所示:

 

 

 

 

TCP/IP模型

既然有了OSI 模型,为什么又会有TCP/IP模型呢?在OSI模型开发出来之后,人们发现很多层次制定的过于详细了,比如应表会这上三层,数据在这3层是不发生任何变化的,它们仅仅是给用户提供接口以及提供一个加密,我们发现它有一些层次的功能是冲突的,或者有一些层次没有必要区分的那么清楚,所以后来人们在使用过程中就把OSI这个模型做了一个整合,把七层整合成了四层,这就形成了TCP/IP模型。

 

 

如上图所示,它把上三层合并成了应用层,传输层、网络层保持不变,然后把物理层和数据链路层做了一个合并,合并为网络接口层。从而就把7层模型变成了四层,当然这4层模型的功能和七层模型是完全一样的。

 

但是有的人提出了异议,认为合并上三层可以,但是不能合并物理层和数据链路层,因为这两层的功能是完全不一样的,所以在吸取了大家的意见之后,TCP/IP模型也被修改成了五层结构,仅仅是把上三层进行了合并,下四层保持不变,如下图所示:

 

 

 

最后就演变成了到现在我们都在使用的TCP/IP模型五层结构。即我们现在全球互联网使用的都是TCP/IP五层模型。

 

 

从win7开始,开始同时支持IPV4 和IPV6,那么他们有什么区别呢?

IPv4 一共有 2 的32次方个IP地址,当年的网络设计者没想到网络可以发展这么快,到现在,几乎所有的人都离不开网络,那么就出现了IP地址不够用的危机,为了解决这一情况,开发者设计出了IPV6网络,IPV6网络共有2的128次方个网络地址,可以完全解决地址不够用的情况。现在很多大型网站或者公司已经开始在使用IPV6网络地址,可以使用nslookup命令查看,可以看到搜狐网站有4个IPV4和2个IPV6,即IPV4和V6是可以共同使用的。随着网络的快速发展,国内也会逐步将网络从V4转向V6,相信用不了几年,IPV6将会被普及使用。



推荐阅读
  • 深入解析OSI七层架构与TCP/IP协议体系
    本文详细探讨了OSI七层模型(Open System Interconnection,开放系统互连)及其与TCP/IP协议体系的关系。OSI模型将网络通信过程划分为七个层次,每个层次负责不同的功能,从物理层到应用层逐步实现数据传输和处理。通过对比分析,本文揭示了OSI模型与TCP/IP协议在结构和功能上的异同,为理解现代网络通信提供了全面的视角。 ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 如何撰写初级和高级前端开发者的专业简历
    如何撰写初级和高级前端开发者的专业简历 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • 深入理解Linux网络编程:UDP协议实战解析
    深入理解Linux网络编程:UDP协议实战解析 ... [详细]
  • 在对TCP段的PDU进行重组的过程中,通过网络抓包技术发现了一个特定的TCP段重组PDU实例。经过查阅相关博客和技术文章,成功找到了有效的解决方案,为类似问题的处理提供了宝贵的参考。 ... [详细]
  • 2.2 组件间父子通信机制详解
    2.2 组件间父子通信机制详解 ... [详细]
  • 利用 Python Socket 实现 ICMP 协议下的网络通信
    在计算机网络课程的2.1实验中,学生需要通过Python Socket编程实现一种基于ICMP协议的网络通信功能。与操作系统自带的Ping命令类似,该实验要求学生开发一个简化的、非标准的ICMP通信程序,以加深对ICMP协议及其在网络通信中的应用的理解。通过这一实验,学生将掌握如何使用Python Socket库来构建和解析ICMP数据包,并实现基本的网络探测功能。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • TCP三次握手过程详解与图示解析
    本文详细解析了TCP三次握手的过程,并通过图示清晰展示了各个状态的变化。同时,文章还介绍了四次挥手的图解,解释了在TIME_WAIT状态中,客户端最后一次发送的ACK包的作用和重要性。 ... [详细]
  • 运行机制_PHP 底层的运行机制与原理转
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP底层的运行机制与原理--转相关的知识,希望对你有一定的参考价值。发现一片总结的还不错的文 ... [详细]
author-avatar
xwsk008
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有