首页 > 编程知识 正文

三次握手四次挥手通俗解释,为什么三次握手和四次挥手

时间:2023-05-06 11:04:36 阅读:33470 作者:1712

今天我们来彻底谈谈在计算机网络上一定要考试的知识点。 请握手三次,挥手四次。 总结了所有的考点。 后面有录像。

握手三次

挥手四次

专有名词解释SYN((建立连接时用于同步号SYN的标志位仅在建立TCP连接时设置为1,握手完成后SYN标志位设置为0 ) () ) ) )

标记seq()段的顺序是该段第一个字节的数据号) ) )。

ACK:确认编号仅在ACK=1时有效。 ACK=0,确认号码无效)

ack(期望接收对方下一个消息段的第一个数据字节的编号) ) ) ) ) ) ) ) ) ) ) ) ) )。

MSL

FIN(用于释放一个连接) ) )。

无法确定为什么是三次握手(一次两次即可)一次握手发送是否成功,因此无法建立连接。

3358www.Sina.com/:a在尝试建立连接时发送SYN并等待ACK,但由于网络问题该SYN没有立即到达b,因此a在很长时间没有收到ACK后,http://wwk 此时,A发送了。 对于b来说,两次握手是新的连接请求,b然后为该连接申请资源并返回ACK。 但是,这个SYN是无效的要求,a收到这个SYN的ACK也无视,但是b不知道,b继续保持用于这个连接的资源,导致资源的浪费。

再发送一个SYN,这次B顺利收到:握手失败都是可感知的,保证不浪费资源。

第一个SYN终于到了B(网络延迟):不需要。 三次就够了。

2如果已建立连接,但客户端突然出现故障,该怎么办,客户端将无法一直等待,浪费资源。 服务器在每次收到客户端请求时设置计时器三次握手。 通常,时间设置为2小时,如果2小时后没有收到客户端的任何数据,则服务器为http://www.Sina.com/http://www.Sina.com /,以后每隔75秒发送一次http://ww.com

3客户端将SYN数据包发送到服务器后再挂断。 此时,这个连接处于什么状态? Client将SYN数据包发送到Server后再挂断。 服务器处于客户端的SYN-ACK 四次握手此时,此连接尚未建立。 在这种情况下,将超时时间设置为服务器使用此重新复位。 否则,此连接将继续占用服务器的SYN连接队列中的一个位置,大量连接将耗尽服务器的SYN连接队列,无法处理常规连接。Linux上默认进行发送,重试间隔从1s开始,下次重试间隔为上次的倍数,5次重试间隔为1s、2s、4s、8s、16s,共计31s

4次握手造成的危害需要63秒的SYN超时,因此给了攻击者攻击服务器的机会,攻击者在短时间内将大量的SYN数据包发送到server(3358www.Sina.com/),再发送到http://www.sinn

为什么可以挥手4次,挥手3次? TCP连接是双向传输的对等模式,意味着双方可以同时向对方发送和接收数据。 如果其中一个试图关闭连接,就会发送命令,通知对方我要关闭连接。 此时,对方会回复确认。 此时,单向连接关闭。探测报文段接收方发送ACK确认关闭连接。 请注意,收到FIN消息的一方将回复http://www.Sina.com/ack。 **它不能立即返回对方的FIN消息段。 **结束数据传输的“指令”来自上层APP应用层,因此我只是一个“搬运工”,无法了解“上层意志”。

6为什么time_wait(2msl )10个探测报文仍然没反应是网络上存在哪些消息的最长时间,超过此时间会丢弃消息? 这里的2MSL设定了等待时间。

一直没收到Client的ACK确认这允许在新连接上不显示这种旧连接请求消息段。

对于连接断开,当第一个连接终止时,第二个连接出现具有相同连接,并出现第一个连接的重复消息,从而干扰第二个连接。

strong>就会出现某个连接的重复报文在连接终止后出现。

7 关闭连接时最后一个ACK丢失了怎么办

如果最后一个ACK丢失的话,TCP就会认为它的FIN丢失,进行重发FIN。在客户端收到FIN后,就会设置一个2MSL计时器,2ML计时器可以使客户等待足够长的时间,**使得在ACK丢失的情况下可以等到下一个FIN的到来。**如果在TIME一WAIT状态中有一个新的FIN到达了,客户就会发送一个新的ACK,并重新设置2MSL计时器。

如果重传FIN到达客户端时,客户端已经进入 CLOSED状态时,那么客户就永远收不到这个重传的FN报文段, 服务器收不到ACK,服务器无法关闭连接。

8 如果网络连接中出现大量TIME_WAIT状态会有什么危害

如果系统中有很多socket处于TIME_WAT状态,当需要创建新的 socket连接的时可能会受到影响,这也会影响到系统的扩展性。之所以TIME_WAIT能够影响系统的扩展性是因为在一个TCP连接中,一个Socket如果关闭的话,它将保持TIME_WAIT状态大约1-4分钟。 如果很多连接快速的打开和关闭的话系统中处于TIME_WAIT状态的socket将会积累很多,由于本地端口数量的限制,同一时间只有有限数量的 socket连接可以建立,如果太多的socket处于TIME_WAT状态你会发现,由于用于新建连接的本地端口太缺乏将会很难再建立新的。

视频版本地址https://mp.weixin.qq.com/s/Pw8v6sZy95DV_TQkS5Llbg

视频Bz原址https://www.bilibili.com/video/BV1hK4y1W7NP?pop_share=1

原创面试复习图(点击菜单获取)


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。