智能弱电工程设计与应用(第2版)
上QQ阅读APP看书,第一时间看更新

3.5.3 数据封装和数据包传送

为了可靠、准确地将数据发送到目的地,并能高效利用传输资源,每层需要在对应的“协议数据单元”(PDU)中添加协议头和尾。对各层数据包进行打包和拆分操作,称为数据封装。这个数据封装过程均由装在计算机内的Windows操作系统软件来完成。

1.发送方数据封装过程:每一层都添加一个包头

图3-28是发送方的数据封装过程:数据沿着协议栈向下逐层传输,直至到达物理层,数据被转换为比特流,通过介质传输给目的主机接收。

FCS(Frame Check Sequence,帧检验序列)用来判断数据帧是否出错。CRC校验可以100%检测出所有奇数个随机错误。

图3-28 发送方数据封装过程

2.接收方数据拆封装过程

图3-29是接收方数据拆封装过程:每层剥掉一个相应的包头,到达目的主机后,将数据交给应用程序处理。

图3-29 接收方数据拆封装过程

3.IP数据包的格式和路由选择

(1)IP数据包的格式。IP数据包(Datagram)是IP网络层(又称网际层)传输的数据单元,也是TCP/IP互连体系的基本传输单元。包括数据包包头(首部)和数据区两部分,如图3-30所示。

IP数据包首部由20B(160bit)的固定部分和可变长度的填充部分两者构成。

IP数据包首部的固定长度共20B(B即字节),首部中的源地址和目的地址都是IP地址(网际地址),是所有IP数据包必须具有的。在首部固定部分的后面是一些可选字段,其长度是可变的。

图3-30 IP数据包的格式

1)其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度为48bit,是在网卡出厂时固化的。

2)目的地址之后为ARP地址解析协议和RARP逆地址解析协议,如果其长度不够46B时,要在后面补填充字节至46B。

3)MTU(Maximum Transmission Unit)是指一次传送的数据最大长度,不包括数据链路层的数据帧帧头。不同的网络类型有不同的MTU,如果一个数据包长度大于以太网链路的MTU时,则需要对数据包进行分片(Fragmentation),如图3-31所示。

以太网帧中的数据长度规定最小46B,最大1500B,1500B称为以太网的最大传输单元MTU。

图3-31 以太网的数据部分超过1500B时的分片方法

(2)IP数据包的路由选择。

网络层(第3层)的路由选择是指为传送分组而选择一条路径的过程。路由选择可分为直接传送和间接传送两种方式。

①直接传送。当两台通信计算机连接在同一个物理传输系统(例如以太网)时,才能采用直接传送方式。直接传送不涉及路由器,以太网的传送方式是因特网通信的基础。

由于IP地址中包含网络地址(网际地址)和目的主机地址(MAC地址)两部分,连接到同一物理网上的计算机具有相同的网络地址,因此,通过判别网络地址就能确定源站和目的站计算机是否同在一个物理网络上。如果源站地址和目的站地址在同一个物理网络上,就可直接传送,如图3-32所示。

②间接传送。如果源站和目的站计算机不在同一个物理网络时,只能采用间接传送方式。发送方将数据包发送给一个网络节点后,要确定下一个节点的传送路径,就需要先选择路由,再进行传送。

图3-32 直接传送和间接传送

当源站和目的站经由多个网络(多个路由器)互联时,发送主机通过网络将数据包传送给第一台路由器,该路由器将封装的数据包提取出来,并在通往目的站的路径上选择下一台路由器,直到数据包送到可以直接传送至目的站的路由器。

间接传送时涉及数据包的路由选择问题,确定最佳传输路径是通过网络路由器中的路由选择表和路由算法自动完成的,如图3-33所示。

图3-33 间接传送的路由选择

4.TCP传输控制协议的数据格式

TCP(Transmission Control Protocol)传输控制协议是IP配套使用的一个传输层协议,在IP层(网络层)之后的TCP层(传输层)提供一个可靠的传输服务。

TCP提供可靠的、面向连接的运输服务,在传输数据之前必须先建立连接,数据传输结束后要释放连接。

TCP协议规定了怎样进行流量控制、拥塞控制、重传机制和恢复分组丢失。

(1)TCP报文段的首部。TCP报文段分为首部和数据两部分;TCP的全部功能都体现在它的首部各字段,首部的前20B是固定的,后面有4N个字节(N是整数),是根据需要可增加的选项。因此TCP首部的最小长度是20B,如图3-34所示。

TCP提供流量控制功能和可靠传输服务。

(2)流量控制与拥塞控制。为了提高报文段的传输效率,TCP采用大小可变的滑动(窗口)流量控制。发送窗口在建立连接时由双方商定。但在通信过程中,接收端根据资源情况,随时可以动态调整对方的发送窗口大小。

(3)TCP的重传机制。TCP的重传机制是每发送一个报文段就设置一次计时器。如果计时器设置的重传时间已到,还没有收到确认信息(ACK),那么,就要重传这一段报文。

TCP采用了一种自适应算法。这种算法记录每个报文段发出的时间和收到确认报文段的时间,这两个时间差称为报文段的往返延时。显然,计时器设置的重传时间应略大于平均往返延时。

图3-34 TCP传输控制协议的数据格式