思科网络技术学院教程第三讲传输层介绍.docx_第1页
思科网络技术学院教程第三讲传输层介绍.docx_第2页
思科网络技术学院教程第三讲传输层介绍.docx_第3页
思科网络技术学院教程第三讲传输层介绍.docx_第4页
思科网络技术学院教程第三讲传输层介绍.docx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三讲OSI传输层介绍无论是本地还是全球,数据网络和Internet都能为人们提供顺畅、可靠的通信,以此支持以人为本的网络。人们可以在一台设备上使用多种服务来发送消息或者检索信息。电子邮件客户端程序、Web浏览器和即时消息客户端等应用程序使人们得以发送消息和查找信息。这些应用程序发出的数据经过封装传输,最终送达目的设备上的相应服务器守护程序或应用程序。我们之前曾介绍过,OSI传输层的进程从应用层接收数据,然后进行相应处理以便用于网络层寻址。如图4-1所示,传输层负责终端应用程序之间的全部数据传输。关键术语流量控制控制数据互联网编号指派机构(IANA)知名端口注册端口动态或私有端口紧急指针URG确认字段ACK护送功能PSH重置功能RST同步序列号SYN发送方已经传送完所有数据FIN确认窗口大小传输层的作用传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控、分段/重组和差错控制。一些协议是面向链接的。这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。将这些数据片段重组为完整的应用数据流;标志不同的生活服务程序;在终端用户之间执行流量控制;差错恢复;开始一个会话。如图4-2所示,传输层确保设备上的应用程序能够通信。下一节描述传输层的不同作用以及传输层协议的数据要求。一、跟踪各个会话每台主机上都可以有多个应用程序同时在网络上通信。这些应用程序将与远程主机上的一个或多个应用程序相互通信。传输层负责管理这些应用程序间的多道通信流。如图4-3所示,假设某台连入网络的计算机正在收发电子邮件、使用即时消息、浏览网站和进行VoIP电话呼叫,那么这些应用程序将同时通过网络发送和接收数据。但是,电话呼叫的数据不会传送到Web浏览器上;同样,即时消息的内容也不会显示在电子邮件中。图4-2 传输层确保设备上的应用程序能够通信图4-3 跟踪会话二、分段数据应用程序向传输层传递大量数据。传输层必须将数据拆分成小的片段,更适合传送。这些小的片段被称为分段。这一过程包括必须在传输层上为每段应用程序添加报头,以显示关联与该段数据相关的通信。如图4-4所示的数据分段,与传输层的协议相关,在计算机上同时运行多个程序时提供数据发送与接收。没有分段,只有一个应用程序,例如视频流,才能接收数据。在观看视频时,你将不能接收电子邮件,用即时消息软件聊天或浏览网页。图4-4 分段三、重组数据段由于网络能提供不同的传输路径,数据可能以错误的顺序到达。通过编号与排序分段,传输层能保证这些分段能以正确的顺序重组。在接收主机,数据的每个分段必须按正确的顺序重组,然后传给适当的应用程序。传输层的协议描述了传输层的头信息如何用于重组数据片段成为正确的数据流传给应用程序。四、标识应用程序为了将数据流传送到适当的应用程序,传输层必须要标志目的应用程序。因此,传输层将向应用程序分配标识符。TCP/IP协议族称这种标识符为端口号。在每台主机中,每个需要访问网络的软件进程都将被分配一个唯一的端口号。该端口号将用于传输层报头中,以指示与数据片段关联的应用程序。在传输层中,源应用程序和目的应用程序之间传输的特定数据片段集合称为会话。将数据分割成若干小块,然后将这些小的数据段从源设备发往目的设备,那么网络中可以同时交叉收发(多路传输)很多不同的通信信息。传输层负责网络传输,是应用层和网络层之间的桥梁。它从不同的会话接收信息后,将数据划分成最终能在介质上多路传输的一些便于管理的数据片段,然后再向下层传送数据。应用程序不需要了解所用网络的详细运作信息,它们只需生成从一个应用程序发送到另一个应用程序的数据,而不必理会目的主机类型、数据必须要流经的介质类型、数据传输的路径以及链路上的拥塞情况或网络的规模。同时,OSI模型的下层也不需要知道有多少应用程序在通过网络发送数据。它们只需负责将数据传送到适当的设备。然后,传输层将对这些数据段排序,并将其传送到相应的应用程序。五、流量控制网络主机只有有限的资源,如内存或带宽。当传输层得知这些资源已经过载,一些协议能够要求发送程序减小数据流的流量。这些传输层是通过减少数据源的传送数据组的大小实现的。流量控制能防止在网络上丢失分段并且避免重传。六、错误恢复出于多种原因,数据片段在通过网络传输时可能被破坏,从而丢失。传输层通过重传任何丢失的数据确保所有的片段都能到达目的地。七、开始会话传输层通过在应用程序间建立一个会话提供面向连接的定位服务。这些连接在传送任何数据之前准备好应用程序间的通信。在这些会话中,在两个应用程序通信的数据可以被严格地管理。八、数据要求各不相同由于不同的应用程序有不同的要求,所以传输层协议也有很多种。例如,只有接收和显示完整的电子邮件或Web网页,用户才能使用其中的信息。因此,为确保接收和显示的信息的完整性而导致的轻微延迟是可以接受的。相比之下,在电话交谈的过程中偶尔丢失小部分内容是可以接受的。通话人可以从交谈过程推断出丢失的语音内容,否则可以直接请对方复述刚才的话。显然,这种方式要比请求网络来管理并重发丢失的数据段更好,因为可以减少延迟。在此例中,由用户而不是网络来管理丢失信息的重发或替换工作。在当今的融合的网络中,声音、视频、数据都在相同的网络上通信,不同传输层协议所包含的规则各不相同,因此设备可以处理各种各样的数据要求。有些协议,例如UDP(用户数据报协议),只提供在相应的应用程序之间高效传送数据片段所需的一些基本功能。这类协议适用于那些对数据延迟极敏感的应用程序。其他传输层协议,例如TCP(传输控制协议)描述的进程提供了一些附加功能确保应用程序之间可靠传输。虽然这些附加功能可以在传输层上提供更为健全的应用程序间数据通信,但同时也产生了额外的开销并增加了对网络的要求。为了识别每段数据,传输层向每个数据段添加包含二进制数据的报头。报头含有一些比特字段。不同的传输层协议通过这些字段值执行各自的功能。支持可靠通信通过前面的学习,我们了解到传输层的主要功能就是管理主机会话过程中的应用程序数据。但由于不同的应用程序对数据有不同的要求,因此需要开发不同的传输层协议来满足这些要求。TCP是网络层协议,它能确保数据的可靠传输。在网络术语中,可靠性指从源设备发送的每段数据都能够到达目的设备。在传输层中,有三项基本的可靠性操作:跟踪已发送的数据;确认已接收的数据;重新传输未确认的数据。这就要求源主机的传输层进程持续跟踪每个会话过程中的所有数据片段,并重新传输未被目的主机确认的数据。为了支持这种可靠性操作,需要在收发主机之间交换更多的控制数据。控制数据位于传输层(第4层)的报头中。这样,可靠性和网络负载之间就达成了平衡。应用程序开发人员必须根据他们应用程序的需求,选择适合的传输层协议类型,如图4-5所示。在传输层中,既有规定可靠保证传输的协议,也有规定尽力传输的协议。在网络环境中,尽力传输被称为不可靠传输,因为它缺乏目的设备对所收到数据的确认机制。图4-5 传输层协议像数据库、Web网页及电子邮件等应用程序都要求发送的数据以原始状态到达目的设备,这样才能够为目的程序所使用。任何数据的丢失都可能导致通信失败,要么不能完成通信,要么通信的信息不可读。因此,这些应用程序都设计成使用能满足可靠性要求的传输层协议,同时也会考虑这些程序所需的额外网络开销。其他应用程序允许丢失少量的数据。例如,如果视频数据流中的一段或者两段数据未到达目的地,就只会造成数据流的短暂中断。这可能表现为图像失真,用户也许不会察觉。对于这种应用程序而言,增加开销一方面确保了应用程序的可靠性,但另一方面却降低了应用程序的实用性。如果视频流目的设备必须获得完整的数据,则等待丢失数据所导致的延迟将使图像质量严重下降。最好采用当时收到的数据段来尽可能提供好的图像质量,而忽略可靠性。如果出于某种原因而需要确保可靠性时,可以通过应用程序自身来提供检查错误和请求重新发送机制。TCP和UDPTCP/IP协议族中最常用的两种传输协议是传输控制协议(TCP)和用户数据报协议(UDP)。这两种协议都用于管理多个应用程序的通信,其不同点在于每个协议执行各自特定的功能。一、用户数据报协议(UDP)根据RFC 768,UDP是一种简单的无连接协议。该协议的优点在于提供低开销数据传输。UDP中的通信数据段称为数据报。UDP采用尽力方式传送数据报。使用UDP协议的应用包括:域名系统(DNS);视频流;IP语音(VoIP)。图4-6是UDP数据报的一个例子。图4-6 UDP数据报二、传输控制协议(TCP)根据RFC 793,TCP是一种面向连接的协议。为实现额外的功能,TCP协议会产生额外的开销。TCP协议描述的其他功能包括原序处理、可靠传输以及流量控制。每个TCP数据段在封装应用层数据的报头中都有20字节的开销,而每个UDP数据段只需要8字节的开销。图4-7显示了TCP数据报。图4-7 TCP数据报使用TCP协议的应用程序包括:Web浏览器;电子邮件;文件传输程序。端口寻址我们仍举前面说过的一个例子来说明。假设一台计算机在同时收发电子邮件和即时消息、浏览Web网页并进行VoIP电话呼叫。支持TCP和UDP协议的服务将对正在通信的不同应用程序进行跟踪。为了区分每个应用程序的数据段和数据报,TCP和UDP协议中都有标志应用程序的唯一报头字段。一、识别会话数据段或者数据报的报头包含一个源端口和目的端口。源端口号是与本地主机上始发应用程序相关联的通信端口号;而目的端口号则是与远程主机上目的应用程序相关联的通信端口号。根据消息性质的不同(请求或响应),可以采用不同的方法分配端口号。服务器的进程有静态分配的端口号,而客户端则为每个会话动态选择端口号。当客户端应用程序向服务器应用程序发送请求时,包含在报头中的目的端口号即为分配给远程主机上运行的服务守护程序的端口号。客户端软件必须要知道与远程主机上的该服务器进程相关联的端口号。该目的端口号通过手动或者默认方式配置。例如,当Web浏览器程序向Web服务器发出请求时,除非另行指定,否则浏览器程序都将使用TCP端口80。TCP端口80是Web服务应用程序默认分配的端口号。很多常见应用程序都有其默认的端口号。客户端请求信息时,数据段或数据报的报头包含随机生成的源端口号。只要不与系统中正在使用的其他端口冲突,客户端可以选择任意端口号。对于请求数据的应用程序而言,该端口号就像是一个返回地址。传输层将跟踪此端口和发出该请求的应用程序,当返回响应时,传输层可以将其转发到正确的应用程序。在从服务器返回响应信息时,请求应用程序的端口号用作目的端口号。通过传输层端口号和网络层分配给主机的IP地址,我们可以唯一识别在特定主机上运行的特定进程。这种组合称为套接字。有时,端口号和套接字两个词可以互相替换使用。在本书中,套接字仅指IP地址和端口号的独特组合。包含源IP地址和目的IP地址以及端口号的套接字对可以唯一识别两台主机之间的会话。例如,当HTTP Web网页请求发送到第三层IPv4地址为0的主机上运行的Web服务器(端口80)时,套接字为0:80。如果请求Web网页的Web浏览器位于地址为8的主机上,且分配给Web浏览器的动态端口号为49152时,该Web网页的套接字则应该是 8:49152。如图4-8所示,这些唯一的识别是端口号,进程通过使用端口号识别不同的会话。图4-8 识别会话二、端口寻址类型与工具Internet编号指派机构(IANA)负责分配端口号。IANA是一个负责分配多种地址的标准化团体。端口号有如下不同类型:公认端口(端口0到1023);已注册端口(端口1024到49151);动态或私有端口(端口49152到65535)。下面的小节将讨论这三种类型的端口号,并且解释什么时候TCP/IP和UDP使用相同的端口号。你也可以了解netstat网络工具。三、知名端口公认端口(端口0到1023)用于服务和应用程序。HTTP(Web服务器)、POP3/SMTP(电子邮件服务器)以及Telnet等常用应用程序通常使用这些端口号。通过为服务器应用程序定义公认端口,可以将客户端应用程序设定为请求特定端口及其相关服务的连接。表4-1列出TCP和UDP的一些知名端口号。知名端口应 用 程 序协 议20文件传输协议(FTP)数据TCP21文件传输协议(FTP)控制TCP23TelnetTCP续表知名端口应 用 程 序协 议25简单邮件传输协议(SMTP)TCP69简单文件传输协议(TFTP)UDP80超文本传输协议(HTTP)TCP110邮局协议3(POP 3)TCP194Internet在线聊天(IRC)TCP443安全的HTTP(HTTPS)TCP520路由信息协议(RIP)UDP四、注册端口已注册端口(端口1024到49151)分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配了公认端口的常用应用程序。这些端口在没有被服务器资源占用时,可由客户端动态选用为源端口。表4-2列出了TCP和UDP使用的注册端口号。注册端口应 用 程 序协 议1812RADIUS身份验证UDP1863MSN Messenger TCP2000思科信令连接控制协议(SCCP,用在VoIP语音程序)UDP5004实时传输协议(RTP,语音与视频传输协议)UDP5060话路启动协议(SIP,用于VoIP应用程序)UDP8008HTTP备用TCP8080HTTP备用TCP五、动态或私有端口动态或私有端口(端口49152到65535),也称为临时端口。这些端口往往在开始连接时被动态分配给客户端应用程序。客户端一般很少使用动态或私有端口连接服务(只有一些点对点文件共享程序使用)。六、同时使用TCP和UDP一些应用程序可能既使用TCP,又使用UDP。例如,通过低开销的UDP,DNS可以很快响应很多客户端的请求。但有的时候,发送被请求的信息时需要满足TCP可靠性要求。在这种情况下,该程序内的两种协议将同时采用公认端口号53。表4-3列出了TCP和UDP常用的注册和知名端口号。常用端口应 用 程 序端 口 类 型53DNS公认TCP/UDP 常用端口161简单网络管理协议SNMP 公认TCP/UDP常用端口531AOL即时通信,IRC公认TCP/UDP常用端口续表常用端口应 用 程 序端 口 类 型144MS SQL已注册TCP/UDP常用端口2948WAP(MMS)已注册TCP/UDP常用端口七、netstat命令有些时候,需要了解联网主机中开放并运行了哪些活动的TCP连接。netstat是一种重要的网络实用程序,可用来检验此类连接。netstat可列出正在使用的协议、本地地址和端口号、外部地址和端口号以及连接的状态。不明的TCP连接可能表示某程序或某人正连接到本地主机,这可能是一个重大的安全威胁。此外,不必要的TCP连接会消耗宝贵的系统资源,降低主机性能。当性能出现下降时,就应该使用netstat命令检查主机上开放的连接。netstat命令有许多有用的选项。例4-1显示了netstat的输出。例4-1 netstat的输出分段和重组:分治法第2章网络通信,解释了如何通过不同的协议从应用程序发送数据,创建PDU并通过介质将其传输出去。在应用层,数据向下传递并且分段成片段。一个UDP的分段(片段)称为数据报。一个TCP的分段(片段)称为分段。一个UDP的报头提供提供源和目的(端口)。一个TCP的报头提供提供源和目的(端口)、顺序、确认和流控。在目的主机上,该进程以逆序的方式执行,直到数据传送到正确的应用程序。图4-9提供了一个例子。一些应用程序中需要传输大量的数据,有时能达到很多吉字节(GB)。因此,将所有数据放在一个大数据片段中发送并不现实。发送大段数据少则需要几分钟,多则需要数个小时,同一时间内网络将不能传输其他任何通信。此外,传输过程中一旦发生错误,整个数据文件都将丢失或需要重传。而在数据传输或接收过程中,网络设备中也没有足够的内存缓冲区来存储如此大量的数据。当然,这种局限性与网络技术和所使用的特定物理介质有关。如果将应用程序数据分割成若干段,既可以保证所传输数据的大小符合传输介质的限制要求,也可以确保不同应用程序发出的数据能在介质中多路传输。TCP和UDP处理数据段的方式不同。在TCP中,每个数据段报头中都包含一个序列号。该序列号允许传输层在目的主机上按原次序重组数据段。这样就确保目的应用程序收到的数据与发送设备发送的数据完全相同。尽管使用UDP的服务也跟踪应用程序间的会话,但它们并不关注信息传输的次序,也不维护连接。与TCP相比,UDP是一种简单设计,所需开销较低,因此数据传输速度较快。图4-9 传输层功能由于不同数据包是经由不同的网络路径传输的,因此信息到达的次序可能不同。采用UDP协议的应用程序必须接受数据到达的顺序和发送的次序不同这一后果。TCP:可靠通信TCP协议通常被称为面向连接的协议,这一协议保证可靠有序地将数据从发送者传送到接收者。在下面的小节中,你将研究这是如何管理的。讨论使用三次握手来建立和终止连接。流控,使用窗口做拥塞控制,并且实现数据重传。创建可靠会话TCP与UDP的关键区别在于可靠性。TCP通信的可靠性在于使用了面向连接的会话。主机使用TCP协议发送数据到另一主机前,传输层会启动一个进程,用于创建与目的主机之间的连接。通过该连接,可以跟踪主机之间的会话或者通信数据流。同时,该进程还确保每台主机都知道并做好了通信准备。完整的TCP会话要求在主机之间创建双向会话。会话创建后,目的主机针对收到的数据段向源主机发送确认信息。在TCP会话中,这些确认信息构成了可靠性的基础。源主机收到确认信息时,即表明数据成功发送,且可以退出数据跟踪。如果源主机未在规定时间内收到确认信息,它将向目的主机重新发送数据。使用TCP协议的额外系统开销部分源自确认信息和重新发送信息所产生的网络流量。建立会话产生的其他数据段交换也构成系统开销。此外,主机在跟踪待确认的数据和重新发送过程中也会产生额外开销。TCP通过数据段中各自具备特定功能的一些字段来满足可靠性要求。TCP服务器进程如在第3章应用层的功能与协议中所讨论的,应用程序进程在服务器上运行。这些进程需要一直等待,直到客户端发出信息请求或者服务请求启动通信。服务器上运行的每个应用程序进程都配置有一个端口号,由系统默认分配或者系统管理员手动分配。在同一传输层服务中,服务器不能同时存在具有相同端口号的两个不同服务。主机同时运行Web服务器应用程序和文件传输应用程序时,也不能为两个应程序配置相同的端口(如TCP端口8080)。当某个动态服务器应用程序分配到特定端口时,该端口在服务器上视为开启,这表明应用层将接受并处理分配到该端口的数据段。所有发送到正确套接字地址的传入客户端请求都将被接受,数据将被传送到服务器应用程序。在同一服务器上可以同时开启很多端口,每个端口对应一个动态服务器应用程序。对于服务器而言,同时开启多个服务(如Web服务器和FTP服务器)的情况很常见。提高服务器安全性的一个办法是限制服务器访问,只允许授权请求者访问与服务和应用程序相关的端口。图4-10中描述了TCP客户端/服务器运作模式中源端口和目的端口的典型配置。图4-10 客户端发送TCP请求TCP连接的建立和终止当两台主机采用TCP进行通信时,在交换数据前将建立连接。通信完成后,将关闭会话并终止连接。连接和会话机制保障了TCP的可靠性功能。三次握手主机将跟踪会话过程中的每个数据段,并使用TCP报头中的信息了解每台主机所接收到的数据。每个连接都代表两股单向通信数据流或者会话。若要建立连接,主机应执行三次握手。TCP报头中的控制位指出了连接的进度和状态。三次握手执行如下功能: 确认目的设备存在于网络上;确认目的设备有活动的服务,并且正在源客户端要使用的目的端口号上接受请求;通知目的设备源客户端想要在该端口号上建立通信会话。在TCP连接中,充当客户端的主机将向服务器发起该会话。TCP连接创建的过程分为以下三个步骤。1客户端向服务器发送包含初始序列值的数据段,开启通信会话。2服务器发送包含确认值的数据段,其值等于收到的序列值加1,并加上其自身的同步序列值。该值比序列号大1,因为ACK总是下一个预期字节或二进制八位数。通过此确认值,客户端可以将响应和上一次发送到服务器的数据段连接起来。3发送带确认值的客户端响应,其值等于接受的序列值加1。这便完成了整个建立连接的过程。图4-11显示了建立一个TCP连接的步骤。图4-11 TCP连接的建立:SYN ACK为了理解三次握手的过程,必须考察两台主机间交换的不同值。在TCP数据段报头中,有6个包含控制信息的1比特字段,用于管理TCP进程。这些字段分别是:URG-紧急指针;ACK-确认字段;PSH-推送功能;RST-重置连接;SYN-同步序列号;FIN-发送方已传输完所有数据。这些字段用作标志,由于它们都只有1比特大小,所以它们都只有两个值:1或者0。当值设为1时,表示数据段中包含控制信息。下一部分描述三次握手每一步的细节。一、步骤1:SYNTCP客户端发送带SYN(同步序列号)控制标志设置的数据段,指示包含在报头中的序列号字段的初始值,用以开启三次握手。序列号的初始值称为初始序列号(ISN),由系统随机选取,并用于跟踪会话过程中从客户端到服务器的数据流。在会话过程中,每从客户端向服务器发送一个字节的数据,数据段报头中包含的ISN值就要加1。SYN控制标志被置位并且相应的序列号设定为0。二、步骤2:SYN和ACKTCP服务器需要确认从客户端处收到SYN数据段,从而建立从客户端到服务器的会话。为了达到此目的,服务器应向客户端发送带ACK标志设置的数据段,表明确认编号有效。客户端将这种带确认标志设置的数据段理解为确认信息,即服务器已收到从TCP客户端发出的SYN信息。确认 编号字段的值等于客户端初始序列号加1。此时创建从客户端到服务器的会话。ACK标志将在会话期间保持平衡设置。客户端和服务器之间的会话实际上是由两个单向的会话组成的:一个是从客户端到服务器的会话,另一个则正好相反。在三次握手过程的第二步中,服务器必须发起从服务器到客户端的响应。为开启会话,服务器应采用与客户端同样的方法使用SYN标志。该操作设置报头中的SYN控制标志,从而建立从服务器到客户端的会话。SYN标志表明序列号字段的初始值已包含在报头中,且该值将用于跟踪会话过程中从服务器返回客户端的数据流。三、步骤3:ACK最后,TCP客户端发送包含ACK信息的数据段,以示对服务器发送的TCP SYN信息的响应。在该数据段中,不包括用户数据。确认号字段的值比从服务器接收的初始序列号值大1。一旦在客户端和服务器之间建立了双向会话,该通信过程中交换的所有数据段都将包含ACK标志设置。通过以下方式,你可以加强数据网络的安全性:拒绝建立TCP会话;只允许建立特定服务的会话;只允许已建立会话之间的通信。你可以将安全策略应用于所有TCP会话,也可以仅应用于某些选定的会话。TCP会话终止若要关闭连接,应设置数据段报头中的FIN(结束)控制标志。为终止每个单向TCP会话,需采用包含FIN数据段和ACK数据段的二次握手。因此,若要终止TCP支持的整个会话过程,需要实施4次交换,以终止两个双向会话:1当客户端的数据流中没有其他要发送的数据时,它将发送带FIN标志设置的数据段;2服务器发送ACK信息,确认收到从客户端发出的请求终止会话的FIN信息;3服务器向客户端发送FIN信息,终止从服务器到客户端的会话;4客户端发送ACK响应信息,确认收到从服务器发出的FIN信息。图4-12显示了终止一个TCP连接所使用的步骤。注 意在本部分中,为了更容易理解,采用了客户端和服务器端进行说明。实际上,终止的过程可以在任意两台完成会话的主机之间展开。当会话中的客户端没有其他要传输的数据时,它将在数据段报头中设置FIN标志。然后,会话中的服务器端将发送包含ACK标志设置的一般数据段信息,通过确认号确认已经收到所有数据。当所有数据段得到确认后,会话关闭。另一方向的会话采用相同的方式关闭。接收方在数据段的报头中设置FIN标志,然后发送到发送方,表明没有其他需要发送的数据。返回的确认信息确定已接收所有数据,随即该方向的会话关闭。也可以通过三次握手方式关闭连接。当客户端没有其他要传输的数据时,它将向服务器发送FIN信息。如果服务器也没有其他要传输的数据,它将发送同时包含FIN和ACK标志设置的响应信息,将两步并作一步。最后,客户端返回ACK信息。TCP窗口确认TCP的一项功能是确保每个数据段都能到达目的地。位于目的主机的TCP服务对接收到的数据进行确认,并向源应用程序发送确认信息。使用数据段报头序列号以及确认号来确认已收到包含在数据段中的相关的数据字节。这个序列号表明在这个会话中被传送的已经接收到的字节数和当前分段中包含的字节。TCP在发回源设备的数据段中使用确认号,指示接收设备期待接收的下一字节。该过程称为期待确认。收到确认信息后,源设备即得知目的设备已收到数据流中确认号之前的所有字节,但不包括确认号所指示的字节。随后,源主机将继续发送数据段,且数据段的序列号应等于该确认号。请记住,每个连接都实际包含两个单向会话,且两个方向上都在进行序列号和确认号的交换。在图4-13中,左侧主机正在向右侧主机发送数据。它发送的数据段包含10字节的会话数据,数据段报头中的序列号等于1。图4-13 TCP数据段的确认 主机B在网络层接收数据段,并确认其序列号为1,且数据字节数为10。主机B随即向主机A发送数据段,确认收到数据。在确认数据段中,该主机将确认号设为11,表明它期望下一接收数据的字节数为11。当主机A接收到该确认信息时,它可以立即发送字节编号为11的下一会话数据段。在本例中,如果主机A需要等待每个10字节数据段的确认信息,网络将负担很多额外开销。为减少这些确认信息的开销,可以预先发送多个数据段,并在相反方向上采用单一TCP消息进行确认。这种确认消息中包含基于所接收的所有会话字节的确认号。例如当序列号从2000起算时,如果已接收到10个1000字节的数据段,则可以向源设备发送一条编号为12001的确认消息。源主机在收到确认消息之前可以传输的数据大小称为窗口大小。窗口大小是TCP报头中的一个字段,用于管理丢失数据和流量控制。TCP重传无论网络设计得如何完美,都可能发生数据丢失现象。因此,TCP提供了管理数据段丢失的方法,其中一个方法就是重新发送未确认的数据。使用TCP的目的主机服务通常只确认相邻序列的数据。如果一个或多个数据段丢失,只确认已完成数据流中的数据段。例如,如果接收到序列号为1500到3000以及3400到3500的数据段,那么确认号应为3001。这是因为未收到序列号为3001到3399之间的数据段。如果源主机上的TCP未在规定时间内收到确认消息,它将根据收到的最后一个确认号重新发送数据。RFC793中未对重新发送过程进行说明,这属于TCP的特殊实施过程。TCP的标准实施流程是:主机传输数据段,并将数据段的副本列入重新发送队列,然后启动计时器。当接收到数据确认信息时,主机将从队列中删除对应数据段;如果到计时器超时还没有收到确认信息,将重新传输数据段。现在,主机还拥有一项备选功能:选择性确认。如果两台主机都支持选择性确认功能,目的主机便可以确认间断数据段中的数据,那么源主机就只需要重新传输丢失的数据。TCP拥塞控制:将可能丢失的数据段降到最少TCP通过使用少量控制与动态窗口大小提供拥塞控制。下面将讨论这些技术如何最小化丢失的数据段,以减小因重传丢失的数据段而造成的网络负担。一、Flow控制流量控制功能通过调整会话过程中两个服务之间的数据流速率,帮助实现TCP的可靠传输。当源主机被告知已收到数据段中指定数量的数据时,它就可以继续发送更多的数据。TCP报头中的窗口大小字段指出了在收到确认信息之前可以传输的数据量。初始窗口大小应在会话创建阶段通过三次握手来确定。TCP反馈机制将根据网络和目的设备所能支持的最大容量(以不丢失数据为前提)将数据传输速率调整到最大。通过对传输速率的管理,TCP尝试确保收到全部数据且将数据重发率降到最低。请参看图4-14中对窗口大小和确认消息的简易展示。在本例中,TCP会话的初始窗口大小为3000字节。此会话的发送方在传输3000字节后等待这些数据的确认消息,以便继续传输更多数据段。一旦发送方收到接收方发送的确认消息,它就可以传送另外3000字节的数据段。接收确认信息出现延迟时,发送方将不再发送任何会话数据段。如果网络拥堵,或者接收主机资源紧张,延迟时间可能就更长。延迟时间越长,该会话过程的有效传输速率越低,而数据传输速率的降低有助于缓解资源紧张的状态。二、动态窗口大小我们也可以通过动态窗口大小来控制数据流量。当网络资源受到限制时,TCP可以减小窗口的大小,这样,目的主机就需要更加频繁地确认所接收的数据段。由于源主机需要更加频繁地等待数据确认,这便可以大大降低传输的速率。TCP目的主机将窗口大小值发给源主机,表明它在该会话过程中准备接收的字节数。如果目的主机由于缓冲内存受限需要降低通信速率,那么它向源主机发送的确认信息中可以包含一条较小的窗口大小值。如图4-15所示,如果目的主机发生拥堵,它可以向源主机发送包含较小窗口大小的数据段。图4-15中显示,其中一个数据段丢失了。目的主机将返回数据段的TCP报头中的窗口字段值由3000减为1500,即将窗口大小改为1500。图4-15 TCP拥塞控制和流量控制如果过了一段时间,在传输过程中没有发生数据丢失或者资源受限,目的主机将增加窗口大小值。由于此时只需发送少量的确认信息,因此该方式减少了网络的开销。窗口大小将持续增加,直至有数据丢失,然后窗口大小又将随之减少。TCP中这种增减窗口大小值的动态运动不断进行,直至达到每个TCP会话的最佳窗口大小。在高效网络中,由于不丢失数据,窗口大小可能会相当大;而在基础架构紧张的网络中,窗口大小就会很小。UDP协议:低开销通信UDP是一种简单协议,提供了基本的传输层功能。与TCP相比,UDP的开销极低,因为UDP是无连接的,并且不提供复杂的重新传输、排序和流量控制机制。UDP:低开销与可靠性对比由于UDP的开销极低,不像TCP那样提供可靠性的功能,当你选择UDP的时候要小心。不过,这并不说明使用UDP的应用程序不可靠,而仅仅是说明,作为传输层协议,UDP不提供上述几项功能,如果需要这些功能,必须通过其他方式来实现。某些应用程序可以容许小部分数据丢失(如网络游戏或VoIP)。如果这些应用程序采用TCP,那么将面临巨大的网络延迟,因为TCP需要不停检测数据是否丢失并重传丢失的数据。与丢失小部分数据相比,网络延迟对这些应用程序造成的负面影响更大。例如像DNS这样的应用,如果收不到回应,它就再次发出请求。因此,它不需要TCP来保证消息的可靠传输。正是由于UDP的开销低,对此类应用程序就非常有吸引力。4.5.2 UDP数据报重组与TCP的通信机制不同,由于UDP是无连接协议,因此通信发生之前不会建立会话。UDP是基于事务的,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论