5.1.1 传输层的功能
但请注意,IP 提供的是一种尽力而为(best-effort)的交付服务。它不保证:数据报一定到达。也不保证数据报按照发送顺序到达。数据报只到达一次。更不保证数据报传输有多快。即使 IP 数据报成功到达主机 B,操作系统仍然面临一个问题:应该把里面的数据交给哪个应用程序?
传输层的核心是为应用进程提供端到端的逻辑通信服务,注意,是应用进程,这是它区别于网络层的地方。一台主机可能运行不同的应用。
因此,端口寻址就是传输层要实现的第一个功能,而接下来的问题,就是主机在网络层收到不同的IP数据报后,怎么正确的数据把它们传给不同的端口,这个过程就是多路复用。
而传输层作为端上的最后一层协议,会被应用层复用,它还想额外实现一些功能。
传输层可以理解为应用层和网络层之间插入的抽象层,理论上我们可以让应用直接调用IP协议来完成这一切,但我们发现许多不同的应用本身都包含传输数据和端口寻址这一层,于是我们把这一层抽象出来,传输层不关心数据具体的意义,传输层只要负责传递数据就可以了。同时重传和差错控制等等也可以交给这一层解决。
5.1.2 传输层寻址与端口
假设都使用相同的操作系统,进程ID是一个不错的标识,不同的主机有着不同的操作系统,因此,我们必须再抽象一层,提出端口这个概念。端口号为16位二进制整数,最大是65535。两个不同的网络服务互相通信,往往会使用不同的端口号。
5.1.3 无连接服务与面向连接服务
无连接服务是指数据传输之前无需进行任何信息交换,也就是通常所说的握手,直接构造报文段。反过来,面向连接服务就要先建立逻辑连接再传输数据,结束之后还要再删除连接。
我们回顾一下之前的协议,显然IP和以太网都是无连接服务。