连接建立过程叫做三次握手
发布时间:2014/9/7 22:16:46 访问次数:621
TCP客户进程收到B的确认后,还要向HEF4081BP给出确认。确认报文段的ACK置l,确认号ack:y+1,而自己的序号seq= x+l。TCP的标准规定,ACK报文段可烈携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+l。这
时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
当B收到A的确认后,也进入ESTABLISHED状态。
上面给出的连接建立过程叫做三次握手(three-way handshake)'2J。
为什么A还要发送一次确认呢?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。
所谓“已失效的连接请求报文段”是这样产生的。考虑一种正常情况。A发出连接请求,但因连接请求报文丢失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接。A共发送了两个连接请求报文段,其中
第一个丢失,第二个到达了B。没有“已失效的连接请求报文段”。
现假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,以致延误到连接释放以后的某个时间才到达B。本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误认为是A又发出一次新的连接请求。于是就向A发出确认报文段,同意建立连接。假定不采用三次握手,那么只要B发出确认,新的连接就建立了。
由于现在A并没有发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但B却以为新的运输连接已经建立了,并一直等待A发来数据。B的许多资源就这样白白浪费了。
采用三次握手的办法可以防止上述现象的发生。例如在刚才的情况下,A不会向B的确认发出确认。B由于收不到确认,就知道A并没有要求建立连接。
①注:传输控制块TCB (Transmission Control Block)存储了每一个连接中的一螳重要信息,如:TCP连接表,剑发送耳¨接收缓存的指针,到重传队列的指针,当前的发送和接收序号,等等。
②注:章鸿献主编的<最新英汉计算机词典》(清华人学出版社1999年出版)给日{的译名是“广为流行的译名“二次握手”。
TCP客户进程收到B的确认后,还要向HEF4081BP给出确认。确认报文段的ACK置l,确认号ack:y+1,而自己的序号seq= x+l。TCP的标准规定,ACK报文段可烈携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+l。这
时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
当B收到A的确认后,也进入ESTABLISHED状态。
上面给出的连接建立过程叫做三次握手(three-way handshake)'2J。
为什么A还要发送一次确认呢?这主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。
所谓“已失效的连接请求报文段”是这样产生的。考虑一种正常情况。A发出连接请求,但因连接请求报文丢失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接。A共发送了两个连接请求报文段,其中
第一个丢失,第二个到达了B。没有“已失效的连接请求报文段”。
现假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,以致延误到连接释放以后的某个时间才到达B。本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误认为是A又发出一次新的连接请求。于是就向A发出确认报文段,同意建立连接。假定不采用三次握手,那么只要B发出确认,新的连接就建立了。
由于现在A并没有发出建立连接的请求,因此不会理睬B的确认,也不会向B发送数据。但B却以为新的运输连接已经建立了,并一直等待A发来数据。B的许多资源就这样白白浪费了。
采用三次握手的办法可以防止上述现象的发生。例如在刚才的情况下,A不会向B的确认发出确认。B由于收不到确认,就知道A并没有要求建立连接。
①注:传输控制块TCB (Transmission Control Block)存储了每一个连接中的一螳重要信息,如:TCP连接表,剑发送耳¨接收缓存的指针,到重传队列的指针,当前的发送和接收序号,等等。
②注:章鸿献主编的<最新英汉计算机词典》(清华人学出版社1999年出版)给日{的译名是“广为流行的译名“二次握手”。
上一篇:TCP的运输连接管理
上一篇:TCP的连接释放