网络技术----数据封装

数据封装

    当主机向其他的设备跨网络传输数据时,数据就要进行封装,就是在OSI模型的每一层加上协议信息。每一层只与接收设备上相应的对等层进行通信。
    为了实现通信并交换信息,每一层都使用协议数据单元(Protocol Data Units,PDU)。在模型中的每一层,这些含有控制信息的PDU被附加到数据上。它们通常被附加到数据字段的报头中,但它们也可被附加在数据字段的报尾中。
    在OSI模型的每一层,通过封装使每个PDU被附加到数据上,而且每个PDU~g有特定的名称,其名称取决于在每个报头中所提供的信息。这种PDU信息只能由接收方设备中的对等层读取,在读取之后,报头就被剥离,然后把数据交给上一层。
    图1.23显示了PDU,以及PDU怎样给每一层附加控制信息。这个图演示了上层用户数据怎样被转换,以便在网络上进行传输。然后数据流被送到传输层,通过发送同步包,传输层能够建立一条到接收方设备的虚电路。然后数据流被分割成更小的块,并根据协议创建一个传输层报头(一个PDU),然后将它附加到数据字段的报头中。现在,这种数据块就称为数据段。每个数据段要进行排序,以便数据流能够在接收方精确地重现,与它在发送时的顺序完全一样。
    然后,每个数据段被交到网络层,以便通过互联网络实现网络寻址和路由选择。在网络层,使用逻辑寻址(比如IP)将每个数据段送到正确的网络中。网络层协议向来自传输层的数据段中添加控制报头,现在所得到的数据块就称为数据包或数据报。记住,传输层和网各层一起工作,以在接收方主机中乖建数据流,似它们并小将它们的PDU放在一个本地网段上一这是得剑有关路由器或主机信息的惟一方式。
图1.23数据封装

    数据链路层负责从网络层接收数据包并将它们放到网络介质(有线或无线)上。数据链路层将每个数据包封装成帧,帧的报头中包含了源和目的主机的硬件地址。如果目的设备在一个远程网络中,帧就会被送往路由器,以通过互联网络传送到目的地。一旦它到达了目的网络,就会使用一个新的帧将数据包送往目的主机。
    为了将帧送到网络上,它首先必须被转换成数字信号的形式。帧实际上是l和0的逻辑组,物理层负责将这些数值封装为数字信号,在同一个本地网络中就可以直接传输了。接收方设备将使数字信号实现同步,并从数字信号中提取出1和0,这时设备就可以构建帧,执行循环冗余校验(CRC),并根据帧的FCS字段中的结果来检验数据是否被正确传送。如果它们匹配,就从帧中取出数据包,然后丢弃剩余的部分。这个过程就称为解封装。数据包被交到网络层,在这里对地址进行检查。如果地址匹配,就从数据包中取出数据段,然后丢弃剩余的部分。在传输层对数据段进行处理,这里将重建数据流,并向发送方站点确认它收到了
每个数据块。然后,它将数据流送往高层的应用程序。
    在发送方设备中,数据封装的过程如下:
    1.用户信息被转换为数据,以便在网络上传输。
    2.数据被转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接。
    3.数据段被转换为数据包或数据报,并在报头中放上逻辑地址,这样,每一个数据包    都可以通过互联网络进行传输。
  4.数据包或数据报被转换为帧,以便在本地网络中传输。在本地网段上,使用硬件    (Ethernet)地址惟一地标识每一台主机。
  5.帧被转换为比特流,并采用数字编码和时钟方案。
  卜面用图1.24来详细解释分层寻址的概念。
  请记住,数据流是从高层送往传输层的。作为技术员,我们确实不用关心数据流是从哪里来的,因为那是程序员关心的问题。我们的工作是可靠地重建数据流,并将它送往接收方设备的高层。


    图1.24 PDU和分层寻址

    在进一步讨论图1.24之前,我们先讨论端口号的概念,请大家一定要理解这些概念。传输层使用端口号来定义虚电路和上层的进程,如图1.25所示。
    传输层接收数据流,将它组合成段,并通过创建虚电路来建立可靠的会话。然后它将每个端排序(编号),并使用确认和流量控制。如果你正在使J~TCP,虚电路就由源端口号定义。记住,主机的源端口号是从1024开始分配的(从O到1023是为众所周知的端口保留的)。当数据流在接收方主机中可靠地重建时,目的端口号就定义了准备接收数据流的上层进程(应用程序)。
    既然我们理解了端口号的概念,以及它们是怎样用在传输层的,现在让我们再回到图1.24。一旦传输层报头信息被添加到数据片中,它就变成了数据段并交给网络层,一起交付的还有目的IP地址(目的IP地址随数据流一起从上层交给传输层,它是通过位于高层的名字解析方法——可能是DNS——来找到的)。
    网络层在每个数据段的前面添加报头,并添加逻辑地址(IP地址)。在数据包中也有协议字段,用来描述数据是从哪里来的(即上层协议的类型,可能是UDP或TCP)——你也可以将它看成是“谁拥有这个数据段”,当数据包到达接收方主机时,这就会使网络层将数据段交给正确的传输层协议。它也有描述数据从哪里来的协议字段(UDP或TCP),因此当数据包到达接收方主机时,就可将数据交给正确的传输层协议。网络层负责找到目的地的硬件地址,这个硬件地址指示了数据包将被送到本地网络的哪一台主机中。通过使用地址解析协议(ARP),就可以做到这一点。在第2章中将介绍地址解析协议。网络层的IP协议将查看目的IP地址,并将此地址与它自己的源ID地址和子网掩码进行比较。如果是一个本地网络请求,本地主机的硬件地址就通过ARP请求来得到;如果数据包是被送往远程主机的,IP协议就查找默认网关(路由器)的IP地址。    j
    然后,数据包就与本地主机或默认网关的目的硬件地址一起被送交给数据链路层。数据链路层将在数据包的前面添加一个报头,并添加其他一些数据,从而将数据包变成了帧(我们称之为帧,是因为在数据包中添加了报头和报尾,这使得数据就像书挡或帧),这一切就如图1.24所示。帧使用Ether—Type字段来描述数据包来自网络层的哪一个协议。现在,对帧循环冗余校验(CRC),运行CRC的结果就放在帧中的“帧校验序列(FCS)”字段中,就是帧的报尾。

图1.25传输层的端口号
    现在,帧就可以交付给物理层了,一次一位,在这里将使用位定时规则来对数字信号中的数据进行编码。网段中的每台设备将与时钟同步,并从数字信号中抽取出l和。来构建一帧。在重建出一帧之后,就运行CRC,以确保帧是正确无误的。如果一切正常,主机就检查目的地址,看看帧是不是给它们的。
    如果你对前面叙述的一切感到困惑不解,请不要着急。在第5章中,我们将仔细讨论在互联网络中,数据是怎样被封装和转发出去的

posted @ 2010-02-14 18:07  猪悟能  阅读(863)  评论(0编辑  收藏  举报