路由器到底有没有运输层?如果有,似乎就和“运输层只存在与分组交换网外面的主机中”相矛盾。如果没有,那么路由选择协议 RIP 又怎样能够使用 UDP 来传送呢?
答:我们知道,主机一般都画在分组交换网(或因特网)之外。两个主机通过因特网进行通信时,需要经过一些网络和连接这些网络的路由器。因为通信的起点和终点是两个主机,所以通信路径中的所有路由器都是中间结点。不管两端的主机通信时采用何种运输协议(TCPUDP),中间结点的责任都是根据路由表转发IP数据报,而这只是IP层的功能,用不到运输层的功能。每个路由器在收到比特流后,先按MAC帧接收,再从MAC帧中提取出IP数据报,根据IP数据报首部中的目的IP地址查找路由表,然后转发IP数据报:组装成新的MAC帧后发送出去。可见,路由器在转发分组的过程中,不需要使用运输层的任何功能。从这个意义上讲,在两个主机进行通信时可以认为:分组交换网中的交换结点或因特网中的路由器都没有运输层(见下图)。
    041Q4321263.gif
但是,要得出路由器中的路由表则需要各路由器不断地交换路由信息。因此路由器除了转发主机通信的分组外,还有另一种通信方式:路由器和路由器的直接通信。根据路由选择协议的不同,这种通信方式使用的层次也不一样。OSPF直接利用IP数据报通信,它就在网络层。RIP使用UDP通信,而BGP使用TCP通信,可见这两种协议都在应用层。下图是RIP工作的示意图。
041Q4452643.gif
    可见在路由器之间进行通信以获取相邻路由器的路由信息时,需要使用运输层的服务RIPBGP协议),因此有运输层。只是在转发主机通信的IP数据报时,不需要使用囤粮功能。因此,不能不分情况地得出结论:“路由器没有运输层”。