运输层的任务:如何为运行在不同主机上的应用进程提供直接的通信服务。 运输层协议又称为端到端协议。 运输层位于应用层和网络层之间。 必须掌握的重要概念: (1)运输层为相互通信的应用进程提供逻辑通信; (2)运输层的复用与端口的概念; (3)无连接的UDP的特点; (4)面向连接的TCP实现可靠传输的工作原理,以及TCP的滑动窗口、流量控制、拥塞控制和连接管理。
5.1 运输层协议概述
5.1.1 进程间的通信
当位于网络边缘部分的两台主机使用网络核心部分进行端到端的通信时,只有主机的协议栈采用运输层,网络核心部分中的路由器在转发分组时都只用到下三层(物理层、数据链路层、网络层)的功能。
问:既然IP协议能够将源主机发送出去的分组按照首部中的目的地址送交到目的主机,为什么还需要设置一个运输层? 解析:从IP层来说,通信的两端是两个主机。严格来讲,两个主机通信实际上是两个主机上的应用进程互相通信。IP协议只能将分组送到目的主机,但这个分组还停留在主机的网络层而没有交付主机中的应用进程。这便是运输层的任务,从运输层的角度,通信的真正端点并不是主机而是主机中的进程。
一个主机中经常有多个应用程序同时分别和另一个主机中的多个应用进程通信。 从而运输层的重要功能有复用和分用:详见5.1.3 1)复用:发送方不同的应用进程都可以同一个运输层协议传送数据; 2)分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付到目的应用程序。
重要概念1:运输层为相互通信的应用进程提供逻辑通信 意思是运输层之间的通信好像是沿着水平方向传送数据,实际这两个运输层之间并没有一条水平方向的物理连接,要传送的数据是沿着图中上下多次的虚线方向垂直传送的。
网络层和运输层的区别: 网络层是为主机与主机之间提供逻辑通信, 而运输层是为应用进程之间提供端到端的逻辑通信。
根据应用需求的不同,运输层为应用层提供了两种不同的运输协议, (1)面向连接的TCP:尽管下面的网络不可靠(只提供尽最大努力服务),但这种逻辑通信信道相当于一条全双工的可靠信道; (2)无连接的UDP:这种逻辑通信信道仍是不可靠信道。
5.1.2 因特网的运输层协议
因特网的网络层为主机之间提供的逻辑通信服务是一种尽最大努力交付的数据报服务,即IP报文在传输过程中有可能出错、丢失或失序。
单一的运输层很难满足所有应用的需求,例如:像电子邮件、文件传输、电子银行等应用,数据丢失可能会带来很大的后果,需要运输层为这类应用提供可靠的数据传输;但对于实时的多媒体应用,它们能够承受一定的数据丢失,不会造成很大影响,这时可靠数据传输会增加很多复杂机制,反而会给应用带来不利因素。
TCP/IP网络为上层应用提供了两个不同的传输层协议: (1)用户数据报协议(User Datagram Protocol,UDP): UDP在传送数据时不需要先建立连接。接受方运输层在收到UDP报文后,也不需要给出任何确认。 (2)传输控制协议(Transmission Control Protocol,TCP): TCP提供面向连接的服务。在传送数据前,必须先建立连接,数据传送结束后要释放连接,因此不可避免地增加了很多开销,例如:确认、流量控制、计时器、连接管理等,使得协议数据单元的首部增加,占用很多处理机资源。TCP不提供广播或多播服务。 按照OSI术语,两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元(Transport Protocol Data Unit, TPDU)。但在因特网中,根据所使用的协议是TCP还是UDP,分别称之为TCP报文段和UDP报文段(或用户数据报)。
5.1.3 运输层的复用与分用
复用:应用层所有的应用进程都可以通过运输层再传送到IP层; 分用:运输层从IP层收到数据后交付给指明的应用进程。
运输层要正确地将数据交付给指定应用进程,就必须给每个应用进程赋予一个明确的标志。在TCP/IP网络中,使用一种与操作系统无关的协议端口号(Protocol Port Number),简称端口号。
端口:应用层和运输层之间接口的抽象,应用层的源进程将报文发送给运输层的某个端口,目的进程从端口接收报文; 端口号:应用进程的运输层地址,16位,可以允许有65535(2^16-1)个端口号,**端口号只有本地意义。**不同的计算机中,相同的端口号是没有联系的,TCP和UDP端口号之间也没有联系。所以在运输协议数据单元(TCP报文段或UDP用户数据报)的首部中必须包含两个字段:源端口号和目的端口号。 --------当运输层收到IP层交上来的数据,就要根据其目的端口号来决定应当通过哪一个端口上交给目的应用进程。
总结:两个计算机中的进程要互相通信,需要知道(1)对方的IP地址-----找到对方的计算机;(2)对方的端口号-----找到对方计算机中目的应用进程。
注:应用进程间的通信采用客户-服务器模式。应用层中的各种不同的服务器进程不断监听其端口,以便发现客户进程与它通信。运输层的端口号分为三类: (1)熟知端口:0-1023。由因特网赋号管理局(Internet Assign Numbers Authority, IANA)负责分配给一些常用的应用层程序固定使用。因此所有用户进程都知道。 例如:
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) |
---|
端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 |
(2)登记端口:1024-49151. IANA不分配也不控制,但可以在IANA处登记,防止重复使用。 (3)动态端口:49152-65535. 留给客户进程作为临时端口。当客户进程发起通信前要先为自己选择一个未用的临时端口,通信结束后释放该端口以方便其他用户进程使用。
5.2 用户数据报协议(UDP)
5.2.1 UDP概述
用户数据报协议UDP只在IP的数据报服务之上加了端口的功能(运输层从而可以复用与分用)和差错检测的功能。 UDP的优点: (1)无连接。发送数据前不需要建立连接,发送数据结束也没有连接释放,从而减少了开销和时延。 (2)使用尽最大努力交付,即不保证可靠交付,同时不使用流量控制和拥塞控制,因此主机不需要维持具有许多参数的、复杂的连接状态表。 (3)因为UDP没有拥塞控制,因此网络出现的拥塞不会使得源主机的发送速率降低。 注意:这对于实时应用(如IP电话、实时视频会议等)很重要,它们要求源主机以恒定的速率发送数据,并允许网络发生拥塞时丢失一些数据,但不允许数据有很大的时延。
5.2.2 UDP报文的首部格式
UDP报文有两个字段:数据字段和首部字段。 其中首部字段8字节,由4个字段组成,每字段2B,具体如下: (1)源端口:标识UDP发送方; (2)目的端口:标识UDP接收方; (3)长度:UDP用户数据报长度; (4)检验和:差错校验码,防止UDP用户数据报在传输中出错。 UDP通过二元组(目的IP地址,目的端口号)来定位一个接收方应用程序。
|