计算机网络基础 课件 第7章 运输层-改_第1页
计算机网络基础 课件 第7章 运输层-改_第2页
计算机网络基础 课件 第7章 运输层-改_第3页
计算机网络基础 课件 第7章 运输层-改_第4页
计算机网络基础 课件 第7章 运输层-改_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

打造人工智能共享实训基地,我校专业集群协调发展

信系第7章、传输层第7章、传输层学习目标

传输层是整个网络体系结构中的关键层之一。一定要弄清楚以下几个重要概念:•理解传输层的作用。•了解端口和套接字的意义。•了解传输层与网络层和应用层的关系。•了解无连接的UDP的特点。•了解面向连接的TCP的特点。•掌握在不可靠的网络上实现可靠传输的工作原理。•掌握TCP的滑动窗口、流量控制、拥塞控制和连接管理第7章、传输层7.1传输层协议7.2用户数据报协议UDP7.3传输控制协议TCP7.4技能训练1:常用命令7.1传输层协议7.1.1传输层的作用7.1.2进程之间的通信7.1.3传输层协议7.1.4多路复用与多路分解7.1.1传输层的作用在TCP/IP模型中,应用程序将数据传递给应用层,应用层再将数据传递给传输层。传输层负责在两个应用程序之间建立临时通信会话以及在它们之间传递数据。传输层工作在OSI参考模型(开放系统互连参考模型,是国际标准化组织ISO在1977年提出的一种网络体系结构。)第四层。工作在TCP/IP参考模型的第二层7.1.1传输层的作用(1)跟踪各个会话。在传输层中,每台主机上都可以有多个应用程序在网络上通信。每个应用程序都与一台或多台远程主机上的一个或多个应用程序通信。传输层负责维护并跟踪这些会话。(2)数据分段和数据段重组。传输层协议的服务可将应用程序数据分为大小适中的数据块。该服务包括每段数据所需的封装功能。报头用于重组,每个数据块都会添加一个报头。此报头用于跟踪数据流。数据片段到达目的设备后,传输层必须能将其重组为可用于应用层的完整数据流。传输层协议规定了如何使用传输层报头信息来重组要传送到应用层的数据片段。7.1.1传输层的作用

(4)端到端连接提供流量控制、差错控制等管理服务网络内存和带宽是有限的,当传输层发现此类资源过载时,就会利用某些传输层协议要求减小数据流量。流量控制同时可以防止网络丢失分段或分段重组。当然,数据在网络中的分段很可能随时发生错误或丢失。此时,传输层能够通过重传来保证所有数据的正确性和完整性。(3)标识应用程序。传输层为每一个应用程序分配一个标识符,即端口号。在每台主机中,每个需要访问的软件进程都将被分配一个唯一的端口号。7.1.2进程之间的通信AP1AP2主机AR1R2LAN1IP协议的作用范围LAN2WAN传输层协议的作用范围AP3AP4主机B7.1.2进程之间的通信

AP1AP2IP层传输层提供应用进程间的逻辑通信主机A的协议栈应用进程应用进程应用层传输层网络层链路层物理层

AP3AP4主机B的协议栈

7.1.2进程之间的通信从IP层(网络层)来说,通信的两端是两个主机。IP数据报的首部明确地标志了这两个主机的IP地址。进行通信的实体实在主机中的进程,是这个主机中的一个进程和另一个主机中的进程在交换数据(即通信)。因此,两个主机进行通信就是两个主机中的应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还停留在主机的网络层而没有交付主机中的应用进程。从传输层的角度看,通信的真正端点并不是主机而是主机中的进程。端到端的通信是应用进程之间的通信。在一个主机张中经常有多个应用进程同时分别和另一个主机中的多个应用进程通信。如图7.1所示,主机A的应用进程AP1和主机B的应用进程AP3通信,而在同时,应用进程AP2也和对方的AP4通信。7.1.2进程之间的通信

传输层提供了应用进程间的逻辑通信,其中“逻辑通信”是指,从应用层来看,只要把应用层报文交给下面的传输层,传输层就可以把这报文传送到对方的传输层,好像这种通信就是沿水平方向直接传送数据,但事实上这两个传输层之间被没有一条水平方向的物理连接,数据的传送是沿着图中的虚线方向经过多个层次传送的。

