网络中的数据传输:封装和解封装

2020-05-21 18:45:12 云杰通信 105

  近期在家办公的缘故,很多人在使用协同办公工具或视频会议进行远程办公,偶尔会遇到网络卡顿、或慢的情形。这种情形就让他们很困惑,家里宽带装的都是100M、甚至200M,怎么还是会慢呢。其实,对宽带稍有了解的童学知道网络分为上行带宽和下行带宽,通常我们提到的100M指的是下行带宽。而视频会议会占用大量的上行带宽。今天我们就从TCP/IP五层结构为基础来学习数据在网络中传输的“真相”。

  一、由于这个过程比较抽象,我们可以类比给远在美国的朋友邮寄圣诞节礼物的过程。

  

图片关键词


  (1)当我们给朋友写一封信时,一定会遵照一个约定俗成的信件格式去写信。例如,在开头写对收信人的称呼,接下来是问候语“你好”等,中间是信的内容,最后落款写自己的姓名,日期等。那么,这个书信格式以及通信采用的语言实际上就是和朋友之间的协议,只有遵照这个协议,对方才能读懂信。(2)写好了信,要将信装在信封中。在信封上,要书写收信人的地址和姓名等。再将信交给邮局。邮局根据收信人的目的地址,将信件再次封装成大的包裹,通过运输部门发往目的城市。(3)运输部门会将信件的包裹送达目的地的邮局。目的地邮局会将信件送达收信人手中。

  在这个寄信的例子中,一封信的传输需要经过三个层次:

  [x] :首先发信和收信的双方是这个过程中的最高层,位于下层的邮局和运输部门都是为了最高层之间的通信在服务。寄信人和收信人之间要有个协议,这个协议保证收信人能读懂寄信人的信件。

  [x] :两地的邮局和运输部门之间也有约定,如包裹大小,地址的书写方式,运输到站的时间等

  [x] :邮局是寄信人和收信人的下一层,为上一层提供服务,邮局为寄信人提供服务时,邮筒就是两个层之间的接口。

  二、 数据的封装过程

  

图片关键词


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

  三、数据的解封装过程

  

图片关键词


  在物理层,首先将电信号转换成二进制数据,并将数据送至数据链路层。在数据链路层,将查看目标MAC地址,判断其是否与自己的MAC地址吻合,并据此完成后续处理。如果数据报文的目标MAC地址就是自己的MAC地址,数据的MAC头部将被“拆掉”,并将剩余的数据传送至上一层;如果目标MAC地址不是自己的MAC地址,对于终端设备来说,它将会丢弃数据。在网络层与在数据链路层类似,目标IP地址将被核实是否与自己的IP地址相同,从而确定是否送至上一层;到了传输层,首先要根据TCP头部判断数据段送往哪个应用层协议或应用程序。然后将之前被分组的数据段重组,再送往应用层;在应用层,这些二进制数据将经历复杂的解码过程,以还原发送者所传输的最原始的信息。

  四、网络环境中的数据传输过程

  如果网络世界中只有终端设备,那将不能称之为网络。正因为有很多中转设备才形成了今天如此复杂的Internet网络,只不过一贯作为网络用户的我们没有机会感知他们的存在,这都是传输层的“功劳”。由于传输层通过端口号辅助上层建立最终用户间的端到端会话,因此对于最终用户而言,数据的真实传输过程都被掩藏起来。例如:通过QQ软件即使通信时,用户感觉好像在和对方面对面沟通,全然不知自己要说的内容经过了多少交换机和路由器才到达对方那里,但这些过程是真实发生的。在实际的网络环境中,最终的发送方和接收方往往相隔千山万水,中间会有很多的硬件设备起到中转的作用。为了说明整个过程,我们假设了一种通信结构,如下图,在两台通信的计算机之间增加了两台交换机和路由器,发送主机的数据将会经过这些“中间设备”才能到达接收主机。

  

图片关键词


  发送主机按照之前讲解的内容进行数据封装。

  从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层。因为交换机属于数据链路层的设备,所以它将可以查看数据帧头部的内容,但不会进行封装和解封装过程。当交换机发现数据帧头部封装的MAC地址不属于自己的MAC地址,他不会像终端设备那样将数据帧丢弃,而是根据该MAC地址将数据帧智能地转发到路由器设备,在转发前要重新将二进制数据转换成物理的电信号。

  当路由器收到数据后,会拆掉数据链路层的MAC头部信息,将数据送达网络层,这样IP头部信息就“暴露”在最外面。路由器将检测数据包头部的目标IP地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上,在转发前要重新封装新的MAC头部信息,并将数据转换成二进制数。

  之后的过程有点大同小异了....

  从这个过程我们可以看出,数据在传输过程中不断的进行着封装和解封装的过程,中间设备属于哪一层就在哪一层对数据进行相关的处理,以实现设备的主要功能。也正因如此,我们称TCP/IP五层模型为“参考”模型,参考这五层模型可以帮助我们很好的研究网络中的设备以及设备工作过程中遵守的协议。

  小结:通过上述过程的描述,我们了解了数据在网络环境中是怎样传输的,当我们在进行网络访问、或视频会议,会通过网络将本地的视频数据包先上传到网络上,这个过程会占用大量的上行带宽。但因为家庭宽带中上行带宽的局限性,从而造成网络的慢或卡顿等现象的发生。