您的位置:首页 > 理论基础 > 计算机网络

TCP协议三次握手四次挥手过程

2016-03-04 15:47 501 查看
TCP协议是传输控制协议,是以=一个面向连接,在运用此协议进行数据传输的时候会进行连接工作 ,(三次握手)当传输完毕后,双方都会通知彼此释放连接(四次挥手)。

TCP标志位:

SYN (建立联机)

ACK (确认)

PUSH (传送)

FIN (结束)

RST (重置)

URG (紧急)

Sequence number (顺序号码)

Acknowledge number (确认号码)

图解TCP 三次握手与挥手:



三次握手过程:

第一次握手:

hsot1发送一个TCP标志位,SYN =1 的数据包 ,并随机产生一个 seq number 的数据包发送给host2, 当host2接收到这个数据后,host2根据SYN=1 可知客户端(host1)想要建立连接。

第二次握手:host2 要对客户端(host1)请求进行确认,向host1 发送 ack number=(host1的 seq number+1),ACK = 1,SYN=1 并随机产生一个seq number 的数据包,这样就告诉host1 可以进行连接。

第三次握手:

host1收到后会检查ack number 是否正确 ,即第一次发送的seq number+1 以及码 ACK =1 ,若正确host1会发送ACK=1和 ack number =(host2 的seq+1),若主机B 收到确认seq number 值与ack=1 则连接建立成功。

一个完整的三次握手就是 请求-----应答------再次确认

四次挥手的过程:

由于TCP 连接是全双功的,因此每一个方向都必须进行单独关闭,这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向上的连接。

第一次挥手:

当传输的数据到达数据的尾部的时候,host1 向host2 发送FIN=1 标志位,可以理解成host1 向host2说,我这边数据已经传输完成,准备断开连接。

第二次挥手:

因为TCP的连接需要从两边关闭,当host2收到host1发送的FIN=1 标志位后,host2不会立刻向host1发送FIN=1的请求关闭信息,而是向host1发送一个ACK应答信息,表示 :你请求关闭请求我已经收到,但我可能还有数据没有完成,你在等下,等待数据除传输完毕后就会告诉你。

第三次挥手:

当host2 数据传输完后,向host1发送FIN=1,host1收到请求关闭连接的请求后,host1 就明白host2数据已经传输完成,可以断开连接。

第四次挥手:

Host1收到FIN=1 ,hos1还是怕有与网络不稳定的原因,怕host2不知道自己要断开连接,于是向host2发送ACK=1 ,确认信息进行确认,把自己设置为TIME_WITE状态并启动定时器,如果host2没有收到ACK ,host2端的定时器到达后,会要求host1重新发送ACK,当host2收到ACK后就会断开连接,当host1等待2mls(两倍报文最大生存时间)后没有收到重传请求,就知道host2已收到ACK,所以host1此时关闭自己。

在TCP 连接的建立与释放的过程中,host1 与host2 并没有严格客户端与服务器端之分,谁先发起请求谁就是客户端。

本篇博文主要参考http://zhaochj.blog.51cto.com/368705/1317226 感谢,感谢 感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: