IP电话机、视频可视电话通信产品及组网方案

TCP连接过程

时间:2021-08-19 10:35 作者:admin 分享到:
1、连接建立
        TCP连接建立的三次握手过程如图2.34所示。A、B分别为客户和服务器,B执行LISTEN和ACCEPT原语后,等待连接请求的到来。
        A执行CONNECT原语后,发出TCP段,其中SYN1,ACK=0,初始序号设为x,段中可带用户数据(如口令),该段到达B后,B的TCP实体查验是否有进程在该段指明的目的端口守听,如没有,就返回一个段,置RST=1;如有就将该段送交守听进程,该进程可决定接受还是拒绝该连接请求。如接受,则回送确认段,置序号=Y,确认号=X+1,A收到此段后,也返同一个确认段,置序号=X+1,确认号=Y+1。至此,连接建立成功。
TCP连接建立过程
图2.34 TCP连接建立过程
      上述三次握手过程可以有效地处理各种异常情况。现以图2.35为例进行说明。
       图(a)为A,B双方同时发起连接请求的碰撞情况。双方都按照正常过程发送确认段,对于任一方来说都已完成三次握手过程。表面上看来建立了两条连接,但由于它们的端点对相同,因此在插口表项中只占有一个表项,也就是说只建立起一条连接。
连接异常情况处理
图2.35连接建立的异常情况处理图
        图(b)为一条连接建立、通信并释放后,延迟重复的连接请求又到达B,B虽然回送确认段,但A发现它并未发送关于该连接的请求,于是就问送拒绝段(RST=1),不可能错误地再次建立此连接。
        图(c)为延迟重复的连接请求和数据段相继到达B,B收到重复的数据段时,因连接尚未建立,因此不会接受此数据。其后收到A发回的拒绝段,就终止连接的建立。
        需要注意一点,连接请求中的初始序号不能取为0。其原因是当主机崩溃后重新恢复时,如果以同样的初始序号重新进行连接建立,对方就会认为原有的连接依然存在,而不理会此次连接请求。一般采用基于时钟的方法随机选择初始序号。
2、连接释放
       连接释放也采用三次握手过程,如图2.36所示。
连接释放过程
图2.36连接释放过程
        连接释放可由任一方发起,释放过程将连接视作两条独立的单工连接。如A方发出释放请求(FIN=1),并收到B方对该释放段的确认以后,则A→B的连接关闭,即A→B停止发送数据,但B→A仍可发送数据。要关闭B→A的连接需反向执行同样的操作。在图2.36中,B收到A发来的释放请求后,要经过一定时间才能发出至A的释放请求,因为B需通知应用进程并获得关闭连接的命令,其间可能涉及人机交互操作。为了防止超时重传,B应立即向A返回释放确认,以先行关闭A→B的连接。
       如果发出释放请求的一方在2倍分组最大生存时间内未收到确认,则自行释放该连接。其后,对端将检测到对方进程已不在通信状态,于是也将超时释放连接。
3、连接管理状态转移图
       上述TCP连接管理过程可由图2.37所示的状态转移图完整地描述。图中,粗实线表示服务器的正常转移路径,细实线表示客户机的正常转移路径,虚线表示异常路径。每条状态转移线旁标有E/A标记,E表示转移触发事件,A表示转移时执行的动作。 
TCP连接管理状态转移图
图2.37TCP连接管理状态转移图
        现以一条正常路径予以简要说明。服务器调用LSTEN原语后从“关闭”状态进入“守听”状态。此时客户机调用CONNECT原语后,发出连接请求(SYN=1),进入“同步已发送”状态,服务器收到此请求后,返送确认(SYN+ACK)段后进入“同步已接收”状态。客户机收到此确认后向服务器回送确认,进入“连接已建”状态,服务器收到客户机发来的确认后也进入“连接已建”状态。
       随后,客户机调用CIOSE原语,发出释放请求(FIN),主动关闭连接,进入“关闭等待1”状态。服务器收到此释放请求立即返回确89认(ACK),进入“关闭等待”状态。客户机收到确认后进入“关闭等待2"状态。其后,服务器调用CLOSE原语,发出释放请求,进入"最终确认”状态。客户机收到此请求后,立即发回确认,进入“定时等待”状态,以作资源释放等善后工作,定时器时间到就回到“关闭”状态。服务器收到客户机发回的确认后,也回到“关闭”状态。

版权所有:IP电话:http://www.g3voip.com 转载请注明出处

热销IP电话产品hot products