当前位置:主页 > 聚焦 > > 正文

环球热门:TCP三次握手和四次挥手

时间: 2023-04-10 16:25:40 来源: 博客园


(资料图)

TCP三次握手

1.1 为什么需要三次握手,两次不行吗?

第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。因此,需要三次握手才能确认双方的接收与发送能力是否正常。

两次握手不可以。如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,此时客户端忽略服务端发来的确认,也不发送数据,则服务端一致等待客户端发送数据,浪费资源。

1.2三次握手过程中可以携带数据吗?

其实第三次握手的时候,是可以携带数据的。但是,第一次、第二次握手不可以携带数据为什么这样呢?大家可以想一个问题,假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。也就是说,第一次握手不可以放数据,其中一个简单的原因就是会让服务器更加容易受到攻击了。而对于第三次的话,此时客户端已经处于 ESTABLISHED 状态。对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据也没啥毛病。

TCP四次挥手

TCP 连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),客户端或服务端均可主动发起挥手动作。

2.1 挥手为什么需要四次?

因为当服务端收到客户端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当服务端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉客户端,“你发的FIN报文我收到了”。只有等到我服务端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四次挥手。原文链接:https://blog.csdn.net/hyg0811/article/details/102366854

关键词:

相关文章

环球热门:TCP三次握手和四次挥手

TCP三次握手1 1为什么需要三次握手,两次不行吗?第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、

来源:博客园2023-04-10

世界球精选!湖北十堰:清理规范编外人员326人,节省财政约1500万

湖北十堰正在探索编外聘用人员管理的“十堰模式”。4月7日,十堰市委编办刊文介绍了有关细节,例如,当地摸清编外聘用人员总量3400人,清理规

来源:众赢智投2023-04-10

当前关注:美股不香了?基金经理增加对海外股票投资

由于利率上升以及对美国经济衰退的担忧,美国基金经理正在增加对海外股市的投资。数据提供商EPFR的数据显示,今年迄今为止,美国股票基金已有3

来源:智通财经2023-04-10

Ó×ÉýСÉϱ±¾©Ë½Á¢Ñ§Ð£ÐèҪʲô֤¼þ£¿(º¬¾©¼®ºÍ·Ç¾©¼®)

¡¡¡¡±±¾©Ë½Á¢Ñ§Ð£ÃæÏòÈ«±±¾©ÊеÄÊÊÁä¶ùͯÕÐÊÕÓ×ÉýСѧÉú£¬ÕÐÊÕûÓл§¼®ÏÞÖÆ£¬¾©¼®ºÍ·Ç

来源:育路教育网2023-04-10

单身可以申请郑州人才公寓吗?附申请条件

(2023年4月10日更新)2023年郑州人才公寓申请条件及新政策即将公布,我们会第一时间更新在这篇文章,大家可以2022年之前的人才公寓申请条件单

来源:本地宝2023-04-10