收藏 分享(赏)

第9章+TCP协议.ppt

上传人:scg750829 文档编号:5246896 上传时间:2019-02-14 格式:PPT 页数:40 大小:1.03MB
下载 相关 举报
第9章+TCP协议.ppt_第1页
第1页 / 共40页
第9章+TCP协议.ppt_第2页
第2页 / 共40页
第9章+TCP协议.ppt_第3页
第3页 / 共40页
第9章+TCP协议.ppt_第4页
第4页 / 共40页
第9章+TCP协议.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第9章 TCP协议,第9章 TCP协议,9.1 TCP协议中的基本概念 9.1.1 面向连接的服务 9.1.2 可靠的服务 9.1.3 面向字节流的传送服务 9.2 TCP协议数据段的格式 9.2.1 TCP数据段的格式 9.2.2 TCP校验和的计算 9.3 TCP协议连接的建立与关闭 9.3.1 被动打开与主动打开 9.3.2 三次握手建立TCP连接 9.3.3 TCP连接的关闭 9.3.4 TCP连接状态迁移,9.4 TCP协议数据的传送与流量控制 9.4.1 字节流的分段 9.4.2 滑动窗口机制 9.4.3 超时的判断 9.4.4 TCP的拥塞控制机制 9.4.5 紧急数据的传输 9

2、.5 TCP的傻窗口症状 9.5.1 傻窗口症状 9.5.2 傻窗口症状避免机制 9.6 TCP协议与UDP协议的比较 9.6.1 TCP协议与UDP协议特点的比较 9.6.2 TCP协议与UDP协议应用的比较 9.6.3 常见的标准TCP协议端口,9.1 TCP协议中的基本概念,TCP报文段(常称为段)与UDP数据报一样也是封装在IP中进行传输的,只是IP报文的数据区为TCP报文段。,9.1 TCP协议中的基本概念,TCP协议的几个关键概念: 面向连接:端对端的通信( TCP的一个端口可以多个连接复用,连接由两个端点组成,所以无法象UDP的广播和多播 ) 可靠:由超时重发机制来保证(发后等确

3、认,收到确认后才发下一个) 面向字节流:8位字流(组织数据包时不关心结构),9.2 TCP协议数据段的格式,一个TCP报文段分为首部和数据两部分,如图9-1所示。TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项(N必须是整数)。因此TCP首部的最小长度是20字节。,9.2 TCP协议数据段的格式,9.2 TCP协议数据段的格式,9.2 TCP协议数据段的格式,1TCP源端口号:长度为16位,用于标识发送方通信进程的端口。目标端在收到TCP报文段后,可以用源端口号和源IP地址标识报文的返回地址。2TCP目标端口号:长度为16位,用于标识接收方通信进程的端口。源端口号与

4、IP头部中的源端IP地址,目标端口号与目标端IP地址,这4个数就可以惟一确定从源端到目标端的一对TCP连接。3序列号:长度为32位,用于标识TCP发送端向TCP接收端发送数据字节流的序号。,9.2 TCP协议数据段的格式,4确认号:长度为32位,双工中捎带。5头部长度:该字段用4位二进制数表示TCP头部的长短,它以32位二进制数为一个计数单位。TCP头部长度一般为20个字节,因此通常它的值为5。 6保留:长度为6位,该域必须置0,准备为将来定义TCP新功能时使用。,9.2 TCP协议数据段的格式,7标志:有些报文段是用来传输数据的,但有些报文段是用来控制的。所以使用标志来指出段的目的与内容。长

5、度为6位,每1位标志可以打开或关闭一个控制功能,其内容如下所述:URG:紧急指针标志,置1时紧急指针有效。发送方希望终止,不想接收方收完所有比特。接收方收到这种数据后不必排队而尽快通知应用程序。ACK:确认号标志,置1时确认号有效。如果ACK为0,那么TCP头部中包含的确认号字段应被忽略。PSH:push操作标志,当置1时表示要对数据进行push操作。 RST:连接复位标志,表示由于主机崩溃或其他原因而出现错误时的连接。,9.2 TCP协议数据段的格式,SYN:同步序列号标志,它用来发起一个连接的建立,也就是说,只有在连接建立的过程中SYN才被置1。FIN:连接终止标志,当一端发送FIN标志置

6、1的报文时,告诉另一端已无数据可发送,但它还可以继续接收数据。,9.2 TCP协议数据段的格式,8窗口大小:长度为16位,它是接收端对发送方的流量控制措施,用来告诉它的数据接收能力。9校验和:长度为16位,用于进行差错校验。校验和覆盖了整个的TCP报文段的头部和数据区。 10紧急指针:长度为16位,只有当URG标志置1时紧急指针才有效,它的值指向紧急数据最后一个字节的位置(如果把它的值与TCP头部中的序列号相加,则表示紧急数据最后一个字节的序号)。,9.2 TCP协议数据段的格式,11选项:长度不固定,通过选项使TCP可以提供一些额外的功能。每个选项由选项类型(占1个字节)、该选项的总长度(占

7、1个字节)和选项值组成。选项类型字段为0和1的选项仅各占1个字节,其他的选项在选项类型后说明了其总长度。,TCP选项格式,9.2 TCP协议数据段的格式,12填充:长度不定,用于填充以保证TCP头部的长度为32位的整数倍,值全为0。,9.3 TCP协议连接的建立与关闭,TCP是一个面向连接的协议,TCP协议的高可靠性是通过发送数据前先建立连接,结束数据传输时关闭连接,在数据传输过程中进行超时重发、流量控制和数据确认,对乱序数据进行重排以及前面讲过的校验和等机制来实现的。 TCP在IP之上工作,IP本身是一个无连接的协议,在无连接的协议之上要建立连接。,9.3 TCP协议连接的建立与关闭,理解T

8、CP的面向连接特性: 一条TCP连接是通过两端的IP和端口来表识的。所以两个程序可以共享主机上的同一端口,因为连接不同。 连接的建立和拆除需要得到对方的认可,而UDP不需要认可。 连接能够保持状态并实现可靠,一般控制信息是TCP传递的。 在IP协议之上实现连接的。,9.3 TCP协议连接的建立与关闭,1. 建立连接TCP使用“三次握手”法来建立一条连接。所谓三次握手,就是指在建立一条连接时通信双方要交换3次报文。2关闭连接由于TCP是一个全双工协议,因此在通信过程中两台主机都可以独立地发送数据,完成数据发送的任何一方可以提出关闭连接的请求。关闭连接时,由于在每个传输方向既要发送一个关闭连接的报

9、文段,又要接收对方的确认报文段,因此关闭一个连接要经过4次握手。,9.3 TCP协议连接的建立与关闭,TCP协议是面向字节的。TCP将所要传送的整个报文(这可能包括许多个报文段)看成是一个个字节组成的数据流,并使每一个字节对应于一个序号。 接收端返回的确认序号是已收到的数据的最高序号加1。也就是说,确认序号表示接收端期望下次收到的数据中的第一个数据字节的序号。,9.3 TCP协议连接的建立与关闭,图9-2是TCP发送报文段的过程的示意图。,9.3.2 三次握手建立TCP连接,在连接建立过程中要解决以下三个问题。1、要使每一方能够确知对方的存在。2、要允许双方协商一些参数(如最大报文段长度,最大

10、窗口大小,服务质量等)。3、能够运输实体的资源(如缓存大小,连接表中的项目等)进行分配。TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的进程叫做客户,而被动等待连接建立的进程叫做服务器。,9.3.2 三次握手建立TCP连接,SYN同步标识,SEQ序号,ACK确认号,9.3.3 TCP连接的关闭,FIN终止标识,SEQ序号,ACK确认号,9.3.3 TCP连接的关闭,SYN位置1:表示初始序列号,是个连接请求 ACK位置1 :表示已经收到连接请求 FIN位置1 :表示通知数据已经发送完毕 RST位置1 :表示非正常关闭,且不要等ACK 连接3次握手:请求/可以/知道 关闭4 次握手:

11、请求/可以/我的数据也发完/知道 选项:连接时通知对方自己可以接收的最大数据包长度,9.4 TCP协议数据的传送与流量控制,为了提高报文段的传输效率,TCP采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在TCP报文段首部的窗口字段写入的数值就是当前给对方设置的窗口数值。图9-5表示的是在TCP中使用的窗口概念。,9.4 TCP协议数据的传送与流量控制,窗口技术,9.4 TCP协议数据的传送与流量控制,9.4 TCP协议数据的传送与流量控制,9.4 TCP协议数据的传送与流量控制,下面再看一个实例,主机1和主机2使用TCP协议在实际通信时TCP连接的建立与关闭的时序图,图3-9,9.

12、4 TCP协议数据的传送与流量控制,上图中,主机1连续发送了两个报文段4和5,其长度都为1024个字节,这两个报文段的数据用来填充接收方(主机2)所通知的窗口,由于主机2通知的窗口大小只有2048个字节,这时主机2的缓冲区已经被填满,因此主机1停下来等待一个主机2的确认。发送端发送数据的过程是如何受到接收方控制的,这可以用图3-10表示。报文段2通知的窗口大小为2048个字节,因此主机1的前两个1024个字节的数据块落入窗口内,如图3-10(a)所示,窗口内的数据是可以立即发送的数据。图3-10(b)是图3-9中主机1发送了报文段4和5后的情况,窗口内的数据已发送完毕(用灰色表示),主机1只能

