讨论网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。
争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
一种观点:让网络负责可靠交付
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用面向连接的通信方式。
通信之前先建立虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
虚电路是逻辑连接
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
请注意,电路交换的电话通信是先建立了一条真正的连接。
因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。
另一种观点:网络提供数据报服务
互联网的先驱者提出了一种崭新的网络设计思路。
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
只负责数据包转发,到底要走哪条路径完全由路由器临时决定,因为路由规则不同,数据包走的路径也是不一样的,不考虑数据包是否可以抵达目的地,直接将数据包丢给路由器,至于路由器怎么转由路由器来决定。
虚电路服务
尽最大努力交付
由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。
互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
数据报服务
最终选择的网络层提供的服务
网络层功能就是给传输层协议提供简单灵活的、无连接的、尽最大努力交付的数据包服务。
通俗一点来讲,网络中的路由器为每一个数据包单独的选择转发路径,网络层不提供服务质量的承诺。
也就说路由器直接丢弃传输过程中出错的数据包,如果网络中待发的数据包太多,路由器处理不了就直接丢弃,路由器也不判断数据包是否重复,也不确保数据包按发送顺序到达终点。
最终选择的网络层提供的服务
网络畅通的条件
计算机网络畅通的条件就是数据包能去能回,道理很简单、也很好理解,却是我们排除网络故障的理论依据。
上面每个路由器都必须要知道到目标网段怎么走,以及到回来的网段怎么走。
每个路由器上面都必须要有路由表,路由器转发数据就完全看路由表。
以下情况网络不通
目标主机不可到达
在ping一个地址的时候,可以看到路由器返回一个主机不可达,可以看到是路由器到目标网段不知道怎么走,返回来这样一个错误。
请求超时
可能是计算机起来了防火墙,关机了。总而言之发了一个数据包,没人搭理我。
网络排错就是检查这些路由器是不是都可以到,以及路由表。