第八章 传输层协议.doc_第1页
第八章 传输层协议.doc_第2页
第八章 传输层协议.doc_第3页
第八章 传输层协议.doc_第4页
第八章 传输层协议.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第八章 传输层协议 网络协议教程1网络协议教程?西安理工大学应用数学学科?二零零五年十月网络协议教程2主讲王晓峰第八章传输层协议西安理工大学应用数学系网络协议教程3Inter在传输层使用了两个协议TCP和UDPTCP即传输控制协议,在网络通信传输机制中,它属于“面向连接,可靠传输”的类型。 在通信之前,需要在两个系统之间建立逻辑连接,在每个数据传输的过程中都需要进行应答,以保证数据包的完整。 ,在网络通信传输机制中,它属于“面向连接,可靠传输”的类型。 在通信之前,需要在两个系统之间建立逻辑连接,在每个数据传输的过程中都需要进行应答,以保证数据包的完整。 UDP即用户数据报协议,它属于“面向无连接,不可靠传输”的类型。 该协议只负责接收和传送由上层协议传递的消息,它本身不做任何的检测、修改与应答。 由于自身的特点,它成为进行网络广播的首选协议。 ,它属于“面向无连接,不可靠传输”的类型。 该协议只负责接收和传送由上层协议传递的消息,它本身不做任何的检测、修改与应答。 由于自身的特点,它成为进行网络广播的首选协议。 网络协议教程4主要内容传输控制协议(TCP)TCP报文段TCP连接管理TCP传输策略TCP拥塞控制网络协议教程58.1传输控制协议TCP网络协议教程61.TCP的三个功能TCP具有送达确认(可靠传输)和调整收/发速率的功能,具体它实现了以下三个功能1)建立与释放跟通信对端的连接,TCP连接是一种逻辑连接,它的建立通常情况下要经过三次握手机制来完成。 2)在数据传输过程中提供通信控制功能,包括窗口控制(流控)、重发控制、拥塞控制和对数据的差错校验。 3)作为应用中介,利用socket向应用层提供可靠的、面向连接的传输服务。 TCP具有送达确认(可靠传输)和调整收/发速率的功能,具体它实现了以下三个功能1)建立与释放跟通信对端的连接,TCP连接是一种逻辑连接,它的建立通常情况下要经过三次握手机制来完成。 2)在数据传输过程中提供通信控制功能,包括窗口控制(流控)、重发控制、拥塞控制和对数据的差错校验。 3)作为应用中介,利用socket向应用层提供可靠的、面向连接的传输服务。 网络协议教程72.TCP协议的主要特性及其含义( (1)面向流的投递服务应用程序之间传输的数据可视为无结构的字节流(或位流),流投递服务保证收发的字节顺序完全一致。 应用程序之间传输的数据可视为无结构的字节流(或位流),流投递服务保证收发的字节顺序完全一致。 ( (2)面向连接的投递服务数据传输之前,TCP模块之间需建立连接(类似虚电路),其后的TCP报文在此连接基础上传输。 ( (3)可靠传输服务接收方根据收到的报文中的校验和,判断传输的正确性如果正确,进行应答,否则丢弃报文。 发送方如果在规定的时间内未能获得应答报文,自动进行重传。 接收方根据收到的报文中的校验和,判断传输的正确性如果正确,进行应答,否则丢弃报文。 发送方如果在规定的时间内未能获得应答报文,自动进行重传。 网络协议教程8( (4)缓冲传输TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。 缓冲传输允许将应用程序的数据流积累到一定的体积,形成报文,再进行传输。 TCP模块提供强制性传输(立即传输)和缓冲传输两种手段。 缓冲传输允许将应用程序的数据流积累到一定的体积,形成报文,再进行传输。 ( (5)全双工传输TCP模块之间可以进行全双工的数据流交换。 ( (6)流量控制TCP模块提供滑动窗口机制,支持收发TCP模块之间的端到端流量控制。 TCP模块提供滑动窗口机制,支持收发TCP模块之间的端到端流量控制。 网络协议教程9.传输层网络层传输层网络层SMTP FTP DNSSNMP应用层TCPUDPIP.TCP协议与其它层次协议的关系网络协议教程103.端口与套接字TCP允许运行在不同主机上的应用程序相互交换数据流。 在允许运行在不同主机上的应用程序相互交换数据流。 在TCP协议之上是应用层协议(如FTP、SMTP、TELNET等),最终需依靠它们实现主机间的通信。 等),最终需依靠它们实现主机间的通信。 TCP和UDP都使用了应用层接口处的端口与上层的应用进程进行通讯。 为了识别不同的应用进程,都使用了应用层接口处的端口与上层的应用进程进行通讯。 为了识别不同的应用进程,Tcp协议引进了端口和套接字套接字的概念。 网络协议教程11端口与套接字在网络上,很多应用程序都使用TCP协议或UDP协议与其他机器上的应用程序进行通信。 但是,在一台机器上,可能同时有多个应用程序在运行,那么,当目的机在收到数据后,怎么知道这些数据是发送给该机上的哪个应用程序的呢?为此,TCP/IP协议中引进了在网络上,很多应用程序都使用TCP协议或UDP协议与其他机器上的应用程序进行通信。 但是,在一台机器上,可能同时有多个应用程序在运行,那么,当目的机在收到数据后,怎么知道这些数据是发送给该机上的哪个应用程序的呢?为此,TCP/IP协议中引进了端口(port)的概念,利用端口来区分应用程序,每个端口与一个应用程序相联系。 每个端口有一个16位(二进制)的标识符,称为端口号。 由于每个主机上的端口号是独立分配的,所以它不可能全局唯一。 的概念,利用端口来区分应用程序,每个端口与一个应用程序相联系。 每个端口有一个16位(二进制)的标识符,称为端口号。 由于每个主机上的端口号是独立分配的,所以它不可能全局唯一。 端口号与主机的IP地址合起来,就构成了套接字Socket端口号与主机的IP地址合起来,就构成了套接字Socket,它能在全网范围内唯一标识某个主机的某个端口,也即套接字Socket能够唯一标识某个应用程序的位置。 ,它能在全网范围内唯一标识某个主机的某个端口,也即套接字Socket能够唯一标识某个应用程序的位置。 网络协议教程12端口和套接字在TCP/IP协议中,套接字对应的端口号由于是用16位2进制来表示的,所以它的范围从0到65535。 在实际应用中,小于1024的端口号常被系统保留,用于一些预定义的服务,如端口21用于FTP协议,端口25用于EMAIL,Web服务缺省的端口号为80。 在TCP/IP协议中,套接字对应的端口号由于是用16位2进制来表示的,所以它的范围从0到65535。 在实际应用中,小于1024的端口号常被系统保留,用于一些预定义的服务,如端口21用于FTP协议,端口25用于EMAIL,Web服务缺省的端口号为80。 网络协议教程13网络协议教程14TCP常用的熟知端口号端口号服务进程说明文件传输协议(控制连接)20FTP文件传输协议(数据连接)21FTP23Tel虚拟终端网络25SMTP简单邮件传输协议53DNS域名服务器80超文本传输协议111RPC远程过程调用网络协议教程15端口和套接字TCP端口为信息的传送提供地点。 网络应用程序把两台希望相互通讯的计算机连在一起,所以它们需要连接来交换数据。 在TCP/IP中,这种连接叫做TCP端口为信息的传送提供地点。 网络应用程序把两台希望相互通讯的计算机连在一起,所以它们需要连接来交换数据。 在TCP/IP中,这种连接叫做套接字(Socket)。 套接字(Socket)。 TCP/IP的套接字是一种支撑某种通信的通道,所以需要两个套接程序,每台计算机一个。 TCP/IP的套接字是一种支撑某种通信的通道,所以需要两个套接程序,每台计算机一个。 为了建立双方的连接,以达到各类通讯要求,一个应用程序通过定义三部分来产生一个为了建立双方的连接,以达到各类通讯要求,一个应用程序通过定义三部分来产生一个套接字主机IP地址、服务类型(面向连接的服务是TCP,无连接服务是UDP)、应用程序所用的端口。 套接字主机IP地址、服务类型(面向连接的服务是TCP,无连接服务是UDP)、应用程序所用的端口。 套接字在要领上与文件句柄类似,因为其功能是作为网络通信的终结点。 套接字在要领上与文件句柄类似,因为其功能是作为网络通信的终结点。 网络协议教程16在建立连接时,通过向本地端口发送OPEN命令及外部套接字参数建立连接,TCP返回一个标记这个连接的名称,以后如果用户需要使用这个名称标记这个连接。 为了保存这个连接的信息,我们假设有一个称为传输控制块(Transmission ControlBlock,TCB)的东西来保存。 OPEN命令还指定这个连接的建立是主动请求还是被动等待请求。 网络协议教程17网络协议教程18TCP的服务尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。 TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。 这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。 当一方通信结束后断开连接。 在一个TCP连接中,仅有两方进行彼此通信。 广播和多播不能用于TCP。 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。 TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。 这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。 当一方通信结束后断开连接。 在一个TCP连接中,仅有两方进行彼此通信。 广播和多播不能用于TCP。 网络协议教程19TCP通过下列方式来提供可靠性应用数据被分割成TCP认为最适合发送的数据块。 这和UDP完全不同,应用程序产生的数据报长度将保持不变。 由TCP传递给IP的信息单位称为报文段或段(segment)TCP如何确定报文段的长度。 应用数据被分割成TCP认为最适合发送的数据块。 这和UDP完全不同,应用程序产生的数据报长度将保持不变。 由TCP传递给IP的信息单位称为报文段或段(segment)TCP如何确定报文段的长度。 TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。 如果不能及时收到一个确认,将重发这个报文段。 在第21章我们将了解TCP协议中自适应的超时及重传策略。 TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。 如果不能及时收到一个确认,将重发这个报文段。 在第21章我们将了解TCP协议中自适应的超时及重传策略。 TCP收到发自TCP连接另一端的数据,它将发送一个确认。 这个确认不是立即发送,通常将推迟几分之一秒。 TCP收到发自TCP连接另一端的数据,它将发送一个确认。 这个确认不是立即发送,通常将推迟几分之一秒。 TCP将保持它首部和数据的检验和。 这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。 如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 TCP将保持它首部和数据的检验和。 这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。 如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。 网络协议教程20既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此数据报的到达可能会失序,因此TCP,报文段的到达也可能会失序。 如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。 TCP还能提供流量控制。 TCP连接的每一方都有固定大小的缓冲空间。 连接的每一方都有固定大小的缓冲空间。 TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。 这将防止较快主机致使较慢主机的缓冲区溢出。 的接收端只允许另一端发送接收端缓冲区所能接纳的数据。 这将防止较快主机致使较慢主机的缓冲区溢出。 过两个应用程序通过TCP连接交换8bit字节构成的字节流。 TCP不在字节流中插入记录标识符。 我们将这称为字节流服务(不在字节流中插入记录标识符。 我们将这称为字节流服务(bytestreamservice)。 如果一方的应用程序先传10字节,又传20字节,再传50字节,连接的另一方将无法了解发方每次发送了多少字节。 收方可以分字节,连接的另一方将无法了解发方每次发送了多少字节。 收方可以分4次接收这80个字节,每次接收20字节。 一端将字节流放到字节。 一端将字节流放到TCP连接上,同样的字节流将出现在TCP连接的另一端。 另外,连接的另一端。 另外,TCP对字节流的内容不作任何解释。 TCP不知道传输的数据字节流是二进制数据,还是不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据。 对字节流的解释由字符或者其他类型数据。 对字节流的解释由TCP连接双方的应用层解释。 网络协议教程218.2TCP报文段网络协议教程22在两台计算机之间传输的数据单元称为报文段在两台计算机之间传输的数据单元称为报文段(segment)。 报文段交换涉及到建立连接、数据传输、发送确认、通知窗口尺寸,直到关闭连接。 报文段交换涉及到建立连接、数据传输、发送确认、通知窗口尺寸,直到关闭连接。 网络协议教程23TCP报文段格式源端口号目的端口号序号确认号源端口号目的端口号序号确认号数据偏移保留数据偏移保留URGACKPSHRSTSYNFI N窗口检验和紧急指针窗口检验和紧急指针选项(长度可变)充填TCP首部TCP数据部分IP数据部分TCP报文段20字节的固定首部TCP首部网络协议教程24TCP报文段首部格式网络协议教程25端口(2字节)目的端口(2字节)序号(4字节)确认序号(4字节)头长度(双4字节)保留(6位)URG ACKPSH RSTSYN PIN窗口大小(2字节)校验和(16位)紧急指针(16位)选项(可选)数据网络协议教程26TCP报文段首部字段含义源端口(Source Port)16位,标志连接本地应用程序的端口号,。 源端口的作用是标识报文的返回地址。 (Source Port)16位,标志连接本地应用程序的端口号,。 源端口的作用是标识报文的返回地址。 目的端口16位,这个端口指明报文接收计算机上的应用程序地址接口端口号。 16位,这个端口指明报文接收计算机上的应用程序地址接口端口号。 序列码32位,当SYN出现,序列码实际上是初始序列码(ISN),而第一个数据字节是ISN+1;指数据在发送端数据流中的顺序号,即报文段在与本报文段同向流动的数据流中的位置顺序号。 32位,当SYN出现,序列码实际上是初始序列码(ISN),而第一个数据字节是ISN+1;指数据在发送端数据流中的顺序号,即报文段在与本报文段同向流动的数据流中的位置顺序号。 确认码32位,如果设置了ACK控制位,这个值表示一个准备接收的包的序列码;指本报文段的接收方下一个期待接收的字节编号,即与本报文段反向流动的数据流的编号。 32位,如果设置了ACK控制位,这个值表示一个准备接收的包的序列码;指本报文段的接收方下一个期待接收的字节编号,即与本报文段反向流动的数据流的编号。 数据偏移量(TCP头长度)32位,指明报文段头的长度。 因为头中任选项的长度可变,由它包含哪些选项而定,因此,TCP头也是常变的。 该字段实际上是指数据在报文段中开始的位置,即指示何处数据开始,以32字节为单位来测量,该字段指出头部包含多少个32字节。 32位,指明报文段头的长度。 因为头中任选项的长度可变,由它包含哪些选项而定,因此,TCP头也是常变的。 该字段实际上是指数据在报文段中开始的位置,即指示何处数据开始,以32字节为单位来测量,该字段指出头部包含多少个32字节。 网络协议教程27保留6位,这些位必须是0;编码位(控制位)6位,确定报文段的目的和内容,解释报文段中的其他段;6位,确定报文段的目的和内容,解释报文段中的其他段;窗口16位,目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。 16位,目的机使用16位的域告诉源主机,它想收到的每个TCP数据段大小。 校验位16位,这个校验和和IP的校验和有所不同,不仅对头数据进行校验还对封包内容校验。 的校验和有所不同,不仅对头数据进行校验还对封包内容校验。 紧急指针(Urgent Pointer)当URG为1的时候才有效。 TCP的紧急方式是发送紧急数据的一种方式。 当URG为1的时候才有效。 TCP的紧急方式是发送紧急数据的一种方式。 选项长度不定;但长度必须以字节记;选项的具体内容我们结合具体命令来看;长度不定;但长度必须以字节记;选项的具体内容我们结合具体命令来看;填充不定长,填充的内容必须为0,它是为了保证包头的结合和数据的开始处偏移量能够被,它是为了保证包头的结合和数据的开始处偏移量能够被32整除;网络协议教程28编码位(控制位)的字段含义: (1)URG是否使用紧急指针,0为不使用,1为使用。 (2)ACK请求/应答状态。 0为请求,1为应答。 (3)PSH以最快的速度传输数据,接收方应尽快将这个报文段交给应用层。 以最快的速度传输数据,接收方应尽快将这个报文段交给应用层。 (4)RST连线复位,首先断开连接,然后重建。 (5)SYN同步序号用来发起一个连接。 (6)FIN结束连接。 如果FIN为0是结束连接请求,FIN为1表示结束连接。 结束连接。 如果FIN为0是结束连接请求,FIN为1表示结束连接。 网络协议教程298.3TCP连接管理网络协议教程30传输控制协议(TCP)的特点传输控制协议(TCP)的特点是提供可靠的、面向连接的数据报传递服务。 传输控制协议(TCP)的特点是提供可靠的、面向连接的数据报传递服务。 传输控制协议可以做到如下的六点 (1)确保IP数据报的成功传递。 (2)对程序发送的大块数据进行分段和重组。 (3)确保正确排序以及按顺序传递分段的数据。 (4)通过计算校验和,进行传输数据的完整性检查。 (5)根据数据是否接收成功发送消息。 通过有选择的确认,也对没有收到的数据发送确认。 (6)为必须使用可靠的基于会话的数据传输的程序提供支持,如数据库服务和电子邮件服务。 传输控制协议可以做到如下的六点 (1)确保IP数据报的成功传递。 (2)对程序发送的大块数据进行分段和重组。 (3)确保正确排序以及按顺序传递分段的数据。 (4)通过计算校验和,进行传输数据的完整性检查。 (5)根据数据是否接收成功发送消息。 通过有选择的确认,也对没有收到的数据发送确认。 (6)为必须使用可靠的基于会话的数据传输的程序提供支持,如数据库服务和电子邮件服务。 网络协议教程31TCP协议的工作原理TCP提供两个网络主机之间的点对点通讯。 TCP从程序中接收数据并将数据处理成字节流。 TCP提供两个网络主机之间的点对点通讯。 TCP从程序中接收数据并将数据处理成字节流。 首先将字节分成段,然后对段进行编号和排序以便传输。 在两个TCP主机之间交换数据之前,必须先相互建立会话。 TCP会话通过三次握手的完成初始化。 这个过程使序号同步,并提供在两个主机之间建立虚拟连接所需的控制信息。 首先将字节分成段,然后对段进行编号和排序以便传输。 在两个TCP主机之间交换数据之前,必须先相互建立会话。 TCP会话通过三次握手的完成初始化。 这个过程使序号同步,并提供在两个主机之间建立虚拟连接所需的控制信息。 TCP在建立连接的时候需要三次确认,俗称“三次握手”,在断开连接的时候需要四次确认,俗称“四次挥手”。 TCP在建立连接的时候需要三次确认,俗称“三次握手”,在断开连接的时候需要四次确认,俗称“四次挥手”。 网络协议教程32用于TCP中的套接字原语原语含义SOCKET创建一个新的通信端点BIND往套接字中附加本地地址LISTEN宣布愿意接受连接,给出队列大小ACCEPT阻塞呼叫者,直到连接尝试到达CONNECTE尝试建立连接SEND通过连接发送一些数据RECEIVE通过连接接收一些数据CLOSE释放连接网络协议教程331.TCP建立连接在TCP中建立连接采用三次握手的方法。 为了建立连接,其中一方,如服务器,通过执行LISTEN和ACCEPT原语被动地等待一个到达的连接请求。 在TCP中建立连接采用三次握手的方法。 为了建立连接,其中一方,如服务器,通过执行LISTEN和ACCEPT原语被动地等待一个到达的连接请求。 另一方,如客户方,执行CONNECT原语,同时要指明它想连接到的IP地址和端口号,设置它能够接受的TCP数据报的最大值,以及一些可选的用户数据。 CONNECT原语发送一个SYN=1,ACK=0的数据报到目的端,并等待对方响应。 另一方,如客户方,执行CONNECT原语,同时要指明它想连接到的IP地址和端口号,设置它能够接受的TCP数据报的最大值,以及一些可选的用户数据。 CONNECT原语发送一个SYN=1,ACK=0的数据报到目的端,并等待对方响应。 该数据报到达目的端后,那里的TCP实体将察看是否有进程在侦听目的端口字段指定的端口。 如果没有,它将发送一个RST=1的应答,拒绝建立该连接。 该数据报到达目的端后,那里的TCP实体将察看是否有进程在侦听目的端口字段指定的端口。 如果没有,它将发送一个RST=1的应答,拒绝建立该连接。 如果某个进程正在对该端口进行侦听,于是便将到达的TCP数据报交给该进程,它可以接受或拒绝建立连接。 如果接受,便发回一个确认数据报。 一般情况下,TCP的连接建立过程如图3所示。 如果某个进程正在对该端口进行侦听,于是便将到达的TCP数据报交给该进程,它可以接受或拒绝建立连接。 如果接受,便发回一个确认数据报。 一般情况下,TCP的连接建立过程如图3所示。 网络协议教程34TCP协议的三次“握手”1009我可以连接到你吗?当然可以链接网络协议教程35TCP传输连接建立过程示意图主机A主机BSYN=1,ACK=0,SEQ=1200SYN=1,ACK=1,SEQ=4800,AN=1201SYN,ACK=1,SEQ=1201,AN=4801客户进程服务器进程客户进程服务器进程网络协议教程36网络协议教程37三次“握手”建立一个连接建立连接应用的是三次“握手”。 如果双方同时都发送SYN也没有关系,双方会发现这个SYN中没有确认,于是就知道了这种情况,通常来说,应该发送一个reset段来解决这种情况。 三消息握手减少了连接失败的可能性。 下面就是一个例子,在尖括号是的就是数据段中的内容和标记。 建立连接应用的是三次“握手”。 如果双方同时都发送SYN也没有关系,双方会发现这个SYN中没有确认,于是就知道了这种情况,通常来说,应该发送一个reset段来解决这种情况。 三消息握手减少了连接失败的可能性。 下面就是一个例子,在尖括号是的就是数据段中的内容和标记。 在第2行,TCP A发送SYN初始化序列号,表示它要使用序列号100;第3行中,TCP B给出确认,并且期待着A的带有序列号101的数据段;第4行,TCP A给出确认,而在第5行,它也给出确认,并发送了一些数据,注意第4行的序列号与第5号的一样,因为ACK信息不占用序列号空间内的序列号。 在第2行,TCP A发送SYN初始化序列号,表示它要使用序列号100;第3行中,TCP B给出确认,并且期待着A的带有序列号101的数据段;第4行,TCP A给出确认,而在第5行,它也给出确认,并发送了一些数据,注意第4行的序列号与第5号的一样,因为ACK信息不占用序列号空间内的序列号。 网络协议教程38同时产生请求的情况如下图所示:网络协议教程39网络协议教程40第一次“握手”首先分析建立“握手”第一个过程包的结构,如图所示网络协议教程41第二次“握手”SYN为1,开始建立请求连接,需要对方计算机确认,对方计算机确认返回的数据包如图所示,开始建立请求连接,需要对方计算机确认,对方计算机确认返回的数据包如图所示网络协议教程42第三次“握手”对方计算机返回的数据包中ACK为1并且SYN为1,说明同意连接。 这个时候需要源计算机的确认就可以建立连接了。 确认数据包的结构如图所示,说明同意连接。 这个时候需要源计算机的确认就可以建立连接了。 确认数据包的结构如图所示网络协议教程432.TCP释放连接为了释放连接,每方均可发送一个FIN=1的的TCP数据报,表明本方已无数据发送。 当数据报,表明本方已无数据发送。 当FIN数据报被确认后,那个方向的连接即告关闭。 当两个方向上的连接均关闭后,该连接就被完全释放了。 一般情况下,释放一个连接需要数据报被确认后,那个方向的连接即告关闭。 当两个方向上的连接均关闭后,该连接就被完全释放了。 一般情况下,释放一个连接需要4个TCP数据报每个方向均有一个数据报每个方向均有一个FIN数据报和一个ACK数据报。 网络协议教程44TCP协议的四次“挥手”需要断开连接的时候,TCP也需要互相确认才可以断开连接,四次交互过程如图所示也需要互相确认才可以断开连接,四次交互过程如图所示:1009我要结束连接当然可以好,收到终止了网络协议教程45主机A主机BFIN=1,ACK=0,SEQ=2500ACK=1,SEQ=6000,AN=2501ACK=1,SEQ=2501,AN=6002FIN=1,SEQ=6001,AN=2501客户进程服务器进程客户进程服务器进程TCP在传输连接释放过程中4次“挥手”过程网络协议教程46第一次“挥手”网络协议教程47第二次“挥手”第一次交互中,首先发送一个FIN=1的请求,要求断开,目标主机在得到请求后发送的请求,要求断开,目标主机在得到请求后发送ACK=1进行确认,如图所示网络协议教程48第三次“挥手”在确认信息发出后,就发送了一个FIN=1的包,与源主机断开,如图所示的包,与源主机断开,如图所示网络协议教程49第四次“挥手”随后源主机返回一条ACK=1的信息,这样一次完整的TCP会话就结束了。 会话就结束了。 网络协议教程508.4TCP传输策略网络协议教程51网络协议教程52TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。 发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。 当滑动窗口为0时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。 另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。 TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。 发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。 当滑动窗口为0时,发送方一般不能再发送数据报,但有两种情况除外,一种情况是可以发送紧急数据,例如,允许用户终止在远端机上的运行进程。 另一种情况是发送方可以发送一个1字节的数据报来通知接收方重新声明它希望接收的下一字节及发送方的滑动窗口大小。 网络协议教程53网络协议教程548.5TCP拥塞控制网络协议教程55拥塞控制当加载到某个网络上的载荷能力超过其处理能力时,便会出现拥塞现象。 对于因特网来说有两个潜在的问题-网络的容量和接收方的容量,应该分别进行处理。 发送方始终保持两个窗口接收方承认的窗口和拥塞窗口。 取两个窗口的最小值作为可以发送的字节数。 当加载到某个网络上的载荷能力超过其处理能力时,便会出现拥塞现象。 对于因特网来说有两个潜在的问题-网络的容量和接收方的容量,应该分别进行处理。 发送方始终保持两个窗口接收方承认的窗口和拥塞窗口。 取两个窗口的最小值作为可以发送的字节数。 当建立连接时,发送方将拥塞窗口大小初始化为该连接所用的最大数据报的长度值,并随后发送一个最大长度的数据报。 如果该数据报在定时器超时之前得到了确认,那么发送方会在原拥塞窗口的基础上再增加一个数据报的字节值,使其为两倍最大数据报的大小,然后发送两个数据报。 当这些数据报中的每一个都被确认后,拥塞窗口大小就再增加一个最大数据报的长度。 当拥塞窗口是N个数据报的大小时,如果发送的所有N个数据报都被及时确认,那么将拥塞窗口大小增加N个数据报对应的字节数目。 拥塞窗口保持指数规律增大,直到数据传输超时或者达到接收方设定的窗口大小。 拥塞窗口便设置为恰好不造成超时或达到接收方的窗口大小的字节数。 当建立连接时,发送方将拥塞窗口大小初始化为该连接所用的最大数据报的长度值,并随后发送一个最大长度的数据报。 如果该数据报在定时器超时之前得到了确认,那么发送方会在原拥塞窗口的基础上再增加一个数据报的字节值,使其为两倍最大数据报的大小,然后发送两个数据报。 当这些数据报中的每一个都被确认后,拥塞窗口大小就再增加一个最大数据报的长度。 当拥塞窗口是N个数据报的大小时,如果发送的所有N个数据报都被及时确认,那么将拥塞窗口大小增加N个数据报对应的字节数目。 拥塞窗口保持指数规律增大,直到数据传输超时或者达到接收方设定的窗口大小。 拥塞窗口便设置为恰好不造成超时或达到接收方的窗口大小的字节数。 网络协议教程56网络协议教程57网络协议教程581986年初,Jacobson开发了现在在TCP应用中的拥塞控制机制。 运行在端节点主机中的这些机制使得TCP连接在网络发生拥塞时回退(back off),也就是说TCP源端会对网络发出的拥塞指示(congestion notification)(例如丢包、重复的ACK等)作出响应。 1988年Jacobson针对TCP在控制网络拥塞方面的不足,提出了“慢启动”(Slow Start)和“拥塞避免”(Congestion Avoidance)算法。 1990年出现的TCP Reno版本增加了“快速重传”(Fast Retransmit)、1986年初,Jacobson开发了现在在TCP应用中的拥塞控制机制。 运行在端节点主机中的这些机制使得TCP连接在网络发生拥塞时回退(back off),也就是说TCP源端会对网络发出的拥塞指示(congestion notification)(例如丢包、重复的ACK等)作出响应。 1988年Jacobson针对TCP在控制网络拥塞方面的不足,提出了“慢启动”(Slow Start)和“拥塞避免”(Congestion Avoidance)算法。 1990年出现的TCP Reno版本增加了“快速重传”(Fast Retransmit)、“快速恢复”(Fast Recovery)算法,避免了网络拥塞不严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的现象,这样TCP的拥塞控制就由这4个核心部分组成。 近几年又出现TCP的改进版本如NewReno和选择性应答(selective acknowledgement,SACK)等。 正是这些拥塞控制机制防止了今天网络的拥塞崩溃。 快速恢复”(Fast Recovery)算法,避免了网络拥塞不严重时采用“慢启动”算法而造成过大地减小发送窗口尺寸的现象,这样TCP的拥塞控制就由这4个核心部分组成。 近几年又出现TCP的改进版本如NewReno和选择性应答(selective acknowledgement,SACK)等。 正是这些拥塞控制机制防止了今天网络的拥塞崩溃。 网络协议教程59TCP拥塞控制四个主要过程慢启动阶段早期开发的TCP应用在启动一个连接时会向网络中发送大量的数据包,这样很容易导致路由器缓存空间耗尽,网络发生拥塞,使得TCP连接的吞吐量急剧下降。 由于TCP源端无法知道网络资源当前的利用状况,因此新建立的TCP连接不能一开始就发送大量数据,而只能逐步增加每次发送的数据量,以避免上述现象的发生。 具体地说,当建立新的TCP连接时,拥塞窗口(congestion window,cwnd)初始化为一个数据包大小。 源端按cwnd大小发送数据,每收到一个ACK确认,cwnd就增加一个数据包发送量,这样cwnd就将随着回路响应时间(Round TripTime,RTT)呈指数增长,源端向网络发送的数据量将急剧增加。 事实上,慢启动一点也不慢,要达到每RTT发送W个数据包所需时间仅为RTTlogW。 由于在发生拥塞时,拥塞窗口会减半或降到1,因此慢启动确保了源端的发送速率最多是链路带宽的两倍。 网络协议教程60拥塞避免阶段如果TCP源端发现超时或收到3个相同ACK副本时,即认为网络发生了拥塞(主要因为由传输引起的数据包损坏和丢失的概率很小(ssthresh,TCP就执行拥塞避免算法,此时,cwnd在每次收到一个ACK时只增加1/cwnd个数据包,这样,在一个RTT内,cwnd将增加1,所以在拥塞避免阶段,cwnd不是呈指数增长,而是线性增长。 网络协议教程61快速重传和快速恢复阶段快速重传是当TCP源端收到到三个相同的ACK副本时,即认为有数据包丢失,则源端重传丢失的数据包,而不必等待RTO超时。 同时将ssthresh设置为当前cwnd值的一半,并且将cwnd减为原先的一半。 快速恢复是基于“管道”模型(pipe model)的“数据包守恒”的原则(conservation ofpackets principle),即同一时刻在网络中传输的数据包数量是恒定的,只有当“旧”数据包离开网络后,才能发送“新”数据包进入网络。 如果发送方收到一个重复的ACK,则认为已经有一个数据包离开了网络,于是将拥塞窗口加1。 如果“数据包守恒”原则能够得到严格遵守,那么网络中将很少会发生拥塞;本质上,拥塞控制的目的就是找到违反该原则的地方并进行修正。 网络协议教程628.6TCP定时器管理网络协议教程63TCP使用多个定时器来完成各种功能,其中有重发定时器(Retransmission Timer)、持续定时器(Persistence Timer)、保持激活定时器(Keep AliveTimer)、时钟等待定时器(Timed WaitTimer)。 最重要的是重发定时器。 在发送一个数据报的同时,启动一个数据重发定时器。 如果在定时器超时前该数据报被确认,则关闭该定时器;相反,如果在确认到达之前定时器超时,则需要重发该数据报。 最重要的是重发定时器。 在发送一个数据报的同时,启动一个数据重发定时器。 如果在定时器超时前该数据报被确认,则关闭该定时器;相反,如果在确认到达之前定时器超时,则需要重发该数据报。 持续定时器用于防止出现死锁情况。 当一个连接长时间闲置时,keep alive定时器会超时而使一方去检测另一方是否仍然存在。 如果它未得到响应,便终止该连接。 持续定时器用于防止出现死锁情况。 当一个连接长时间闲置时,keep alive定时器会超时而使一方去检测另一方是否仍然存在。 如果它未得到响应,便终止该连接。 网络协议教程648.7用户数据报UDP网络协议教程65UDP协议因特网协议组也支持无连接的传输协议UDP(user dataprotocol)。 UDP使用底层的因特网协议来传送报文,提供与使用底层的因特网协议来传送报文,提供与IP一样的不可靠的、无连接的数据报传输服务。 它不使用确认信息对报文的到达进行确认,不对收到的数据报进行排序,也不提供反馈信息来控制机器之间传输的信息流量。 一样的不可靠的、无连接的数据报传输服务。 它不使用确认信息对报文的到达进行确认,不对收到的数据报进行排序,也不提供反馈信息来控制机器之间传输的信息流量。 UDP通信的可靠性方面的工作,包括报文的丢失、重复、乱序等现象,由使用通信的可靠性方面的工作,包括报文的丢失、重复、乱序等现象,由使用UDP的应用程序来承担。 的应用程序来承担。 网络协议教程66一个UDP数据报包括一个8字节的头和数据部分。 报头的格式如下图字节的头和数据部分。 报头的格式如下图4所示,它包括四个长为16字节的字段。 源端口和目的端口的作用与字节的字段。 源端口和目的端口的作用与TCP中的相同,是用来标明源端和目的端的端口号。 中的相同,是用来标明源端和目的端的端口号。 UDP长度字段指明包括8个字节的头和数据在内的数据报长度。 个字节的头和数据在内的数据报长度。 UDP校验和字段是可选项,用于纪录校验和字段是可选项,用于纪录UDP头、UDP伪头、用户数据三者的校验和。 网络协议教程67用户数据报协议UDP的用途虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点,例如( (1)发送数据之前不需要建立连接(当然发送数据结束时也没有连接需要释放当然发送数据结束时也没有连接需要释放),因而减少了开销和发送数据之前的时延。 ,因而减少了开销和发送数据之前的时延。 网络协议教程68 (2)UDP没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。 (2)UDP没有拥塞控制,也不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。 (3)UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。 (3)UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。 (4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。 (4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。 表8-1给出了一些应用和应用层协议主要使用的运输层协议(UDP或TCP)。 表8-1给出了一些应用和应用层协议主要使用的运输层协议(UDP或TCP)。 网络协议教程69表8-1使用U D P和T C P协议的各种应用和应用层协议应用应用层协议运输层协议名字转换D NS U D P路由选择协议R IP U D P网络管理S NM P U DP远程文件服务器N FS UD PIP电话专用协议UDP流式多媒体通信专用协议UDP多播IG MPUDP电子邮件S MT P T CP远程终端接入T ELN ETT CP万维网H TT PT CP文件传送

温馨提示

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

评论

0/150

提交评论