计算机通信与网络ComputerTelecommunications&Networks南京邮电大学计算机学院“计算机通信与网络”国家精品课程组第6章传输层传输层传输层的作用是在通信子网提供的服务的基础上,为上层应用层提供有效的、合理的传输服务。使高层用户在相互通信时不必关心通信子网的实现细节和具体服务质量。主要阐述6.2无连接的传输层协议UDP和面向连接的传输层协议TCP两大传输层协议,最后简述套接字和套接字编程的基本概念。内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字内容纲要传输服务无连接的传输层协议UDP面向连接的传输层协议TCP套接字6.1传输服务传输层又称为运输层,位于应用层和网络层之间,是分层网络体系结构的核心部分。传输层用于增强和弥补通信子网的服务不足,提供主机之间有效、合理的传输服务。设置传输层的理由:6.1传输服务应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)TCP和UDP协议的作用范围(提供进程之间的逻辑通信)因特网(1)两个主机进行通信实际上是两个主机中的应用进程互相通信6.1传输服务传输层的复用和分用进程传输层复用IP数据报传输层分用IP数据报TSAPNSAP……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传输服务一个传输层协议通常可同时支持多个进程的连接。若通信子网所提供的服务越多,传输协议就可以做得越简单。若网络层提供虚电路服务,那就能保证报文无差错、不丢失、不重复、并且按序地进行可靠交付,因而传输协议就很简单。但若网络层提供的是不可靠的数据报服务,如果要保证传输服务质量,则要求主机有一个复杂的传输协议。传输层的主要功能6.1传输服务向上提供可靠的和不可靠的逻辑通信信道?应用层运输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用TCP协议使用UDP协议不可靠信道发送进程6.1传输服务传输层协议的选择是根据高层用户的需要和低层网络协议提供的服务来决定的。•高层对传输层服务的要求T•通信子网所提供的服务N•传输层协议=T-N传输层协议的分类6.1传输服务网络提供的服务质量网络连接具有可接受低残留差错率和可接受低故障通知率网络连接具有可接受的低残留差错率和不可接受的高故障通知率网络连接具有不可接受的高差错率A型B型C型6.1传输服务OSI参考模型中的传输层协议分类TP1TP2)TP3TP4TP0差错恢复与复用类支持B型网络差错检测和恢复、复用类支持C型网络简单类支持A型网络复用类支持A型网络基本差错恢复类支持B型网络OSI6.1传输服务传输层的UDP和TCP都使用了端口(port)与上层的应用进程进行通信,端口就是传输层服务访问点TSAP(也就是与应用进程的接口)端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是应用层进程的标识。2、传输层编址6.1传输服务2、传输层编址RPC111()SNMP161()TFTP69()SMTP25()FTP21()HTTP80()UDPTCPIP应用层传输层网络层6.1传输服务2、传输层编址其数值一般为0~1023。这些端口号是TCP/IP体系确定并公布的熟知端口用来随时分配给请求通信的客户进程一般端口端口类型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的基本概念6.3面向连接的传输层协议TCPTCP首部20字节的固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32bitSYNRSTPSHACKURG比特08162431填充TCP数据部分TCP首部TCP报文段IP数据部分IP首部发送在前TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充数据偏移——占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位不是字节而是32bit字(4字节为计算单位)。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充标志位含义URG表明此报文段中包含紧急数据。ACK表明确认号字段有效。PSH表明应尽快将此报文段交付给接收应用程序。RST表明TCP连接出现严重差错,须释放连接,然后再重新建立连接。SYN在连接建立是用来同步序号。FIN用来释放一个连接。6.3面向连接的传输层协议TCPTCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTP