首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三次握手四次断开

一、三次握手 三次握手的过程 TCP 三次握手就好比两个人在街上隔着50米看见了对方,但是因为雾霾等原因不能100%确认,所以要通过招手的方式相互确定对方是否认识自己。...这就是三次握手的本质,中间的一次动作是两个动作的合并。 ?...client端发送syn字段,请求连接 server端回复ack、syn字段字段确定与之连接 client接到确认后进入established已建立状态,并发送ack字段确认对方的连接 为什么要三次握手...| 二 | | 服务端 | 二+三 | 一 | 一 | 二+三 | 二、四次断开...四次断开过程 TCP断开链接的过程和建立链接的过程比较类似,只不过中间的两部并不总是会合成一步走,所以它分成了4个动作,张三挥手(fin)——李四伤感地微笑(ack)——李四挥手(fin)——张三伤感地微笑

39430

【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )

文章目录 I TCP 连接建立流程 ( 三次握手 ) II SYN 和 ACK 中的随机值 III TCP 连接建关闭流程 ( 四次挥手 ) IV TCP 连接断开的保证 V 四次挥手的必要性 I...TCP 连接建立流程 ( 三次握手 ) ---- 1....服务器端收到 SYN ACK 命令 ( 第三次握手 ) : 服务器端再次收到客户端的命令 , 校验这两个命令 , 校验通过后 , 连接正式建立 ; II SYN 和 ACK 中的随机值 ---- 1...., 客户端发送断开请求命令 , 服务器端会送响应命令 ; 第三次四次挥手是服务器端向客户端申请断开连接 , 服务器端发送断开请求命令 , 客户端会送响应命令 ; IV TCP 连接断开的保证...多次第三次挥手 ) , 直到收到客户端会送的 ACK 命令 ( 第四次挥手 ) ; 2.

