计网——TCP链接管理(三次握手、四次握手)

TCP链接管理分为两部分:一是三次握手创建链接;二是四次握手释放链接服务器

1.链接创建(三次握手)同步

①主机A的TCP向服务器B的TCP发出链接请求报文段,其首部中的同步比特标志位SYN应置为1,同时选择一个初始序号seq=x;请求

②服务器B的TCP收到链接请求报文后,则发回确认,标志位ACK应置为1,确认号应为ack=x+1.由于链接是双向的,因此服务器B也发出和A的连结请求,在报文段中同时应将SYN置为1,为本身选择一个初始序列seq=y。im

③主机A的TCP收到此报文段后,还要向服务器B给出确认,ACK应置为1,其确认号为ack=y+1。总结

:①SYN:在链接创建是用来同步序号;ACK代表确认号字段有效;FIN用来释放一个链接。数据

      ②TCP报文段首部的SYN和FIN置位的时候,须要消耗一个序列号(全部才有x+1和y+1),而仅有ACK置位时,不须要消耗序列号。img

      ③二次握手会致使死锁。假如使用二次死锁,即A不会再向B发送确认报文,若是第二次握手中B给A的确认报文丢失的话,那么B认为已经链接,会开始给A发送数据报文,A会丢弃B传来的数据报文并继续等待B发送确认报文,而B也会由于发送超时再次重复发送一样的报文,致使死锁。管理

2.链接释放(四次握手)超时

①主机A的TCP通知对方要释放从主机A吊服务器B这个方向的链接,将发往主机B的TCP报文段首部终止比特标志位FIN置1,假定此时序号为seq=m。

②服务器B的TCP收到释放链接的通知后,即发出确认,FIN须要消耗一个序号,因此其确认号为ack=m+1。这样从主机A到服务器B的链接就释放了,链接处于半关闭状态。此时若是服务器B还发送数据,主机A仍接收。

③服务器B向主机A的数据发送后,TCP释放服务器B到主机A的链接。服务器B发送出的链接释放报文除必须将终止比特FIN置1,并假定其序号seq=n,由于标志位ACK不须要消耗序号,因此此时的确认号仍然是ack=m+1。

④主机A必须对此发出确认,由于FIN须要消耗一个序号,因此给出确认号为ack=n+1。最终双方链接释放所有完成。

 

总结:整体来看TCP的链接和释放其实本质相同,都是一个双方都须要发送链接(释放)请求,而后再发回确认的过程。区别在于链接时没有前置条件,因此B给A的确认和请求能够同时发送;而释放时,存在一个前置条件,就是数据发送结束,不能保证B给A发送确认的同时也可以发送申请(即B向A的数据发送已经结束),因此释放过程比链接过程多了一次握手。

相关文章
相关标签/搜索