计算机通信与网络ComputerTelecommunications&Networks南京邮电大学计算机学院“计算机通信与网络”国家精品课程组第6章传输层传输层传输层的作用是在通信子网提供的服务的基础上,为上层应用层提供有效的、合理的传输服务。使高层用户在相互通信时不必关心通信子网的实现细节和具体服务质量。主要阐述无连接的传输层协议UDP和面向连接的传输层协议TCP两大传输层协议,最后简述套接字和套接字编程的基本概念。内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字6.1传输服务传输层又称为运输层、传送层,位于应用层和网络层之间,具有承上启下的作用,是分层网络体系结构的核心部分。传输层用于增强和弥补通信子网的服务不足,提供主机之间有效、合理的传输服务。传输层实现网络应用进程的标识。6.1传输服务应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网(1)两个主机进行通信实际上是两个主机中的应用进程互相通信。6.1传输服务传输层的复用和分用进程传输层复用IP数据报传输层分用IP数据报TSAPNSAP……6.1传输服务物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功能通信子网端系统6.1传输服务从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。从网络中继系统和端系统功能的角度看,传输层及其以上的功能,仅存在于端系统中,中继节点只实现网络层功能。传输层实现用户功能与网络的接口。6.1传输服务为了提高传输效率,IP首部中的首部校验和字段只检验IP数据报首部是否出现差错而不检查数据部分。传输层TCP和UDP的校验和既要校验首部也要校验数据部分,并且只在发送端进行一次校验和计算,在接收端进行一次检测。(2)传输层对整个报文段进行差错校验6.1传输服务当传输层采用面向连接的协议(如TCP)时,它为应用进程在传输实体间建立一条全双工的可靠逻辑信道,尽管下面的网络可能是不可靠的(如IP交换网络)。当传输层采用如UDP这样的无连接协议时,这种逻辑信道是不可靠的。(3)根据应用的不同,传输层需要执行不同的传输协议来提供不同的传输服务6.1传输服务用户不能对通信子网加以控制,无法解决网络层的服务质量不佳问题。应用层协议如果强调数据传输的可靠性,那么选择TCP较好,分组的丢失、残缺甚至网络重置都可以被传输层检测到,并采取相应的补救措施。如果应用层协议强调实时应用要求,那么选择UDP为宜。(4)传输层的存在使得传输服务比网络服务更加合理有效6.1传输服务(5)传输层采用一个标准的原语集提供传输服务由于传输服务独立于网络服务,故可以采用一个标准的原语集提供传输服务。为网络向高层提供了一个统一的服务界面,所以用传输服务原语编写的应用程序就可以广泛适用于各种网络。6.1传输服务向上提供可靠的和不可靠的逻辑通信信道?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程6.1传输服务一个传输层协议通常可同时支持多个进程的连接。若通信子网所提供的服务越多,传输协议就可以做得越简单。若网络层提供虚电路服务,那就能保证报文无差错、不丢失、不重复、并且按序地进行可靠交付,因而传输协议就很简单。但若网络层提供的是不可靠的数据报服务,如果要保证传输服务质量,则要求主机有一个复杂的传输协议。传输层的主要功能6.1传输服务传输层协议的选择是根据高层用户的需要和低层网络协议提供的服务来决定的。•高层对传输层服务的要求T•通信子网所提供的服务N•传输层协议=T-N传输层协议的分类6.1传输服务网络提供的服务质量网络连接具有可接受低残留差错率和可接受低故障通知率网络连接具有可接受的低残留差错率和不可接受的高故障通知率网络连接具有不可接受的高差错率A型B型C型6.1传输服务OSI参考模型中的传输层协议分类TP1TP2)TP3TP4TP0差错恢复与复用类支持C型网络差错检测和恢复、复用类支持B型网络简单类支持A型网络复用类支持A型网络基本差错恢复类支持B型网络OSITCP/IP的传输层有两个不同协议:用户数据报协议UDP(UserDatagramProtocol)无连接,效率高,可靠性较低。传输控制协议TCP(TransmissionControlProtocol)面向连接,可靠性高,控制复杂。TCP/IP中的传输层TCP/IP体系中的传输层协议TCPUDPIP层应用层与各种网络接口传输层两个对等传输实体在通信时传送的数据单位叫作传输协议数据单元TPDU(TransportProtocolDataUnit)。TCP传送的数据单位协议是TCP报文段(segment)。UDP传送的数据单位协议是UDP报文或用户数据报。TCP/IP中的传输层6.1传输服务传输层的UDP和TCP都使用端口(port)与上层的应用进程进行通信,端口就是传输层服务访问点TSAP(与应用进程的接口)。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。端口是应用层进程的标识。2、传输层编址6.1传输服务2、传输层编址RPC111()SNMP161()TFTP69()SMTP25()FTP21()HTTP80()UDPTCPIP应用层传输层网络层6.1传输服务2、传输层编址其数值一般为0~1023。这些端口号是TCP/IP体系确定并公布的熟知端口用来随时分配给请求通信的客户进程一般端口端口类型TCP/IP中的传输层端口号端口用一个16bit端口号进行标识,有效的端口号为0~65535。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。一类是由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用的熟知端口(well-knownport),其数值一般为0~1023,见[RFC1700]。例如,FTP用21,TELNET用23,SMTP用25,DNS用53,HTTP用80,SNMP用161,等等。当一种新的应用程序出现时,必须为它指派一个熟知端口。熟知端口一般端口另一类则是一般端口,用来随时分配给请求通信的客户进程。端口的数值范围是1024~65535。一般端口是随机分配的,其数值即端口号就表示了相应的应用程序。熟知端口一般用于向公众提供服务,不能任意改变。6.1传输服务3、无连接服务和面向连接服务无连接的服务面向连接的服务通信之前不需要建立连接数据通信之前需要建立连接,传输过程中需要保持连接,数据通信完毕之后连接释放数据按顺序发送,但未必按顺序接收按序接收不可靠服务可靠服务协议简单,效率高协议复杂,效率不高6.1传输服务协议层次无连接的服务面向连接的服务传输层UDPTCP网络层IPX.25分组级数据链路层CSMA/CDHDLC,PPP3、无连接服务和面向连接服务内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字6.2无连接的传输层协议UDPUDP是一个简单的面向用户数据报的传输层协议。应用进程的输出正好产生一个UDP数据报,并组装成一个待发送的IP数据报。UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和有限的差错检测功能。1、UDP概述6.2无连接的传输层协议UDPUDP是无连接的。在传输数据前不需要与对方建立连接。UDP提供不可靠的服务。数据可能不按发送顺序到达接收方,也可能会重复或者丢失数据。UDP同时支持点到点和多点之间的通信。UDP是面向报文的。1、UDP概述6.2无连接的传输层协议UDP2、UDP首部格式伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报6.2无连接的传输层协议UDP2、UDP首部格式伪首部源端口目的端口长度检验和数据首部UDP长度源IP地址目的IP地址017IP数据报字节44112122222字节发送在前数据首部UDP用户数据报用户数据报UDP有两个字段:数据字段和首部字段。首部字段有8个字节,由4个字段组成,每个字段都是两个字节。6.2无连接的传输层协议UDPUDP用户数据报的首部中检验和用来检验整个用户数据报(首部加数据部分)出现的差错。在计算检验和时在UDP数据报之前要增加12个字节的伪首部。所谓“伪首部”是因为这部分信息只在计算UDP校验和时使用,既不向下层传送,也不向上层递交(只参加计算,不传输到对方)。2、UDP首部格式6.2无连接的传输层协议UDP2、UDP首部格式伪首部源端口目的端口长度检验和122222字节源IP地址目的IP地址0协议长度6.2无连接的传输层协议UDP2、UDP首部格式网络需传输的UDP数据报数据如下,以16进制数表示,其中第一行数据是IP数据报首部的内容,第二行数据是UDP数据,请计算其UDP校验和。45000020f91200008011bf9fc0a80064c0a8006613611389000c????504341556.2无连接的传输层协议UDP2、UDP首部格式UDP首部的校验和字段设置为0,如果UDP数据域长度为奇数的话,则填充一个“0”字节将UDP首部和数据部分按照16位为单位划分伪首部部分参与校验和计算进行反码求和运算最后对累加的结果取反码,得到UDP校验和6.2无连接的传输层协议UDP3、UDP实例协议名称协议默认端口使用UDP协议原因说明域名系统DNS53为了减少协议的开销动态主机配置协议DHCP67需要进行报文广播简单文件传输协议TFTP69实现简单,文件需同时向许多机器下载简单网络管理协议SNMP161网络上传输SNMP报文的开销小路由选择信息协议RIP520实现简单,路由协议开销小实时传输协议实时传输控制协议RTPRTCP50045005因特网的实时应用内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字6.3面向连接的传输层协议TCPTCP是面向连接的TCP提供可靠的服务TCP只能进行点到点的通信TCP是面向字节流的1、TCP概述TCP的基本概念传输控制协议TCPTCP通过下列方式来提供可靠性:•应用数据被分割成TCP认为最适合发送的数据块,称为报文段或段。•TCP协议中采用自适应的超时及重传策略。•TCP可以对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。•TCP的接收端必须丢弃重复的数据。•TCP还能提供流量控制。6.3面向连接的传输层协议TCPTCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。端口是传输层与应用层的服务接口。传输层的复用和分用功能都要通过端口才能实现。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