69120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么tcp建立连接需要三次握手断开连接需要四次挥手

    三次握手 三次握手的目的,是为了防止A端已经失效的连接请求突然又传到B端,被误认为是A端再次发出的一个新的连接请求,如果B端这时又再次向A发出确认报文,表示同意建立连接,就会产生错误。...第一次是A端向B端发送请求,如果是只有一次握手的话,A端不知道B端是不是收到了这个请求。...[](https://gitee.com/chenyy-2017/pic/raw/master/note/59bd6d1dff4f17d36c9446fa87e1f9cf_.jpg) 四次挥手 四次挥手的本质原因是...只有当B端数据发送完之后,才能发出结束报文,并且确认A端接收到的时候,两边才会真正的断开连接,双方的读写分开。 !...参考: tcp建立连接为什么需要三次握手:https://www.jianshu.com/p/e7f45779008a TCP三次握手四次挥手详解:https://www.cnblogs.com/zmlctt

    7.4K11

    三次握手 && 四次挥手

    为什么握手只要三次,挥手要四次?...专治难题 第一次握手失败 第二次握手失败 第三次握手失败 第一次挥手失败 第二次挥手失败 第三次挥手失败 第四次挥手失败 TCP连接的建立与终止 TCP是一个面向连接的协议。...---- 四次挥手 建立一个连接需要三次握手,而终止一个连接要经过 4次握手。这由TCP的半关闭(half-close)造成的。...TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次"握手"传输的。 为何建立连接时一起传输,释放连接时却要分开传输?...三次握手四次挥手,哈哈。。。 还记得那天晚上,我们躺在草坪上看星星,你问我的那个问题吗?我给你的答复,很快我就要达成了。你的答复是啥来着?我忘了,忘咯。

    78710

    java---网络知识点---TCP三次握手连接 断开四次挥手

    一、TCP握手协议  在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 ...ESTABLISHED状态,完成三次握手。 ...“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。...【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手? 答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。...假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ack包

    70340

    三次握手四次挥手例题(tcp三次握手原理)

    在面试中,三次握手四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的...三次握手 当面试官问你为什么需要有三次握手三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握手的过程: 1、第一次握手:客户端给服务器发送一个 SYN 报文。...四次挥手 四次挥手也一样,千万不要对方一个 FIN 报文,我方一个 ACK 报文,再我方一个 FIN 报文,我方一个 ACK 报文。...3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。...LAST-ACK – 等待原来发向远程TCP的连接中断请求的确认; TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; CLOSED – 没有任何连接状态; 最后,在放在三次握手四次挥手的图

    29020

    TCPIP三次握手四次挥手

    注:以下情节纯属虚构 方案 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。...这个故事可以解释TCP为什么要三次握手吗 ... 囧 关于四次挥手 先由客户端向服务器端发送一个FIN,请求关闭数据传输。...三次握手耳熟能详,四次挥手估计就..所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。...四、附注 关于三次握手四次挥手通常都会有典型的面试题,在此提出供有需求的XDJM们参考: (1)三次握手是什么或者流程?四次握手呢?答案前面分析就是。...(2)为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 答:这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

    96051

    TCP为什么建立连接需要三次握手,而断开连接则需要四次

    虽然文章的主旨是三次握手(three-way handshake)与四次挥手(four-way handshake),但不理解 Sequence number 和 Acknowledgement number...2 三次握手过程概述 有了上面的基础,我们再开始看握手过程,TCP连接三次握手的过程如下,为了方便描述: SEQ_NUM 代表 TCP header 中的 Sequence number ACK_NUM...加起来难道不是四次吗?实际上被连接方将对连接方 SYN(1) 的回复和自己 SYN(1) 的请求合并了,所以建立一个 TCP 连接最少只需要经过三次网络传输。...4、那为什么 TCP 断开连接需要四次,而不是三次? 发起断开方发出FIN,并收到ACK,这就是两次网络传输了。 同样被断开方也发出FIN,且等待对方回复,这也是两次网络传输。...同样的逻辑分析下来,实际上也可以仅经过三次传输就断开此次连接,但为什么我们会说四次挥手呢?

    90820

    三次握手四次挥手

    ,采用三次握手建立一个连接。...可能会有这种想法,为什么要进行三次握手才能建立连接,两次貌似也可以,事实三次握手是可靠的的连接过程: 三次握手的目的是 “为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误“, “已失效的连接请求报文段...四次挥手: 当客户服务端传输完毕,需要终止连接的时候,就会进行四次挥手: 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。...第三次挥手:服务器关闭客户端的连接,发送一个FIN给客户端。 第四次挥手:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。 ?...B->CLOSE_WAIT | A->FIN_WAIT2 第三次挥手:B(主机2):好了,说完了,我也不说了。  B->LAST_ACK 第四次挥手:A(主机1):表示已收到。

    45310

    TCP三次握手四次挥手

    TCP 三次握手 TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。...(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。...完成三次握手,客户端与服务器开始传送数据。 图1 TCP三次握手建立连接 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。...TCP采用四次挥手关闭连接如图2所示。 图2  TCP四次挥手关闭连接 1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?...本文摘自: 《TCP连接的状态转换图深度剖析》 http://www.diybl.com/course/6_system/linux/Linuxjs/2007104/76065.html TCP三次握手四次挥手详细图解

    45520

    TCP三次握手&四次挥手

    所以,还需要进行第三次握手,第三次握手就是当客户端收到服务端发送的确认响应报文之后,还要继续去给服务端进行回应,也是一个ack标志位置1的确认消息。...四次挥手 以下内容 摘自 【面试官,不要再问我三次握手四次挥手】 建立一个连接需要三次握手,而终止一个连接要经过四次挥手(也有将四次挥手叫做四次握手的)。...故需要四次挥手。 总结面试回答 面试官:你了解TCP/IP协议里面的三次握手四次挥手机制吗?...四次握手机制也是由客户端发起的,客户端向服务端发送一个报文,在这个报文里面FIN位至1,当服务端收到这个报文之后,服务端知道了客户端想与我断开连接,但是此时服务端不一定准备好了要与客户端断开连接 ,服务端可能还有未发送完的消息给客户端...通过这四次握手我们知道了客户端与服务端都做好了断开连接的准备,于是连接就可以断开了。

    42930

    三次握手四次挥手

    确认方Ack=发起方Seq+1, 两端配对. 2 三次握手 (1)第一次握手: Client将标志位SYN置为1, 随机产生一个值seq=x, 并将该数据包发送给Server, Client进入SYN_SENT...(3)第三次握手: Client收到确认后, 检查ack是否为x+1, ACK是否为1, 如果正确则将标志位ACK置为1, ack=y+1, 并将该数据包发送给Server, Server检查ack...是否为y+1, ACK是否为1, 如果正确则连接建立成功, Client和Server进入ESTABLISHED状态, 完成三次握手, 随后Client与Server之间可以开始传输数据了. 3 四次挥手...(4)第四次挥手: Client收到FIN后, Client进入TIME_WAIT状态, 时间是2MSL(最大分段生存期, 默认2分钟), 接着发送一个ACK给Server, 确认序号为收到序号+1..., Server进入CLOSED状态, 完成四次挥手.

    23510

    TCP协议—三次握手四次挥手的原理 三次握手四次挥手的原理

    三次握手四次挥手的原理 ? TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。...三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息。 1.第一次握手:建立连接。...完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。 那四次挥手呢? 当客户端和服务器通过三次握手建立了TCP连接以后,当数据传送完毕,肯定是要断开TCP连接的啊。...那对于TCP的断开连接,这里就有了神秘的“四次挥手”。...至此,TCP的四次挥手就这么愉快的完成了。当你看到这里,你的脑子里会有很多的疑问,很多的不懂,感觉很凌乱;没事,我们继续总结。 为什么要三次握手? 既然总结了TCP的三次握手,那为什么非要三次呢?

    46921

    详解TCP连接的“三次握手”与“四次握手

    阅读量: 239 三次握手(Three-Way Handshake) 1.“三次握手”的通俗理解 所谓的三次握手即TCP连接的建立。这个连接必须是一方主动打开,另一方被动打开的。...TCP的四次挥手(Four-Way Wavehand) 1.前言 对于”三次握手”我们耳熟能详,因为其相对的简单。但是,我们却不常听见“四次挥手”,就算听过也未必能详细地说明白它的具体过程。...这就是“四次挥手”。 为什么“握手”是三次,“挥手”却要四次? TCP建立连接时之所以只需要”三次握手”,是因为在第二次”握手”过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。...TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次握手”传输的。 1.为何建立连接时一起传输,释放连接时却要分开传输?...所以是“三次握手”,“四次挥手”。

    1.4K20

    tcp三次握手四次挥手

    1、为什么TCP采用3次握手而不是2次或4次握手 原因1:双向连接,至少要三次握手 其实问题本质是信道不可靠,但是通信双方需要就某个问题达成一致,而要解决这个问题,无论在消息中包含什么消息,三次通信是理论上的最小值...所以三次握手不是TCP本身的要求,而是为了满足“在不可靠信道上可靠的传输信息”这一需求所导致的。三次达到了,后面想接着握手也好,发数据也好,跟进行可靠信息传输的需求就没关系了。...,三次握手这个说法不好,其实是双方各一次握手,各一次确认,其中一次握手和确认合并在一起。...如果两次握手的话,客户端有可能因为网络阻塞等原因会发送多个请求报文,这时服务器就会建立连接,浪费掉许多服务器的资源。 2、为什么tcp建立连接是三次握手,而关闭连接却是四次挥手呢?...原因:保证tcp协议的全双工连接能够可靠关闭 这个我们可以看到和 TCP 建立连接时的原因相同,本质是一样,因为 TCP 是全双工通信,只不过三次握手时的 SYN + ACK 是放在一个报文中了,而四次挥手时

    43262

    TCP之三次握手四次挥手

    状态,完成三次握手。...为什么会采用三次握手,若采用二次握手可以吗? 四次呢? 建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。...为什么不是四次握手呢?...第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到...为什么建立连接是三次握手,关闭连接确是四次挥手呢? 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

    474100

    TCP三次握手四次挥手

    FIN报文 FIN(finish)报文用于表示发送方已经完成了数据传输任务,希望断开连接。需要注意的是,发送FIN包不代表立刻断开连接,收到FIN包的一方会在所有数据都接收完成后,回复ACK包。...在计算机网络中,TCP协议就是全双工的,这是理解四次挥手的关键。 三次握手 客户端向服务器端发送SYN报文,表示请求连接。这个SYN报文包含一个随机的初始序列号。...为什么是三次握手而不是两次握手或者四次握手 请求TCP连接时的握手是为了确保双方都具备发送和正确接收的能力。 两次不靠谱(浪费资源),四次没必要。...四次挥手 FIN:需要断开连接的一方(设为A)完成数据传输后,它向另一方(设为B)发送FIN包,表示“A数据发送完毕,请求断开连接”。...这样两个方向都进行了两次挥手,总共四次,来确保连接可以安全地关闭。

    19110

    TCP 三次握手四次挥手

    在聊到网络协议的时候,总是会说到TCP的三次握手四次挥手,这里也整理记录下学习的整个过程。 TCP 三次握手 三次握手是 TCP 连接的建立过程。...② 服务器接收到客户端请求断开连接的 FIN 报文后,结束 ESTABLISHED 阶段,进入 CLOSE-WAIT 阶段并返回一段 TCP 报文,其中: 标记位为 ACK,表示接收到客户端释放连接的请求...客户端等待完 2 MSL 之后,结束 TIME-WAIT 阶段,进入 CLOSED 阶段,由此完成「四次挥手」。 Q&A 1、为什么要进行三次握手?两次握手可以吗?...三次握手保证两点: 保证双方都是双工通信 第一次握手,服务端确定客户端的发送正常 第二次握手,客户端确认服务端的收发正常 第三次握手,服务端确定客服端接收正常 如果只有第二次握手,服务端发给客服端的包丢了之后...3、为什么要四次挥手? 释放 TCP 连接时之所以需要四次挥手,是因为 FIN 释放连接报文和 ACK 确认接收报文是分别在两次握手中传输的。

    47110
    领券