运输层是第一个端对端,即主机到主机的层次。
运输层上在端到端的源和目的主机之间,一方面可以提供面向连接的、可靠的数据传输服务,另一方面也可以提供无连接的、高效但不可靠的数据传输服务。
运输服务
通信子网中的节点上不包含运输层功能。 传输层与应用层的接口是端口地址。 完成运输层功能的部件称为运输实体,由具备运输层相应功能的硬件或软件构成。
严格地说,端到端通信说主机上的应用进程间的通信。
运输层提供两种类型的服务: 1??面向连接的运输服务:是一种可靠的服务,整个连接生存期包括连接建立、数据传输和连接释放三个阶段。 2??无连接的运输服务。
总体而言,OSI运输服务和网络服务十分相似,但是为什么还需要运输服务?这是因为,用户不能对通信子网加以控制,因而无法用更优的通信处理机制来解决网络层服务质量低劣的问题,更不能通过改进数据链路层纠错能力来改善它,解决这一问题的唯一办法就是在网络层之上增加一层运输层。运输层的存在使运输服务比网络服务更可靠,分组的丢失、残缺甚至网络复位都可以被运输层检测到,并采取相应的补救措施。
服务质量QoS衡量标准: 吞吐量:在一定时间内在一条运输连接上传输的用户数据的字节数,一般用每秒字节数表示(B/s)。在一条运输连接上,可以有两个方向的吞吐量。 连接建立延迟、连接建立失败概率、传输延迟等也均是其衡量标准。
各层及其对应的传输的数据形式: 物理层??数据链路层??网络层??运输层 比特流?? 帧 ?? 包 ??报文段
寻址和复用
当一个运输服务用户希望与另一个用户建立连接时,它必须说明与哪一个具体的远端用户相连,常用的方式是定义运输服务访问点TSAP。 在TCP中,采用称为端口port的方法,其相应的编号称为端口号。 类似的,IP地址被称为网络服务访问点NASP。 IP地址和TCP端口号的结合在全网络上唯一地标识了一台主机上的一个应用进程。
通过TASP地址编码加以区分,多个运输服务用户使用同一个运输协议和运输实体,实现多路复用。
TCP
TCP/IP体系结构中的运输层就是利用IP层提供的不可靠的服务来提供端到端的运输服务,它包括两个主要的运输协议,即面向连接的、可靠的的传输控制协议(TCP)和无连接的用户数据报协议(UDP)。
TCP可靠,但它的代价较大,UDP不可靠,但它的传输效率较高。
传输控制协议TCP的主要作用是在不可靠的网络服务上为应用层提供面向连接的、端到端的可靠字节流服务。
TCP引入了套接字Socket的寻址机制,一个套接字的标识包括了两个部分,即主机的IP地址和一个16比特的端口号。端口号的取值范围为0~65535,而0~1023的端口号被称为众所周知的端口号,这些端口被保留给那些标准服务使用,如FTP的端口号为21,HTTP的端口号为80。
TCP在数据传输时必须首先建立一条运输连接,数据传输完成后把连接释放掉。一条TCP连接是有发送实体套接字和接受实体套接字来唯一标识。
TCP中双方通过TCP报文段来交换数据(TPDU)。一个TCP报文段由一个20字节的头部、一个可选部分和一个用户数据部分组成。整个报文段长度不超过IP分组长度65535字节,也不超过最大传输单元MTU,一般为几千字节。 TCP中把一个TCP报文段携带的用户数据的大小限制为最大分段大小MSS,注意MSS时TCP报文段中用户数据的最大长度,不包括内部在内。MSS一般默认值为1500字节、536字节和512字节。
TCP报文段各字段及其含义: 源端口号(16比特)和目的端口号(16比特); 顺序号(32比特):TCP报文段中携带的用户数据中第一个字节的编号; 确认号(32比特):对之前的数据已可靠收到的确认,也用于表示下一个期望接受的字节的顺序号; 数据偏移(4比特):TCP的头部长度,即TCP数据开始的位置; ACK:表明确认号字段有效,为0,则该TCP报文段不包括确认信息,确认号字段无效; PSH:要求立即发送数据,用于实现PUSH功能; SYN:用于建立TCP连接。一般SYN=1和ACK=0标识请求连接,SYN=1和ACK=1表示接受连接请求。 ······
TCP通过连接建立可以达到的目的: 1??使每一端知道另一端是否存在; 2??进行选项协商(如协议类、窗口大小、服务质量等); 3??为TCP实体分配资源(如缓冲区、连接表项等)。
TCP连接建立是一个不对称的过程,即TCP连接的两方中一方处于被动方式,一方处于主动方式。
TCP连接采用三次握手: 1??客户方发送特殊的TCP报文段给服务方,该段中可以不包含任何用户数据,只是把SYN标志置为1,ACK标志置为0,同时客户方选择一个初始顺序号x,放在顺序号字段。这个TCP报文段一般称为SYN段。 2??目的主机收到连接请求后,其TCP实体首先查看是否有进程在目的端口处监听,若无,发送RST=1的应答拒绝建立连接。若同意接受连接,服务方发送一个ACK=1,确认字段号=x+1,SYN=1,顺序号=y的TCP报文段。这个TCP报文段称为SYN,ACK段,方法是捎带确认。 3??客户方发送SYN=0,ACK=1的TCP报文段来确认对方的初始顺序号,连接建立。
TCP释放连接采用四次握手: 1??某端首先关闭,成为主动关闭端,向另一端发送FIN,表示数据发送完毕。 2??接收到FIN的是被动关闭端,FIN由TCP确认,向主动关闭端发送ACK。 3??一段时间后向主动关闭端发送FIN。 4??主动关闭端确认FIN,并向被动关闭端发送ACK。两端关闭TCP。
TCP发送实体维护一个发送缓冲区SendBuffer用于发送来自应用进程的数据,该缓冲区由三部分组成,即发送窗口、待发送的数据和空缓冲区。 TCP接收实体维护一个接收窗口大小,这是接收实体向发送实体指出的目前剩余接收缓冲区大小,类似发送窗口,接收窗口可变。
TCP传输的只是字节流,所以说TCP是面向字节流的服务,确认以字节为单位,而不以发送的报文段为单位。
TCP可靠传输通过维护发送缓冲区和控制发送窗口的滑动窗口机制来实现。 TCP流量控制是一种运输层端到端的对等流控,它也采取可靠传输中可变大小的滑动窗口机制来进行。只是现在控制者是接收实体,滑动窗口则是接收窗口。
TCP拥塞控制
TCP拥塞控制就是以端到端控制在发送源端实现的网络拥塞控制方法,即通过发送实体主动探知网络的容量状况,控制发送速度,主动承担防止网络网络拥塞的责任。
TCP拥塞控制采用慢启动和拥塞避免的策略。拥塞窗口(反映网络容量)小于慢启动阈值(一般设置为一个较高的值)时进入慢启动阶段,拥塞窗口大于慢启动阈值进入拥塞避免阶段。
慢启动阶段拥塞窗口随时间呈指数增加。 拥塞避免阶段,每个RTT时间把拥塞窗口增加一个MSS,这样拥塞窗口随时间缓慢地呈线性增加,直到出现拥塞。
TCP在超过一段时间(重传超时的时间)没有收到TCP报文段,就在重新开始传输数据时进入慢启动过程,也就是拥塞窗口为1个MSS。
UDP和RTP
UDP主要被应用在一种需要简单而高效传输数据的场合,比如实时多媒体数据传输。 UDP是一种无连接方式的、不可靠的运输协议,也就是说不需要连接建立和连接释放,不支持流量控制、拥塞控制,UDP在传输过程中可能会丢失,可能会失序,可能会延迟等。其最大的优点是简单和快速。
UDP只有8个字节的头部。基于UDP实现的域名服务DNS,只需要两条数据报就可以完成域名解析。
RTP实时多媒体,又称实时流媒体,应用具有实时性和等时性特征。
|