0 本节主要内容
问题描述
解决思路
1 问题描述
1.1 知识回顾
利用如下拓扑对前面的知识进行回顾。
问题:源主机 H 1 \textrm{H}_1 H1要和目的主机 H 2 \textrm{H}_2 H2进行通信,源主机 H 1 \textrm{H}_1 H1要构建数据包封装来自应用层的数据。根据MAC层和IP层首部字段信息,同学们可以去思考如何填充以下四个字段:(MAC目的地址,MAC源地址,IP源地址,IP目的地址)?
步骤:
- 源主机 H 1 \textrm{H}_1 H1知道自己的IP地址,以及要送达的目的主机 H 2 \textrm{H}_2 H2的IP地址,也知道自己的MAC地址,唯一不知道的信息是目的MAC地址,那么首先要解决的是目的MAC地址填哪个的?
- 根据前面的知识,我们知道 H 1 \textrm{H}_1 H1要填的目的MAC地址是路由器 R 1 \textrm{R}_1 R1接口0的MAC地址,那怎么才能知道接口0的MAC地址呢?
- 由于 H 1 \textrm{H}_1 H1主机在配置网络的时候配置了缺省网关,缺省网关就是接口0的IP地址,知道了接口0的IP地址,利用ARP协议,就可以知道接口0的MAC地址,这样就可以把数据包完整的构建出来了;
- 根据交换机的原理,数据包利用交换机转发机制转发到路由器 R 1 \textrm{R}_1 R1;
- 路由器 R 1 \textrm{R}_1 R1如何把数据交给目的主机 H 2 \textrm{H}_2 H2?利用数据包中目的IP地址查路由表,按照最长匹配原则,发现路由器 R 1 \textrm{R}_1 R1的路由表中的第二项匹配,也就是数据包要转发给接口1;
- 接下来就是接口1如何把数据包交给目的主机 H 2 \textrm{H}_2 H2的问题了?因为目的主机 H 2 \textrm{H}_2 H2和路由器 R 1 \textrm{R}_1 R1接口1处于同一个子网,又需要重新构建数据包,四个字段(MAC目的地址,MAC源地址,IP源地址,IP目的地址)的“MAC源地址,IP源地址,IP目的地址”都是已知的,只有MAC目的地址未知,同样利用ARP协议,就可以知道目的主机 H 2 \textrm{H}_2 H2的MAC地址,这样就可以把数据包完整的构建出来了;
- 再利用交换机转发机制,将数据包转发给目的主机 H 2 \textrm{H}_2 H2。
1.2 问题描述
- 问题1:通过上面的描述,我们知道源主机 H 1 \textrm{H}_1 H1是如何把数据传输给目的主机 H 2 \textrm{H}_2 H2的,但是网络通信实际上是源主机 H 1 \textrm{H}_1 H1的一个进程和目的主机 H 2 \textrm{H}_2 H2的一个进程进行通信,又如何来表示这种进程间通信呢?
- 问题2:网络层提供的是尽最大能力的服务,换句话说,提供的是不可靠服务;面对有些应用,需要提供可靠服务,怎么办?