1
计算机网络技术理论与实践
1.2.1.6 1.1.6 Internet网络中数据传输过程

1.1.6 Internet网络中数据传输过程

在Internet网络中采用的是TCP/IP体系结构,这个体系结构并没有规范数据链路层的协议。它定义了IP数据包在拥有不同数据链路层和物理层网络中的传输方法。当前Internet得到了非常普遍的应用,因此终端设备上通常都会默认安装上TCP/IP协议栈以便于连接到Internet。当终端设备需要连接到Internet中,或者要利用TCP/IP协议栈进行数据传输时,就需要利用IP地址来标识源端主机和识别目的端主机。但是数据包在具体的网络中传输时,要遵循该网络中的数据链路层和物理层的协议,也就是说必须按照该数据链路层中标识主机的方式进行传输。这对于点对点的网络来说并不需要进行地址转换,因为点对点网络从一点发出的数据包只能到达另一点,不需要进行目标主机的标识,而对其他网络则需要先将IP地址转换为该网络中的物理地址,然后按照物理地址在网络中进行传输。每种网络都有自己的物理地址,这样当主机跨越多个网络进行通信时,在经过每个网络时都需要将IP地址转换为该网络中的物理地址进行传输,在网络间还用IP地址进行传输。下面介绍网络内部和跨网络的数据传输过程。

1.网络内部的数据传输过程

Internet是将多个网络互联在一起形成的,在每个网络中数据传输要按照该网络的数据链路层和网络层的协议进行。

在Internet网络中是将应用层的数据经过传输层和网络层最终封装成IP数据包从一端传输到另一端的。当IP数据包到达具体的网络中时,它需要封装到该网络的数据帧中,在帧头上按照该网络的数据链路层协议填入目的主机的物理地址,然后通过该网络的物理层发送出去。

下面我们以以太网为例说明网络内部的数据传输过程,如图1-13所示。

当以太网上采用TCP/IP协议栈时,在以太网中主机之间传输数据也就是传输IP数据包,需要用源IP地址和目的IP地址来标识传输的双方。但是在以太网协议中需要用MAC地址作为物理地址识别网络中的各个主机。因此,在以太网中IP数据包发送前需要先将IP地址转化为MAC地址。

在图1-13中,从逻辑上看源主机和目的主机进行通信时,就是源主机将IP数据包传输到目的主机,在以太网中实际传输时要先利用ARP协议将目的IP地址转化为目的MAC地址,然后将IP数据包封装到以太网帧结构中,并将源MAC地址和目的MAC地址填到以太网帧头中,再将以太网帧通过双绞线发送到目的主机,目的主机收到以太网帧后,将帧头去掉,取出其中的IP数据包再向上发送给IP层。

img15

图1-13 以太网中数据传输过程

2.网络间的数据传输过程

在连入Internet的网络间传输数据时,源主机和目的主机间同样是传输IP数据包,但是由于中间要经过不同的网络,所以IP数据包在不同的网络中要按照数据链路层协议的要求封装成不同的数据帧进行传输。当跨越网络边界时需要还原为IP数据包按照路由进行转发。所以利用IP协议完成网络间的传输,在每一个具体的网络内部采用该网络的协议进行传输。下面举例说明。

在Internet上不同网络需要分配不同的IP网段(也就是IP地址中具有不同的网络地址)。在图1-14中共有3个网络:左右分别是两个以太网,中间是PPP网络。左边的以太网分配了一个IP网段1.0.0.0/8,中间的PPP网络分配的IP网段是2.0.0.0/8,右边的以太网分配的是3.0.0.0/8IP网段。源主机IP地址为1.0.0.2/8;目的主机IP地址为3.0.0.2/8;路由器A左边连接以太网的端口的IP地址是1.0.0.1/8,右边连接PPP网络的端口的IP地址是2.0.0.1/8;路由器B连接左边PPP网络端口的IP地址是2.0.0.2/8,连接右边以太网端口的IP地址是3.0.0.1/8。现在源主机1.0.0.2/8要向目的主机3.0.0.2/8发送一个IP数据包,其发送过程要经过两个以太网和一个PPP网络,所以需要分成三段进行传输。每段在一个具体网络内部进行传输,段之间也就是网络之间通过路由器利用IP协议进行路由选择,也就是选择IP数据包传输时要经过的网络,在传输过程中IP数据包的内容不会发生变化,即IP数据包中的源IP地址和目的IP地址不变。具体过程如下:

img16

图1-14 网络间数据传输过程

(1)IP数据包从源主机传输到路由器A。由于采用TCP/IP协议栈,从源主机到路由器A需要通过源主机的IP地址和路由器A的IP地址进行数据传输,也就是从1.0.0.2/8传输到1.0.0.1/8。在以太网中传输时需要将IP地址转换成为MAC地址,要先将路由器A的IP地址1.0.0.1/8转换为MAC地址,然后将IP数据包封装在以太网帧中,帧头的源MAC地址为源主机的MAC地址,目的MAC地址为路由器A左端口的MAC地址。(注意IP数据包中的源IP和目的IP地址分别是源主机和目的主机的IP地址,而以太网帧头的源MAC地址和目的MAC地址分别是源主机和路由器A的MAC地址,这是不一致的。)路由器A收到以太网帧后将其解析出IP数据包,并根据IP路由策略选择下一个经过的网络2.0.0.0/8,然后将IP数据包转发到该网络(从路由器A的右端口发出)。

(2)IP数据包从路由器A传输到路由器B。在PPP网络中需要从路由器A发送到路由器B,也就是从2.0.0.1/8传输到2.0.0.2/8,由于从路由器A右端口发送出,只能传送给路由器B的左端口,因此不需要寻址,路由器A直接将IP数据包封装在PPP帧中,然后将其通过右端口发送出去,路由器B通过左端口接收到PPP帧后,从中解析出IP数据包,并通过IP路由策略选择出下一个经过的网络3.0.0.0/8并将IP数据包转发到该网络。(需要注意的是,在这一传输过程中并没有真正用到路由器A右端口和路由器B左端口的IP地址,它们只起到标识数据包收、发端口的作用。)

(3)IP数据包从路由器B传输到目的主机。从路由器B的右端口传输给目的主机,也就是从3.0.0.1/8传输到3.0.0.2/8,需要先将目的主机的IP地址3.0.0.2/8转换为相应的MAC地址,然后将IP数据包封装到以太网帧中,帧头的源MAC地址为路由器B右端口的MAC地址,目的MAC地址为目的主机的MAC地址。目的主机接收到以太网帧后将其中的IP数据包解析出来传给IP层,从而完成源主机和目的主机之间IP数据包的传输。

从上面传输过程中,可以看到当源主机和目的主机之间进行IP数据包传输时,不管经过多少网络,IP数据包中的源IP地址和目的IP地址始终保持不变。IP数据包传输要经过多个网络,在每一个网络中的两个主机之间传输IP数据包时,我们将这两个主机称为IP数据包的局部源主机和局部目的主机。这两个主机之间需要根据局部源IP地址和局部目的IP地址进行IP数据包的传输,需要利用转换机制将局部目的IP地址转换为本网络的物理地址,然后利用局部源物理地址和局部目的物理地址完成在该网络中的真正传输。因此,具体网络帧中的源和目的物理地址是与局部源IP地址和目的IP地址相对应,与所传输IP数据包中的源IP地址和目的IP地址不一定会对应。