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

TCP/IP的三次握手和四次挥手

2017-07-21 09:47 495 查看
TCP/IP,通常放在一起,但是TCP和IP是两个不同的协议。

IP协议是用来查找地址的,对应着网际互联层,TCP协议是用来规范传输规则的,对应着传输层。

IP只负责找到地址,具体传输的工作交给TCP来完成。就像快递的送递一样,填写的规则和内容相当于IP协议,最后打电话,送货物,客户签收 相当于TCP协议。

三次握手



报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。

SYN: 同步位,用于建立连接时同步序号,发起连接。作用就是当接收端收到SYN = 1,的报文会直接将ACK设置为接收到的seq+1的值

seql: sequence number, 表示所传数据的序号。

ACK:确认位,用于建立连接时同步序号。正常通信时ACK = 1,第一次等于0

ack: acknoledgement number: 表示确认号。接收端用它来给发送端反馈已经成功接收到的数据,它的值为希望接收的下一个数据包起始序号。它的值表示前面数据已经成功接收到了。

FIN: 终止位,用来数据传输完毕后释放连接。

第一次握手: 客户端发送一个SYN标志 = 1,以及初始序号X;Client进入SYN_SENT状态,等待Server确认。

第二次握手:服务端发送ACK确认。SYN = 1, ACK = 1同时,将确认序号设置为刚才第一次从客户端收到的序号X+1,即ACK = X+1;Server进入SYN_RCVD状态;

第三次握手:客户端再次发送ACK确认。再将确认序号设置为ACK = Y+1, 同时发送数据。这时,客户端和服务端开始对话,传输数据。

四次挥手



第一次挥手: Server收到FIN后,用来关闭CIient到Server的数据传送,但并未关闭Server到CIient和Client到Server的数据传送(因为Server收到FIN报文,不会立即关闭连接,需要选回复一个ACK告诉Client我收到你的关闭请求了,但是等我先把数据传送完,之后再发送FIN报文); Client进入FIN_WAIT_1状态;

第二次挥手: 在ACK=1下,Server发送ack等于收到的报文序号+1,ack=u+1传送给Client数据为seq=v;同时处于CLOSE_WAIT状态

第三次挥手: Server发送给Client一个FIN=1,关闭Server到Client的连接;Server处于LAST_ACK

第四次挥手: CIient收到FIN后处于TIME_WAIT状态,并没有立即关闭Cilent到Server的连接,还是可以发送数据,发送一个确认序号ACK+1,Server就Close了。然后Client在TIME_WAIT状态下等待2MSL(最大生存时间)关闭Client连接,此状态用于重新发送可能丢失的ACK报文。至此,TCP的四次挥手结束,连接关闭
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tcp 网络