传输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由协议等),它使应用进程看见的就是好像在两个传输层实体之间有一条端到端的逻辑通信信道。7.1.3传输层协议

大家认为,数据在传输过程中,我们是应该首先保证传输速率还是应该首先保证数据完整性?7.1.3传输层协议TCP/IP传输层传输层协议应用层TCPUDP网际层(IP)网络接口层传输控制协议TCP用户数据报协议UDPTCP报文段(Segment)UDP报文、用户数据报7.1.3传输层协议TCP/IP传输层传输控制协议TCP用户数据报协议UDPTCP报文段(Segment)UDP报文、用户数据报面向连接的服务建立连接数据传送释放连接在传送数据之前不需要建立连接。7.1.3传输层协议TCP/IP传输层传输控制协议TCP用户数据报协议UDP电子邮件-SMTP远程终端接入-Telnet万维网-Http文件传送-FTP7.1.3传输层协议TCP/IP传输层传输控制协议TCP用户数据报协议UDP名字转换-DNS文件传送-TFTP路由选择协议-RIPIP地址配置-DHCP网络管理-SNMP远程文件服务器-RIP多播-IGMP7.1.3传输层协议传输层的UDP用户数据报网络层的IP数据报在传输层的端到端抽象的逻辑信道中传送的。要经过互联网中许多路由器的存储转发IP数据报经过路由器进行转发,用户数据报只是IP数据报中的数据,路由器看不见有用户数据报经过它。7.1.4传输层的复用与分用

应用层所有的应用进程都可以通过传输层再传送到网络层,这就是复用,也可以来理解:在发送方不同的应用进程都可以使用同一个传输层协议传送数据(当然需要加上适当的首部)。

传输层从网络层收到数据后必须交付指明的应用进程,这就是分用。即接收方的传输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。7.1.4传输层的复用与分用

当网络中的两台主机进行通信的时候,为了表明数据是由源端的哪一种应用发出的,以及数据所要访问的是目的端的哪一种服务,TCP/IP协议会在传输层封装数据段时,把发出数据的应用程序的端口作为源端口,把接收数据的应用程序的端口作为目的端口。数据段的头中,从而使主机能够同时维持多个会话的连接,使不同的应用程序的数据不至于混淆。7.1.4传输层的复用与分用

一台主机上的多个应用程序可同时与其他多台主机上的多个对等进程进行通信,所以需要对不同的虚电路进行标识。对TCP虚电路连接采用发送端和接收端的套接字(Socket)组合来识别,形如(Socket1,Socket2)。套接字是IP地址加上一个端口。发送套接字=源IP地址+源端口号接收套接字=目的IP地址+目的端口号7.1.4传输层的复用与分用()

()

()

()()

()()()主机A主机B主机C端口1端口2端口3端口4端口1端口2端口1端口2连接1连接2连接3连接47.1.4传输层的复用与分用

每个端口都拥有一个叫端口号的整数描述符,用来标识不同的端口或进程。在TCP/IP传输层,定义一个16Bit长度的整数作为端口标识,也就是说可定义216个端口,其端口号从0到216-1。由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立,即各自可独立拥有216个端口。

两台计算机中的进程要互相通信,不仅必须知道对方计算机的IP地址(为了找到对方的计算机),而且要知道对方的端口号(为了找到对方计算机中的应用进程)。7.1.4传输层的复用与分用1.服务器端使用的端口号服务器端使用的端口号熟知端口号登记端口号FTP-21SMTP-25系统端口号,数值为0~123。Telnet-23DNS-53HTTPS-443HTTP-80数值为1024~49151。使用需要登记7.1.4传输层的复用与分用2.客户端使用的端口号数值在49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫短暂端口号。这类端口号留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在,这个端口号就可以供其他客户进程使用。7.2用户数据报协议UDP7.2.1UDP概述7.2.2UDP的首部格式7.2.1UDP概述

用户数据报协议UDP只是在IP的数据报服务之上增加了复用和分用的功能以及差错检测的功能。UDP的主要特点是:

1)UDP是无连接的。即发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。

2)UDP使用尽最大努力交付,即不保证可靠交付,因此,主机不需要维持复杂的连接状态表。3)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。7.2.1UDP概述

4)UDP没有拥塞控制,因此,网络出现的拥塞不会使源主机的发送速率降低。如IP电话、实时视频会议等

5)UDP支持一对一、一对多、多对一和多对多的交互通信。

6)UDP的首部开销小,只有8个字节,比TCP的20字节的首部要短。7.2.1UDP概述应用层报文UDP用户数据报的数据部分UDP首部IP数据报的数据部分IP首部

应用层传输层IP层

7.2.2UDP的首部格式

用户数据报UDP有两个字段:数据字段和首部字段。首部字段只有8个字节,由4个字段组成。每个字段都是两个字节。

源IP地址目的IP地址UDP长度0源端口17目的端口长度检验和伪首部UDP的数据部分UDP首部IP数据报的数据部分IP首部

字节44112字节122222UDP用户数据报的首部和伪首部

7.2.2UDP的首部格式

当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据包通过相应的端口,上交最后的终点-应用进程。UDP基于端口的分用

端口1端口2端口3UDP分用IP层UDP数据报到达7.3传输控制协议TCP7.3.1传输控制协议TCP的特点7.3.2TCP报文段的首部格式7.3.3TCP可靠数据传输技术7.3.4TCP的运输连接管理7.3.5TCP的流量控制和拥塞控制7.3.1传输控制协议TCP的特点TCP最主要的特点

(1)TCP是面向连接的传输层协议。应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕之后,必须释放已经建立起来的TCP连接(而UDP是无连接,无需释放)。

(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。7.3.1传输控制协议TCP的特点

TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。TCP连接的端点叫做套接字(Socket)或插口。根据互联网标准,端口号拼接到IP地址即构成了套接字。

套接字Socket=(IP地址:端口号)

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定,即:TCP连接::={Socket1,Socket2}={(IP1:port1),(IP2:port2)}7.3.1传输控制协议TCP的特点

(3)TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。

(4)TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。

(5)面向字节流。TCP中的“流”(Stream)指的是流入到进程或从进程流出的字节序列。TCP并不知道所传送的字节流的含义。7.3.1传输控制协议TCP的特点7.3.2TCP报文段的首部格式

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段(Segment),TCP通过报文段的交互来建立连接、传输数据、发出确认、进行差错控制、流量控制及关闭连接。

一个报文段分为首部和数据两部分,而首部就是TCP为了实现端到端可靠传输所加上的控制信息,TCP的全部功能都体现在他首部中各字段的作用。而数据则是指由高层即应用层来的数据。源端口号目的端口号序号bit07152331选项(长度可变)填充数据偏移确认号窗口紧急指针检验和保留URGPSHRSTSYNFINACKTCP首部20字节的固定首部

TCP报文段的数据部分TCP首部IP数据报的数据部分IP首部

7.3.2TCP报文段的首部格式

(1)源端口号:占2字节16bit,报文段的源端口号。

(2)目的端口号:占16bit,报文段的目的端口号。

(3)序号;也称报文段序号,占32bit。序号范围是[0,232-1],共232个序号。序号增加到232-1后,下一个序号就又回到0。TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都是按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值指的是本报文段所发送的字节。7.3.2TCP报文段的首部格式

(4)确认号:占32bit,是期望收到对方的下一个TCP报文段的第一个数据字节的序号。顺序号和确认号共同用于TCP服务中的确认、差错控制。若确认号=N,则表明:到序号N-1为止的所有数据都已正确收到。7.3.2TCP报文段的首部格式

(5)数据偏移:占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这实际上就是TCP报文段首部长度。由于首部中的选项字段长度不固定,因此首部长度字段是必要的。也有称首部长度。

(6)保留:占6bit,6bit,为将来的应用而保留,目前应置为0。7.3.2TCP报文段的首部格式

(7)控制位:占6bit,用来说明本报文段的性质,包含如下六个控制位标志:

URG(紧急):紧急指针字段有效;当URG=1时,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送,而不要按原来的排队顺序来传送。 ACK(确认):确认字段有效;仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在链接建立后所有传送的报文段都必须把ACK置1。 7.3.2TCP报文段的首部格式 PSH(推送):推送功能;当两个应用进程进行交互式的通信时,有时在一端的应用进程希望键入一个命令后立即就能够收到对方的响应。这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后在向上交付。 RST(复位):重置连接;当RST=1时,表明TCP连接中出现严重差错,必须立即释放连接,然后再重新建立运输连接。 7.3.2TCP报文段的首部格式

SYN(同步):同步序列号;在建立连接时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1.

FIN(终止):发送方不再发送数据。用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。7.3.2TCP报文段的首部格式

(8)窗口大小:占16bit,窗口值是[0,216-1]之间的整数。窗口是指发送本报文段的接收窗口。窗口值告诉对方:从本报文段首部中的确认号算起。接收方因自身缓存空间限制而允许对方发送的数据量(以字节为单位)。总之,窗口值作为接收方让发送方设置其发送窗口的依据。

注:窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着。

(9)校验和:占32bit,用于对报文段首部和数据进行校验。7.3.2TCP报文段的首部格式

(10)紧急指针:占16bit。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。

(11)选项:长度可变,最长可达40字节。当没有使用选项时,TCP的首部长度是20字节。①MSS是每个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才是整个TCP报文段。因此,MSS并不是整个TCP报文段的最大长度,而是TCP报文段长度减TCP首部长度。数据链路层有MTU的限制,以太网的MTU默认是1500字节,要想数据包在传输过程中在数据链路层不分片,MSS应为1460字节,7.3.2TCP报文段的首部格式7.3.2TCP报文段的首部格式

②窗口扩大选项。窗口扩大选项用于扩大窗口。我们知道,TCP首部中窗口字段的长度是16bit,因此,窗口最大值为64KB。

窗口扩大选项可以在双方初始建立TCP连接时进行协商。如果连接的某一端实现了窗口扩大,那么当它不再需要扩大其窗口时,可发送S=0选项,使窗口值回到16bit。

③时间戳选项。时间戳选项占10字节,其中最主要的字段是时间戳字段(4字节)和时间戳回送回答字段(4字节)。

用来计算往返时间RTT。

用于处理TCP序号超过232的情况,这又称为防止序号绕回PAWS。7.3.2TCP报文段的首部格式

(12)填充:当整个TCP首部长度不是4字节的整倍数时,需要加以填充。

(13)数据:来自高层即应用层的协议数据。7.3.2TCP报文段的首部格式

EthernetII,Src:IntelCor_ac:30:00(34:2e:b7:ac:30:00),Dst:Tp-LinkT_10:fd:49(f8:8c:21:10:fd:49)//数据链路层的以太网帧。InternetProtocolVersion4,Src:,Dst://网络层TransmissionControlProtocol,SrcPort:52573,DstPort:80,Seq:1,Ack:1,Len:583//传输层SourcePort:52573//源端口号DestinationPort:80//目的端口,HTTP端口是80。[Streamindex:4][Conversationcompleteness:Complete,WITH_DATA(63)][TCPSegmentLen:583]SequenceNumber:1(relativesequencenumber)//序号SequenceNumber(raw):2760042442[NextSequenceNumber:584(relativesequencenumber)]//下一个序号AcknowledgmentNumber:1(relativeacknumber)//确认号Acknowledgmentnumber(raw):40974908010101....=HeaderLength:20bytes(5)//数据偏移,也称头部长度7.3.2TCP报文段的首部格式Flags:0x018(PSH,ACK)000.........=Reserved:Notset...0........=Nonce:Notset....0.......=CongestionWindowReduced(CWR):Notset保留.....0......=ECN-Echo:Notset......0.....=Urgent:Notset//紧急URG.......1....=Acknowledgment:Set//确认ACK........1...=Push:Set//推送PSH.........0..=Reset:Notset//复位RST..........0.=Syn:Notset//同步SYN...........0=Fin:Notset//终止FIN[TCPFlags:·······AP···]Window:517//窗口[Calculatedwindowsize:132352]//实际(真实)的窗口大小为517*256=132352[Windowsizescalingfactor:256]//窗口大小比例因子为256Checksum:0xd81e[unverified]//校验和[ChecksumStatus:Unverified]UrgentPointer:0//紧急指针7.4TCP的可靠传输

7.4.1以字节为单位的滑动窗口

7.4.2超时重传时间的选择

7.4.3选择确认(SACK)7.4.1以字节为单位的滑动窗口

发送窗口

接收窗口7.4.1以字节为单位的滑动窗口7.4.2超时重传时间的选择

重传机制是TCP中最重要和最复杂的问题之一。TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。但超时重传时间的选择是TCP最复杂的问题之一。

1.TCP时间戳选项TCP时间戳(Timestamp)选项可以用来精确地测量RTT。RTT=当前时间-数据包中时间戳选项的回显时间7.4.2超时重传时间的选择

2.重传队列中数据包的TCP控制块

TCP发送窗口中保存着已发送而未被确认的数据包,数据包skb中的TCP控制块包含一个变量tcp_skb_cb→when,记录了该数据包的第一次发送时间,当收到该数据包的确认后,就可以计算RTT,RTT=当前时间–when。这就意味着发送方收到一个确认就能计算新的RTT[SEQ/ACKanalysis][ThisisanACKtothesegmentinframe:15][TheRTTtoACKthesegmentwas:0.000032000seconds]//第15个包的确认,计算出的RTT为0.000032000s[iRTT:0.015911000seconds]7.4.2超时重传时间的选择

3.Karn算法卡恩(Karn)提出了一种算法:在计算RTTs时,只要报文段重传了,就不采用其往返时间样本。这样得出的RTTs和RTO比较准确。后来对Karn算法进行了修正:报文段每重传一次,就把RTO增大一些。具体的计算公式如下:新的RTO=γ×旧的RTO式中,系数γ的典型值是2。当不再发生报文段的重传时,根据上面给出的公式计算RTO的值。实践证明,这种策略较为合理。7.3.3TCP可靠数据传输技术3.连续ARQ协议

位于发送窗口内的5个分组都可连续发送出去,而不需要等待对方的确认。这样,信道的利用率就提高了。134562791011128(a)发送窗口是5tt发送窗口向前连续ARQ协议的工作原理134562791011128发送窗口

连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

接收方一般都是采用累计确认的方式,这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示,到这个分组为止的所有分组都已经正确收到了。7.3.3TCP可靠数据传输技术4.滑动窗口协议

采用可变长的滑动窗口协议进行流量控制,以防止由于发送端与接收端之间的不匹配而引起数据丢失。

TCP采用可变长的滑动窗口,使得发送端与接收端可根据自己的CPU和数据缓存资源对数据发送和接收能力来做出动态调整,从而灵活性更强,也更合理。7.3.3TCP可靠数据传输技术5.重发机制

重发机制是TCP中最重要的、最复杂的问题之一。TCP每发送一个报文段,就设置一次定时器。只要定时器设置的重发时间到而还没有收到确认,就要重发这一报文段。

TCP采用了一种自适应算法。这种算法记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延T。7.3.3TCP可靠数据传输技术5.重发机制

实现可靠传输要满足三个要素:

(1)序号:传输的数据按字节编号。

(2)确认:接收方向发送方确认收到数据。

(3)重传:一定时间内没有收到接收方的确认,发送方重传数据。7.3.4TCP的运输连接管理

运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。

在TCP连接建立过程中要解决以下三个问题:

(1)要使每一方能够确知对方的存在。

(2)要允许双方协商一些参数(如最大窗口值、是否使用窗户扩大选项和时间戳选项以及服务质量)。

(3)能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。7.3.4TCP的运输连接管理1.建立连接TCP采用了一种称为三报文握手的方式,三报文握手方式使得“序号/确认号”系统能够正常工作,从而使它们的序号达成同步。如果三报文握手成功,则连接建立成功,可以开始传送数据信息。

在图7.9中,假定主机A运行的是TCP客户程序,而主机B运行TCP服务器程序。7.3.4TCP的运输连接管理客户服务器CLOSED确认数据传送ABCLOSEDSYN-SENTLISTENSYN-RCVDESTABLISHEDESTABLISHED主动打开被动打开SYN=1,seq=xSYN=1,ACK=1,seq=y,ack=x+1ACK=1,seq=x+1,ack=y+17.3.4TCP的运输连接管理最初两端的TCP进程都处于CLOSED(关闭)状态。图中在主机下面的方框分别是TCP进程所处的状态。在图中,A主动打开连接,而B被动打开连接。

(1)服务器主机B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。如有,即作出响应。传输控制块TCB存储连接中的信息,如TCP连接表,发送和接收缓存的指针,重传队列的指针,当前发送和接收序号等。7.3.4TCP的运输连接管理

(2)客户主机A的TCP客户进程创建传输控制块TCB,向服务器主机B发出连接请求报文段,其部中的同步位SYN=1,同时选择一个同步序号seq=x。TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗掉一个序号(SEQ=100,在后面传送数据时的第一个数据字节的序号是x+1(即101))。这时,源主机A的TCP客户程序进入SYN_SENT(同步已发送)状态。这是第一次握手。

注:大写ACK表示首部中的确认位ACK,小写ack表示确认字段的值。7.3.4TCP的运输连接管理

(3)服务器主机B收到连接请求报文段后,如同意建立连接,则向客户主机A发送确认。在确认报文段中应将ACK位和SYN位都置1。确认号ack=x+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样也要消耗掉一个序号。这时,服务器主机B进入SYN_RCVD(同步接收)状态。这是第二次握手。

(4)客户主机A的TCP客户进程收到服务器主机B的确认后,还要向服务器主机B给出确认,其ACK置1,确认号ack=y+1,而自己的序号seq=x+1。ACK报文段可携带数据,不携带数据则不消耗序号,此时,TCP连接已建立,客户主机A进入ESTABLISHED(已连接)状态。这是第三次握手。7.3.4TCP的运输连接管理

(5)当服务器主机B收到客户主机A的确认后,也进入ESTABLISHED(已连接)状态。这一次的确认是为了防止已失效的连接请求报文段突然又传送到了服务器主机B。

运行客户进程的客户主机A的TCP通知上层应用进程,连接已经建立。当客户主机A向服务器主机B发送第一个数据报文段时,其序号仍为x+1,因为前一个确认报文段并不消耗序号。当运行服务进程的服务器主机B的TCP收到客户主机A的确认后,也通知其上层应用进程,连接已经建立。至此建立了一个全双工的连接。7.3.4TCP的运输连接管理

位于TCP/IP分层模型的上层的应用程序传输数据流给TCP。TCP接收到字节流并且把它们分解成段。假如数据流不能被分成一段,那么每一个其它段都被分给一个序列号。在目的主机端.这个序列号用来把接收到的段重新排序成原来的数据流。

第一步:主机A使用滑动窗口发送全部的四个段到主机B。这是第一步。不幸的是,只有段l03、105和106成功地到达了主机B(参看②)。2.传送数据7.3.4TCP的运输连接管理主机A主机B①

ack=104,seq=225,ack=x+1ack=107,seq=226103②

105106⑤

103

104105106103

104105106

1041051067.3.4TCP的运输连接管理

第二步:因为段103和104是连续的,所以主机B返回一个确认给主机A,通知主机A它只成功地接收到了第103段,在它的确认中主机B使用它期待得到的下一个序列号作为确认(参看③通过给出序列号104)。

第三步:主机A接到主机B的报文后,重新发送段104、105和106(参看④)。虽然主机B已经成功地收到了段105和106,但是根据协议规定,也必须重新发送。

第四步:当主机B成功地收到这些段以后.主机B返回一个确认给主机A(参看⑥),并根据序列号把它们重组成原来的数流。把它传输到高层应用程序。7.3.4TCP的运输连接管理

TCP连接是一个全双工的数据通道,一个连接的关闭必须由通信双方共同完成。当通信的一方没有数据需要发送给对方时,可以使用FIN段向对方发送关闭连接请求。这时,它虽然不再发送数据,但并不排斥在这个连接上继续接收数据。只有当通信的对方也递交了关闭连接的请求后,这个TCP连接才会完全关闭。

在释放连接时,既可以由一方发起而另一方响应,也可以双方同时发起。无论怎样,收到释放连接请求的一方必须使用ACK段给予确认。实际上,TCP连接的释放过程也是一个四次挥手的过程。3.释放连接6.1.2子网划分TCP释放连接的过程客户服务器CLOSEDABCLOSEDSYN-SENTCLOSE-WAITLAST-ACKESTABLISHEDESTABLISHEDFIN-WAIT-2TIME-WAIT主动关闭等待2MSL被动关闭通知应用进程数据传送FIN=1,seq=uACK=1,seq=v,ack=u+1FIN=1,ACK=1,seq=w,ack=u+1ACK=1,seq=u+1,ack=w+1数据传送7.3.4TCP的运输连接管理

(1)客户主机A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。客户主机A的TCP通知服务器主机B要释放从A到B这个方向的连接,将发往服务器主机B的TCP报文段首部的终止比特FIN置1,其序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1。这时客户主机A进入终止等待1状态,等待服务器主机B的确认。请注意,TCP规定,FIN报文段即使不携带数据,它也消耗掉一个序号。这是第一次挥手。7.3.4TCP的运输连接管理

(2)服务器主机B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号为v,等于B前面已传送的数据的最后一个字节的序号加1,然后服务器主机B就进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程这时应通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态(half-close)状态,相当于客户主机A已经没有数据要发送了,但服务器主机B还有一些数据要发送客户主机A,客户主机A仍要接收。也就是说,从服务器主机B到客户主机A这个方向的连接并未关闭,这个状态可能会持续一段时间。这是第二次挥手。7.3.4TCP的运输连接管理

(3)若服务器主机B没有要向客户主机A发送的数据,其应用进程就通知TCP释放连接。这时客户主机B发出的连接释放报文段必须将终止比特FIN置1。现假定B的序号为w(在半关闭状态服务器主机B可能又发送了一些数据)。服务器B还必须重复上次已发送过的确认号ack=u+1。这是服务器主机B进入LAST-ACK(最后确认)状态,等待客户主机A的确认。这是第三次挥手。

客户主机A收到服务器主机B的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待服务器主机B发出的连接释放报文段。7.3.4TCP的运输连接管理

(4)客户主机A收到服务器主机B的连接释放报文段后,必须对此发出确认。在确认报文段中将ACK置1,确认号ack=w+1,而自己的序号是seq=u+1。然后进入到TIME-WAIT(时间等待)状态。但这时,TCP连接还没有释放掉。必须经过时间等待计时器(TIME-WAITtimer)设置的时间2MSL后,客户主机A才进入到CLOSED状态,才能开始建立下一个新的连接。当客户主机A撤销相应的传输控制块TCB后,就结束了这次的TCP连接。这是第四次挥手。7.3.5TCP的流量控制和拥塞控制

TCP采用大小可变的滑动窗口机制可以很方便地在TCP连接上实现对发送放的流量控制。

接收主机将通知发送主机,在它收到确认之前发送主机能够发送多少字节,这个值称为窗口。窗口的大小是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置发送窗口的数据的上限。1.流量控制7.3.5TCP的流量控制和拥塞控制

在数据传输过程中,TCP提供了一种基于滑动窗口协议的流量控制机制,用接收端接收能力(缓冲区的容量)的大小来控制发送端发送的数据量。

在建立连接时,通信双方使用SYN报文段或ACK报文段中的窗口字段捎带着各自的接收窗口尺寸,即通知对方从而确定对方发送窗口的上限。在数据传输过程中,发送方按接收方通知的窗口尺寸和序号发送一定量的数据,接收方根据接收缓冲区的使用情况动态调整接收窗口尺寸,并在发送TCP报文段或确认段时稍带新的窗口尺寸和确认号通知发送方。7.3.5TCP的流量控制和拥塞控制seq=1,DATAseq=101,DATAseq=201,DATA丢失!ACK=1,ack=201,rwnd=300seq=301,DATAseq=401,DATAseq=201,DATAACK=1,ack=501,rwnd=100ACK=1,ack=601,rwnd=0seq=501,DATAA发送了序号1至100,还能发送300字节A发送了序号101至200,还能发送200字节A发送了序号201至300,但丢失了!允许A发送序号201至500,共300字节不允许A再发送(到序号600为止的数据都收到了)A发送了序号301至400,还能再发送100字节新数据A发送了序号401至500,不能再发送新数据了A超时重传旧的数据,但不能发送新的数据允许A发送序号501至600,共100字节A发送了序号501至600,不能再发送了AB利用可变窗口进行流量控制7.3.5TCP的流量控制和拥塞控制

图中,假设主机A向主机B发送数据。在连接建立时,主机B告诉主机A,“我的接收窗口rwnd=400字节。因此,发送放的发送窗口不能超过接收方给出的接收窗口的数值。再假设每一个报文段为100字节长,而数据报文段序号的初始值设为1。设一个报文段为100字节长,序号的初始值为1(即图7.12中第一个箭头上面的序号seq=1)。7.3.5TCP的流量控制和拥塞控制

图中,主机B进行了三次流量控制。第一次将窗口减小到rwnd=300字节,第二次将窗口又减为rwnd=200字节,最后一

温馨提示

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

评论

0/150

提交评论