13、等待。,9.4 TCP协议数据的传送与流量控制,后图(c)是主机2收到前2048个字节发送了确认报文段6窗口右移后的情况,由于报文段6通知的接收方窗口大小只有1024个字节,因此只有一个1024个字节的数据块落入窗口内。后图(d)是主机1对主机2发送了报文段7后的情况,这时窗口内的数据已发送完毕,主机又进入等待状态。前图中确认报文段8对收到的前3072个字节进行了确认,但通知的窗口大小为0,如后图(e)所示,这时窗口的左边沿到达右边沿,即窗口的长度变为0,称其为一个0窗口,此时发送方不能再发送任何数据,只能等待。等待一段时间后,由于主机2的应用进程从TCP缓冲区中读走了2048个字节的数据,因

14、此由窗口更新报文段9通知的窗口大小为2048个字节,如后图(f)所示,这时主机1又可以发送数据了。,9.4 TCP协议数据的传送与流量控制,图3-10 TCP流量控制机制滑动窗口协议,9.4 TCP协议数据的传送与流量控制,上述流量控制策略中,使用接收方通知的一个窗口大小来控制数据的发送,窗口的起始点为接收方确认号,终止于窗口长度,只有落在窗口内的数据可以发送。由于广域网中的瓶颈会产生拥塞,所以拥塞窗口被初始化为1个报文段的长度(即另一端通知的最大报文段长度为MSS)。在建立连接时,发送方只发送一个长度为MSS的报文段,正常收到确认后,拥塞窗口就增大为2MSS,即为原来拥塞窗口长度的两倍,然后

15、发送两个MSS长度的报文段,两倍直到出现超时错误,这样发送方就了解线路能力,确定拥塞窗口的大小,称为慢启动。,9.4 TCP协议数据的传送与流量控制,TCP的超时重发机制TCP协议提供的是可靠的运输层。前面我们已经看到,接收方对收到的所有数据要进行确认,TCP的确认是对收到的字节流进行累计确认。发送TCP报文段时,头部的“确认号”就指出该端希望接收的下一个字节的序号,其含义是在此之前的所有数据都已经正确收到,请发送从确认号开始的数据。TCP的确认方式有两种:一种是利用只有TCP头部,而没有数据区的专门确认报文段进行确认;另一种是当通信双方都有数据要传输时,把确认“捎带”在要传输的报文段中进行确

16、认,因此TCP的确认报文段和普通数据报文段没有什么区别。,9.4 TCP协议数据的传送与流量控制,在TCP协议层实现超时重发的关键问题是超时重送的策略,即怎样决定超时间隔和如何确定重发的频率。显然使用固定大小的超时间隔有很大的不足之处。 一个好的实现超时重发的方案应该是超时间隔可以随网络的通信状况而自动调整,即超时间隔应具有一定的自适应性。这种动态调整超时间隔的方法与一条连接从发送端发出数据到收到确认所需的往返时间RTT(Round Trip Time)有关。,9.4 TCP协议数据的传送与流量控制,具体实现时,可以在每条连接上保持一个叫RTT的变量,发送一个TCP报文段的同时启动定时器,收到

17、确认后计算出本次的RTT值(下面用M表示),然后根据下面的公式求出新的RTT加权平均值:计算RTT: RTT=RTT+(1)M计算重发超时间隔RTO(Retransmission Time Out):RTO=RTT,9.4 TCP协议数据的传送与流量控制,和都是加权因子,(01)决定本次传输的TCP报文段对往返时间RTT的影响程度。比较大时,RTT主要由历史数据确定;比较小时,RTT紧跟当时的延迟而变化。的推荐值为2,也就是说,当等待到2倍的加权平均往返时间后还没有收到确认就重发数据。取值接近1时,显然超时间隔比较短,它的优点是可以减少等待时间,但可能引起一些不必要的重发;取值比较大时,可能因等待时间太长而降低了网络的通信效率。,9.6 TCP协议与UDP协议的比较,9.6 TCP协议与UDP协议的比较,9.6 TCP协议与UDP协议的比较,TCP和UDP各自的特点及其区别 TCP:面相连接,可靠的,流量控制。 UDP:无连接的,不可靠。(但可以在应用层中加可靠),问题?,1、虚电路的好处?路径固定? 2、虚电路一定要面向连接?面向连接就是虚电路? 3、TCP是虚电路?路径固定的虚电路涉及哪一层?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 事务文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报