收藏 分享(赏)

协议分析(第10讲).ppt

上传人:hwpkd79526 文档编号:7180382 上传时间:2019-05-08 格式:PPT 页数:30 大小:704KB
下载 相关 举报
协议分析(第10讲).ppt_第1页
第1页 / 共30页
协议分析(第10讲).ppt_第2页
第2页 / 共30页
协议分析(第10讲).ppt_第3页
第3页 / 共30页
协议分析(第10讲).ppt_第4页
第4页 / 共30页
协议分析(第10讲).ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、TCP/IP协议分析,(第十讲)主讲:李勇,TCP/IP协议分析,2,8.3 TCP的连接管理,运输连接就有三个阶段,即:连接建立、数据传送和连接释放。 运输连接的管理就是使运输连接的建立和释放都能正常地进行。,TCP/IP协议分析,3,8.3.1 TCP连接的建立,连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。 连接建立过程如下:,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,A 的 TCP 向 B 发出连

2、接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x 1,自己选择的序号 seq = y。,CLOSED,CLOSED,A,B,客户,服务器,A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y 1。A 的 TCP 通知上层应用进程,连接已经建立。,CLOSED,CLOSED,A

3、,B,客户,服务器,B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。,用三次握手建立 TCP 连接的各状态,CLOSED,CLOSED,A,B,客户,服务器,TCP/IP协议分析,9,注意:,如果与服务器无法建立连接,客户端就会三次向服务器发送连接请求。在规定的时间内服务器未应答,则连接失败。,TCP/IP协议分析,10,举例:,TCP三次握手的过程。,TCP/IP协议分析,11,8.3.2 TCP连接的释放,建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由TCP的半关闭(half-close)造成的。既然一个TCP连接是全双工(即数据在两个方向

4、上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端几经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。,CLOSED,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,CLOSED,数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。,数据传送,通知 应用

5、进程,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,B 发出确认,确认号 ack = u 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,A 收到连接释放报文段后,

6、必须发出确认。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,在确认报文段中 ACK = 1,确认号 ack w 1,自己的序号 seq = u + 1。,ACK = 1, seq = u + 1, ack = w 1,ACK = 1, seq = u + 1, ack = w 1,FIN = 1, ACK = 1, seq = w, ack= u 1,FIN- WAIT-1,CLOSE- WAIT,FIN- WAIT-2,LAST- ACK,被动关闭,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数

7、据传送,CLOSED,5.9.2 TCP 的连接释放,TCP 连接必须经过时间 2MSL 后才真正释放掉。,TCP/IP协议分析,18,A 必须等待 2MSL 的时间,第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。 第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。,TCP/IP协议分析,19,平静时间,如果使用处于2MSL等待端口的主机出现故障,它会在MSL秒内重新启动,并立即使用故障前仍

8、处于2MSL的插口对来建立一个新的连接吗?如果是这样,在故障前从这个连接发出而迟到的报文段会被错误地当作属于重启后新连接的报文段。无论如何选择重启后新连接的初始序号,都会发生这种情况。 为了防止这种情况,RFC 793指出TCP在重启动后的MSL秒内不能建立任何连接。这就称为平静时间(quiet time)。,TCP/IP协议分析,20,8.3.3 TCP的半关闭,TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力。这就是所谓的半关闭。,TCP/IP协议分析,21,TCP/IP协议分析,22,8.3.4 TCP状态转换图,TCP 有限状态机的图中每一个方框都是 TCP 可能具有

9、的状态。 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名。状态之间的箭头表示可能发生的状态变迁。 箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。 图中有三种不同的箭头。 粗实线箭头表示对客户进程的正常变迁。 粗虚线箭头表示对服务器进程的正常变迁。 另一种细线箭头表示异常变迁。,TCP 的 有 限 状 态 机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,FIN_WAIT_1,SYN_RCVD,FIN_WAIT_2,CLOSING,TIME_WAIT,SYN_SENT,LAST_ACK,主动打开,被动打开,被动关闭,

10、主动关闭,起点,被动打开,主动打开发送 SYN,同时打开,收到 SYN,发送 SYN, ACK,收到 ACK,数据传送阶段,关闭 发送 FIN,关闭 发送 FIN,关闭 发送 FIN,收到 RST,收到 SYN 发送 SYN, ACK,关闭 或超时,收到 ACK,收到 SYN, ACK 发送 ACK,收到 ACK,收到 ACK,收到 FIN 发送 ACK,收到 FIN, ACK发送 ACK,收到 FIN 发送 ACK,同时关闭,收到 FIN 发送 ACK,发送 SYN,定时经过两倍报文段寿命后,关闭,TCP/IP协议分析,24,8.3.5 TCP重置,一般说来,无论何时一个报文段发往基准的连接

11、( referenced connection)出现错误, TCP都会发出一个复位报文段。,TCP/IP协议分析,25,1、TCP重置的原因,应用程序尝试建立连接的IP/端口对上不存在侦听进程。 由于应用程序的异常或崩溃,在数据传输过程中突然终止连接。 若一个主机没有从它向其发送TCP数据的另一个目的端主机接收到确认消息,则会断掉它这一方的TCP连接。,TCP/IP协议分析,26,2、举例,TCP/IP协议分析,27,8.3.6 TCP连接同时打开,两个应用程序同时彼此执行主动打开的情况是可能的,尽管发生的可能性极小。每一方必须发送一个S Y N,且这些S Y N必须传递给对方。这需要每一方使用一个对方熟知的端口作为本地端口。这又称为同时打开(simultaneous open)。 TCP是特意设计为了可以处理同时打开,对于同时打开它仅建立一条连接而不是两条连接。,TCP/IP协议分析,28,举例:,TCP/IP协议分析,29,8.3.7 TCP连接同时关闭,在前面讨论过一方(通常但不总是客户方)发送第一个FIN执行主动关闭。双方都执行主动关闭也是可能的, TCP协议也允许这样的同时关闭(simultaneous close)。,TCP/IP协议分析,30,举例:,

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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