建立连接 般来说,一个连接从连接请求的发出到接收到连接证实消 息就可以建立一个连接,但由于网络丢失、延迟而导致重传 而出现重复分组时,一个连接会被建立多次 连接建立过程并不是那么简单! Host 1 Host 2 三步握手 主机1选择一个序号x,并向主机 CR (seq =x) 2发送包含该序号的连接请求CR 主机2应答连接确认ACK,其中 包含确认号x和序列号y ACK(seq =y,ACK =x) 主机1在其发送的第一个数据中 采用序列号为x,并确认主机2的 序列号y DATA (seq=x,ACK=y)
11 建立连接 ◼ 三步握手 ◼ 主机1选择一个序号x,并向主机 2发送包含该序号的连接请求CR ◼ 主机2应答连接确认ACK,其中 包含确认号x和序列号y ◼ 主机1在其发送的第一个数据中 采用序列号为x,并确认主机2的 序列号y ◼ 一般来说,一个连接从连接请求的发出到接收到连接证实消 息就可以建立一个连接,但由于网络丢失、延迟而导致重传 而出现重复分组时,一个连接会被建立多次 连接建立过程并不是那么简单!
三步握手中的延迟重复分组 ■Host1 Host 2 Host 1 Host 2 Old duplicate CR(seq=x) CR(seq =x) Old duplicate ACK (seq=y,ACK =x) ACK (seq=y,ACK=x) DATA (seq =x, ACK=z) Old duplicate REJECT (ACK=y) REJECT(ACK=y) (b) (c) CR-连接请求;ACK-连接确认 图b为重复的CR突然出现;图c为重复的CR和重复的ACK 12
12 CR-连接请求;ACK-连接确认 图b为重复的CR突然出现;图c为重复的CR和重复的ACK 三步握手中的延迟重复分组
释放连接 ■非对称释放 ■连接的任何一方都可以断开整个连接 ■对称释放 ·把连接看作是由两个独立的单向连接,并要 求单独释放每一个单向连接 13
13 释放连接 ◼ 非对称释放 ◼ 连接的任何一方都可以断开整个连接 ◼ 对称释放 ◼ 把连接看作是由两个独立的单向连接,并要 求单独释放每一个单向连接
CR-连接请求 非对称释放 ACK-确认 DR-断开请求 Host 1 Host 2 当连接建立以后,主机1发 CR 送一个DATA,它正确地到 达了主机2,然后,主机1又 发送一个DATA,但是由于 ACK 主机2在第二个DATA到达之 前就已经发送了断开请求 DATA DR DATA DR No data are 因此,该连接虽然被释放, delivered after 但是数据却丢失了 a disconnect request
14 非对称释放 当连接建立以后,主机1发 送一个DATA,它正确地到 达了主机2,然后,主机1又 发送一个DATA,但是由于 主机2在第二个DATA到达之 前就已经发送了断开请求 DR 因此,该连接虽然被释放, 但是数据却丢失了 CR-连接请求 ACK-确认 DR-断开请求
对称释放 DR-断开请求 ACK-确认 Host 1 Host 2 释放连接再次用到三步握 Send DR DR 手,一方发出断开请求 start timer DR后不立即拆除连接, 而要等待对方确认ACK Send DR start timer ;对方收到DR,发送 DR ACK确认报文,并拆除 Release 连接,发起方收到ACK connection 确认后拆除连接 Send ACK ACK Release connection
15 对称释放 释放连接再次用到三步握 手,一方发出断开请求 DR后不立即拆除连接, 而要等待对方确认ACK ;对方收到DR,发送 ACK确认报文,并拆除 连接,发起方收到ACK 确认后拆除连接 DR-断开请求 ACK-确认