网络层提供面向连接和无连接两种服务,传输层的服务也分为面向连接的传输服务和无连接的传输服务,面向连接的传输服务与面向连接的网络服务很类似,两者都要经历连接建立,数据传输,连接释放,而在这两层上,寻址和流量控制非常像,无连接的传输服务与无连接的网络服务也很类似,那传输层服务与网络层服务如此相似,为什么还要设立两个独立的层?
- 传输层的代码完全运行在用户的机器上,而网络层的代码主要运行在由运营商操作的路由器上,而当网络层提供的服务不够用,比如频繁的丢包,或者路由器崩溃了,那么用户就没有一点的办法了。正因为用户没有对网络层真正的控制权,所以不能用更好的路由或者在链路层上用更好的错误机制太解决服务太差的问题,所以就需要在网络层上面再加一层,由该层来提高网络的服务质量,如果在无连接的网络中,数据包被丢失或者发生错位,则传输实体可以检测到问题所在,并通过重传来弥补这种错误,如果在一个面向连接的网络中,传输实体在运行中,如果其网络层被意外终止,那它可以与远程的传输实体建立一条新的网络层连接。而在网络层上添加传输层的目的,就是为了使网络服务更加可靠。
- 对于网络原语来说,不同网络上的网络原语有很大的区别,而有了传输服务原语后,可以将网络源于隐藏在传输原语的背后,而本身传输原原语是可以通过调用库程序来实现的,这样的话,一旦更改了网络原语,只需要更改一组库程序即可。
- 对于程序员来说,正有了传输层,程序员才可以按照一组标准原语来编写代码,并且程序可以运行在各种网络上,而不需要去担心各种不同的网络接口,也不用担心传输的可靠性。