您当前的位置:首页 > 资源分享 > 前端技术 前端技术

通俗易懂的三次握手四次挥手(有图,白话解释)

caster2019-07-15 15:06:40 前端技术 人已围观

简介通俗易懂的三次握手四次挥手 三次握手耳熟能详,四次挥手估计就..所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确

通俗易懂的三次握手四次挥手


一,三次握手

1+1等于几?2,2+2等于几!不知道!
 

你问她之后,对于你而言

1,没有收到回复,她网络不通

2,收到信息,可以确认a,你能收到她的信息;b,她能收到你的信息

对于她而言,如果感觉网络情况不对的时候

1,若没有收到你的询问,她发起询问

2,若收到“1+1等于几”,则她可以确认a,她可以收到你的信息,然后回复你的答案和她的问题

3,若没有收到“不知道”,则她可以确认b,你收不到她的信息

4,若收到“不知道”,则她可以确认c,你能收到她的信息
 

--:如果上面对话完成,就可以证明双方都能听到对方的声音

TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。
 

二,四次挥手

 
AB在不在,100rmb救急?你真是A,证明一下?我上次借你的100rmb还没有还转过去了AB
关于四次挥手

   先由客户端向服务器端发送一个FIN,请求关闭数据传输。 当服务器接收到客户端的FIN时,向客户端发送一个ACK,其中ack的值等于FIN+SEQ 然后服务器向客户端发送一个FIN,告诉客户端应用程序关闭。 当客户端收到服务器端的FIN是,回复一个ACK给服务器端。其中ack的值等于FIN+SEQ

为什么要四次挥手

    确保数据能够完整传输。 当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。 但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后, 再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。


注:

(1)三次握手是什么或者流程?四次握手呢?答案前面分析就是。

(2)为什么建立连接是三次握手,而关闭连接却是四次挥手呢?

     这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。


 

文章评论

打赏

  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!
  • 微信扫码:你说多少就多少~
  • 支付宝扫码:你说多少就多少~