三次握手,4次挥手原理解析

16人阅读 评论(0) 收藏 举报
分类:

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:

先来看看如何建立连接的。



首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

那如何断开连接呢?简单的过程如下:


【注意】中断连接端可以是Client端,也可以是Server端。

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说”我Client端没有数据要发给你了“,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,”告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息“。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,”告诉Client端,好了,我这边数据发完了,准备好关闭连接了“。Client端收到FIN报文后,”就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,”就知道可以断开连接了“。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

整个过程Client端所经历的状态如下:


而Server端所经历的过程如下:转载请注明:blog.csdn.net/whuslei


【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。

【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

查看评论

TCP三次握手和四次挥手过程分析

TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp...
  • xuyue1987
  • xuyue1987
  • 2011年09月27日 15:36
  • 11173

详解HTTP的3次握手和4次挥手

为什么有3次握手 每当建立一个TCP/IP连接的时候都要经历3次握手,这是为了保证建立一个可靠的连接。 什么是3次握手 上图中的三次挥手说的是,客户端向服务器发请求,服...
  • kingov
  • kingov
  • 2017年08月14日 10:19
  • 1198

TCP三次握手和四次挥手全过程及为什么要三次握手解答

TCP三次握手和四次挥手的全过程      TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有8种表示: SYN(synchrono...
  • yanxiaolx
  • yanxiaolx
  • 2016年08月04日 22:37
  • 9723

TCP/IP协议 三次握手与四次挥手

一、TCP报文格式         TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式         上图中有几个字段需要重点介绍下: ...
  • renzhenhuai
  • renzhenhuai
  • 2013年09月27日 17:39
  • 25861

理论经典:TCP协议的3次握手与4次挥手过程详解

摘要: 本文将分别讲解经典的TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程。 1、前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与...
  • omnispace
  • omnispace
  • 2016年09月29日 14:42
  • 21471

简明理解三次握手和四次挥手

注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个视点解读,如有其它看法欢迎留言交流。 三次握手与四次挥手分别对应TCP连接建立过程与断开过程,先上TCP报文格式:...
  • zixiaomuwu
  • zixiaomuwu
  • 2017年03月09日 19:19
  • 9703

TCP的三次握手与四次挥手(详解+动图)

背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进...
  • qzcsu
  • qzcsu
  • 2017年06月04日 21:53
  • 7900

tcp三次握手四次挥手

三次握手:第一次:客户端给服务器发请求说,我要和你建立连接        SYN=1第二次:服务器给客户端说,我知道了,那咱两建立连接把     ACK=1  SYN=1第三次:客户端对服务器说,好的...
  • weixin_40197429
  • weixin_40197429
  • 2018年02月27日 02:36
  • 70

图解TCP协议中的三次握手和四次挥手

最近在复习计算机网络,看到TCP这一章,总结一下。 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 1.jpg 先来看看如何建立连接的: 2.p...
  • GarfieldEr007
  • GarfieldEr007
  • 2017年08月07日 23:09
  • 627

TCP为什么要3次握手和4次挥手时等待2MSL

1.TCP为甚要3次握手?  在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”,书中的例子是这样的,“已失效的连接请求报文段...
  • benjiazhen
  • benjiazhen
  • 2016年11月16日 16:03
  • 4028
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 1359
    排名: 3万+
    最新评论