Presentation is loading. Please wait.

Presentation is loading. Please wait.

5.9 TCP 的运输连接管理 1. 运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。

Similar presentations


Presentation on theme: "5.9 TCP 的运输连接管理 1. 运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。"— Presentation transcript:

1 TCP 的运输连接管理 1. 运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。

2 客户服务器方式 TCP 连接的建立都是采用客户服务器方式。 主动发起连接建立的应用进程叫做客户(client)。
被动等待连接建立的应用进程叫做服务器(server)。

3 5.9.1 TCP 的连接建立 A 的 TCP 向 B 发出连接请求报文段,其首部中的
客户 服务器 A B 主动打开 被动打开 CLOSED CLOSED SYN = 1, seq = x A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。

4 5.9.1 TCP 的连接建立 B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。
客户 服务器 A B 主动打开 被动打开 CLOSED CLOSED SYN = 1, seq = x SYN = 1, ACK = 1, seq = y, ack= x  1 B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。 B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号ack = x  1,自己选择的序号 seq = y。

5 A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y  1。 A 的 TCP 通知上层应用进程,连接已经建立。
客户 服务器 A B 主动打开 被动打开 CLOSED CLOSED SYN = 1, seq = x SYN = 1, ACK = 1, seq = y, ack= x  1 ACK = 1, seq = x + 1, ack = y  1

6 B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。
客户 服务器 A B 主动打开 被动打开 CLOSED CLOSED SYN = 1, seq = x SYN = 1, ACK = 1, seq = y, ack= x  1 ACK = 1, seq = x + 1, ack = y  1 数据传送

7 5.9.1 TCP 的连接建立 用三次握手建立 TCP 连接的各状态 SYN = 1, seq = x 客户 服务器 A B 主动打开
被动打开 CLOSED CLOSED SYN- SENT ESTAB- LISHED RCVD LISTEN SYN = 1, seq = x SYN = 1, ACK = 1, seq = y, ack= x  1 ACK = 1, seq = x + 1, ack = y  1 数据传送

8 只有两次握手,会出现异常情况 假定B给A发送一个连接请求分组,A收到这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。 可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组,在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A发出的分组超时后,重复发送同样的分组。这样就形成了死锁。 B 发送 M1 A 确认 M1 t

9 5.9.2 TCP 的连接释放 数据传输结束后,通信的双方都可释放连接。 现在 A 的应用进程先向其 TCP 发出连接释放
客户 服务器 A B 主动关闭 ESTAB- LISHED 数据传送 ESTAB- LISHED FIN = 1, seq = u 数据传输结束后,通信的双方都可释放连接。 现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP 连接。 A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。 CLOSED CLOSED

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

11 5.9.2 TCP 的连接释放 若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。
客户 服务器 A B 被动关闭 主动关闭 通知 应用 进程 ESTAB- LISHED 数据传送 ESTAB- LISHED FIN = 1, seq = u ACK = 1, seq = v, ack= u  1 数据传送 FIN = 1, ACK = 1, seq = w, ack= u  1 若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。

12 5.9.2 TCP 的连接释放 A 收到连接释放报文段后,必须发出确认。 FIN = 1, seq = u 客户 服务器 A B 被动关闭
主动关闭 通知 应用 进程 ESTAB- LISHED 数据传送 ESTAB- LISHED FIN = 1, seq = u ACK = 1, seq = v, ack= u  1 数据传送 FIN = 1, ACK = 1, seq = w, ack= u  1 ACK = 1, seq = u + 1, ack = w  1 A 收到连接释放报文段后,必须发出确认。

13 在确认报文段中 ACK = 1,确认号 ack  w  1, 自己的序号 seq = u + 1。
TCP 的连接释放 客户 服务器 A B 被动关闭 主动关闭 通知 应用 进程 ESTAB- LISHED 数据传送 ESTAB- LISHED FIN = 1, seq = u ACK = 1, seq = v, ack= u  1 数据传送 FIN = 1, ACK = 1, seq = w, ack= u  1 ACK = 1, seq = u + 1, ack = w  1 在确认报文段中 ACK = 1,确认号 ack  w  1, 自己的序号 seq = u + 1。

14  TCP 连接必须经过时间 2MSL 后才真正释放掉。 5.9.2 TCP 的连接释放 FIN = 1, seq = u 客户 服务器 A
B 主动关闭 通知 应用 进程 ESTAB- LISHED 数据传送 ESTAB- LISHED FIN = 1, seq = u FIN- WAIT-1 ACK = 1, seq = v, ack= u  1 CLOSE- WAIT 数据传送 被动关闭 FIN- WAIT-2 FIN = 1, ACK = 1, seq = w, ack= u  1 LAST- ACK 等待 2MSL TIME- WAIT ACK = 1, seq = u + 1, ack = w  1 CLOSED CLOSED

15 MSL(Maximum Segment Life):最长报文段寿命
时间等待计时器 MSL(Maximum Segment Life):最长报文段寿命 第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。 第二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。 由时间等待计时器完成。

16 保活计时器 保活计时器使用在某些实现中,用来防止在两个TCP之间的连接出现长时期的空闲。假定客户打开了到服务器的连接,传送了一些数据,然后就保持静默了。也许这个客户出故障了。在这种情况下,这个连接将永远地处理打开状态。 要解决这种问题,在大多数的实现中都是使服务器设置保活计时器。每当服务器收到客户的信息,就将计时器复位。超时通常设置为2小时。若服务器过了2小时还没有收到客户的信息,它就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。

17 5.9.3 TCP 的有限状态机 TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态。
箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。 图中有三种不同的箭头。 粗实线箭头表示对客户进程的正常变迁。 粗虚线箭头表示对服务器进程的正常变迁。 另一种细线箭头表示异常变迁。

18 TCP 的 有 限 状 态 机 起点 CLOSED 被动打开 主动打开 发送 SYN 关闭 收到 SYN 发送 SYN, ACK
LISTEN TCP 的 有 限 状 态 机 被动打开 收到 RST 发送 SYN 关闭 或超时 收到 SYN,发送 SYN, ACK SYN_RCVD SYN_SENT 同时打开 主动打开 收到 ACK 收到 SYN, ACK 发送 ACK 数据传送 阶段 收到 FIN 发送 ACK 被动关闭 关闭 发送 FIN ESTABLISHED CLOSE_WAIT 关闭 发送 FIN 主动关闭 关闭 发送 FIN 收到 FIN 发送 ACK 同时关闭 FIN_WAIT_1 CLOSING 收到 ACK 收到 FIN, ACK 发送 ACK LAST_ACK 收到 ACK 收到 ACK 收到 FIN 发送 ACK FIN_WAIT_2 TIME_WAIT 定时经过两倍报文段寿命后

19 5-12、5-23、5-24、5-27、5-31、5-37、5-38、5-46

20 tcp四种定时器 重传计时器:Retransmission Timer 持续计时器:persistent timer
为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。 可靠性传输。 持续计时器:persistent timer 专门为对付零窗口通知而设立的。流量控制 保活计时器:keeplive timer 每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。 TCP连接管理。

21 tcp四种定时器 时间等待计时器:Time_Wait Timer
在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以使重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。 TCP连接管理


Download ppt "5.9 TCP 的运输连接管理 1. 运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。"

Similar presentations


Ads by Google