运输层是整个网络体系结构中的关键层次之一

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第8章运输层运输层是整个网络体系结构中的关键层次之一。运输层协议概述8.1用户数据报协议UDP8.2传输控制协议TCP8.38.1运输协议概述8.1.1进程之间的通信从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。在通信子网中没有运输层。运输层只存在于通信子网以外的主机中。54321运输层提供应用进程间的逻辑通信主机A主机B应用进程应用进程路由器1路由器2AP1LAN2WANAP2AP3AP4IP层LAN1()()()()AP1AP2AP4AP3端口端口54321IP协议的作用范围运输层协议TCP和UDP的作用范围主机A的协议栈主机B的协议栈图8-1运输层为相互通信的应用进程提供了逻辑通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。因此从运输层来看,端到端的通信是应用进程之间的通信。运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。要传送的数据是沿着图中上下多次的虚线方向传送的。网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信,如图8-2所示。应用进程…应用进程…IP协议的作用范围(提供主机之间的逻辑通信)运输层协议的作用范围(提供进程之间的逻辑通信)因特网图8-2运输层协议和网络层协议的主要区别运输层还要对收到的报文进行差错检测。根据应用的不同,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP,运输层中向应用层提供运输服务的是运输实体。使用运输服务的是运输服务用户。运输层中的两个对等运输实体之间的通信遵循着运输协议。运输协议保证了运输层能够向应用层提供运输服务。运输层提供的运输服务也使用了下面网络层向上提供的网络服务。TSAP和NSAP分别是运输层服务访问点和网络层服务访问点,它们都是层与层之间交换信息的抽象接口。运输实体运输实体运输协议运输层层接口运输服务用户(应用层实体)运输服务用户(应用层实体)层接口网络层(或网际层)应用层主机A主机B运输层服务访问点TSAP网络层服务访问点NSAP图8-3运输层与其上下层之间的关系的OSI表示法运输层向高层用户屏蔽了下面通信子网的细节(如网络拓扑、所采用的协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(即只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。不可靠信道的特点就是不保证交付。图8-4运输层向上提供可靠的或不可靠的逻辑通信信道TCP/IP的运输层有两个不同的协议,如图8-5所示,它们都是因特网的正式标准,即:(1)用户数据报协议UDP(UserDatagramProtocol)TCPUDPIP应用层与各种网络接口图8-5TCP/IP体系中的运输层协议(2)传输控制协议TCP(TransmissionControlProtocol)两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元TPDU,TCP报文段(segment)或UDP报文或用户数据报。UDP在传送数据之前不需要先建立连接。TCP则提供面向连接的服务。应用应用层协议运输层协议名字转换DNSUDP文件传送TFTPUDP路由选择协议RIPUDPIP地址配置BOOTP,DHCPUDP网络管理SNMPUDP远程文件服务器NFSUDP表8-1使用UDP和TCP协议的各种应用和应用层协议IP电话专用协议UDP流式多媒体通信专用协议UDP多播IGMPUDP电子邮件SMTPTCP远程终端接入TELNETTCP万维网HTTPTCP文件传送FTPTCP续表8.1.3运输层的端口UDP和TCP都使用了与应用层接口处的端口(port)与上层的应用进程进行通信。端口是个非常重要的概念,因为应用层的各种进程是通过相应的端口与运输实体进行交互。因此在运输协议数据单元(即TCP报文段或UDP用户数据报)的首部中都要写入源端口号和目的端口号。用OSI的术语,图中的端口就是运输层服务访问点TSAP。端口的作用就是让应用层的各种应用进程都能把数据通过相应的端口向下交付给运输层,以及让运输层知道应当把报文段中的数据向上通过合适的端口交付给应用层相应的进程。应用层运输层网络层TCP报文段UDP用户数据报应用进程TCP复用IP复用UDP复用TCP报文段UDP用户数据报应用进程端口端口TCP分用UDP分用IP分用IP数据报IP数据报发送方接收方图8-6端口在进程之间的通信中所起的作用端口用一个16位端口号进行标识。但端口号只具有本地意义,它只是为了标识本计算机应用层中的各进程。在因特网不同计算机中相同的端口号是没有联系的。端口号共分为3类。(1)熟知端口(well-knownport)其数值为0~1023。这一类端口由因特网指派名字和号码公司ICANN负责分配给一些常用的应用层程序固定使用。应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP(trap)熟知端口212325536980161162(2)登记端口(3)动态端口8.2用户数据报协议UDP8.2.1UDP概述UDP在某些方面有其特殊的优点:(1)UDP是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延。(2)UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制,因此主机不需要维持具有许多参数的、复杂的连接状态表。(3)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。(4)UDP是面向报文的。(5)UDP支持一对一、一对多、多对一和多对多的交互通信。(6)用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。8.2.2UDP的首部格式用户数据报UDP有两个字段:数据字段和首部字段。每个字段都是两个字节。(1)源端口(2)目的端口(3)长度(4)检验和伪首部源端口目的端口长度检验和数据数据UDP首部IP首部UDP长度源IP地址目的IP地址017UDP用户数据报IP数据报字节44112122222字节发送在前图8-7UDP用户数据报的首部和伪首部UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。“伪首部”是指这种伪首部并不是UDP用户数据报真正的首部。UDP计算检验和的方法和计算IP数据报首部检验和的方法相似。但不同的是:IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起都检验。8.3传输控制协议TCP8.3.1TCP概述TCP是TCP/IP体系中面向连接的运输层协议,它提供全双工的和可靠交付的服务。TCP与UDP最大的区别就是TCP是面向连接的,而UDP是无连接的。端口…发送TCP报文段TCPTCP…TCPTCP接收缓存发送缓存报文段报文段…报文段报文段报文段报文段端口发送方接收方向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程图8-8TCP发送报文段的示意图由于运输层的通信是面向连接的,因此TCP每一条连接上的通信只能是一对一的,而不可能是一对多、多对一或多对多的。运输层A运输层B发送报文段1确认报文段1发送报文段2出错!丢弃出错的报文段丢失!超时重传报文段2超时重传报文段2确认报文段2发送报文段3时间时间图8-9用确认和超时重传保证可靠传输运输层A运输层B发送报文段1确认报文段1发送报文段2丢失!超时重传报文段2丢弃重复的报文段确认报文段2发送报文段3时间时间确认报文段2图8-10确认丢失的情况通过以上所讲的确认和重传机制,我们就可以在IP层的通信是不可靠的情况下,使运输层之间的通信成为可靠的。8.3.2TCP报文段的首部一个TCP报文段分为首部和数据两部分,如图8-11所示。应当指出,TCP的全部功能都体现在它首部中各字段的作用。目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FIN32位TCP首部20字节的固定首部SYNRSTPSHACKURG位08162431填充TCP数据部分TCP首部TCP报文段IP数据报的数据部分IP首部发送在前图8-11TCP报文段的首部TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N必须是整数)。因此TCP首部的最小长度是20字节。首部固定部分各字段的意义如下所述。(1)源端口和目的端口(2)序号(3)确认号(4)数据偏移(5)保留(6)紧急URG(URGent)(7)确认ACK(8)推送PSH(PuSH)(9)复位RST(ReSeT)(10)同步SYN(11)终止FIN(FINal)(12)窗口(13)检验和(14)选项8.3.3TCP的数据编号与确认TCP协议是面向字节的。TCP将所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,并使每一个字节对应于一个序号。TCP发送的确认是对所有按序接收到的数据的确认。但接收方返回的确认号是已按序收到的数据的最高序号加1。也就是说,确认序号表示接收端期望下次收到的数据中的第一个数据字节的序号。8.3.4TCP的流量控制与拥塞控制为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的窗口数值上限。图8-12表示的是在TCP中使用的窗口概念。收到确认即可前移1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认还可继续发送不可发送指针1002003004005006007008009001012013014015016017018011已发送并被确认还可继续发送不可发送指针(b)(c)1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送(a)指针发送窗口发送窗口图8-12TCP中的窗口概念(a)发送窗口大小为500字节(b)发送了400字节,收到的确认号为201,窗口大小不变,还可发送300字节(c)收到的确认号为401,窗口大小变为400字节,还可发送400字节seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,win=300ACK=1,ack=601,win=0ACK=1,ack=501,win=200主机A主机B允许A再发送300字节(序号201至500)A还能发送200字节A还能发送200字节(序号301至500)A还能发送300字节A还能发送100字节(序号401至500)A超时重发,但不能发送序号500以后的数据允许A再发送200字节(序号501至700)A还能发送100字节(序号501至700)不允许A再发送(到序号600的数据都收到了)丢失!图8-13利用可变窗口进行流量控制举例8.3.5TCP的重传机制重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段,就设置一次计时器。只要计时器设置的重传时间已经到了但还没有收到确认,就要重传这一报文段。计时器设置的超时重传时间RTO(RetransmissionTime-Out)应略大于上面得出的平均往返时延RTT,即:RTO

1 / 73
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功