tcp的三次握手和四次挥手

勤奋的年轻人 勤奋的年轻人     2022-12-02     236

关键词:

前言

我们假设两个人隔一扇门进行沟通,肯定不会一上来A就噼里啪啦讲一堆话,在正式开始对话之前,肯定要先进行确认门后是否有人。那我们思考要进行怎样的步骤才能最小化的进行确认。
同样在沟通之后,我们结束了,假设沟通很重要,要保证完整性,那要怎么样进行礼貌的离开呢。
这就引起了我们对于tcp的三次握手和四次挥手的概念了。

TCP三次握手

正常来说如果A找B,B一般都会在门后等着(需要先Listen),当然也可能不在(资源不够,在处理其他的事情)。这个时候A说你在吗,结果B不在(各种原因,导致丢弃),然后A又说你在吗(重试),这个时候B事情忙完了,发现有人找他(第一次握手),就回答我在。回答完的时候,B就要在门后等着了,A可能没有听到,B又回答我在了,A终于听到了(第二次握手),这个时候A回答我也在了,B听到A的回答(第三次握手),就完成了正式交流前的确认工作。
那我们分析一下过程:

整体的三次握手简单描述就是这样,三次简单的沟通之后,就开始的交流,这个时候就进入了连接状态。
我们画一下tcp的三次握手的示意图:

真实情况可能会更复杂,整体过程和上面的描述差不多。不过要注意几点:
1、任何情况下都可能因为网络或者资源的问题导致接收失败,或者主动丢弃。
2、第三步,有可能Sever没有资源或者网络问题,并没有收Ack,这个时候会Server会重试2步骤

不过上面都好理解,重试的机制可能受不同的环境和配置影响,可能会很长,重试次数也有限制。

我们简单描述一下整体的过程:
1、Server通过Socket、bind、listen等方法,进入等待连接的状态
2、Client发送SYN给Server
3、Server接收到客户端发送的SYN请求之后进入SYN-RCVD状态
4、Server发送SYN+ACK给Client
5、Clinet接收到SYN+ACK,发送ACK给Server,进入可以传输的连接状态
6、Server收到ACK,进入可以传输数据的连接状态

四次挥手

我们又回到上面隔门相望的例子中。交流是双方都在表达自己的想法。那么需要双方都要说我没话说了,这个时候才能进入断开状态。A对B说,我没话了,B回我知道了。B对A说我没话了,A回我知道了。整体的过程简单描述就是这样。我们进入示意图:

用我们的Server和Client替换之后如下:

有一些需要注意的事项:
主动关闭的一方发送FIN,可能是Server端,也可能是Client端。由于Server和Client都可能主动断开,我们就以主动方和被动方表示。

整体过程的描述:

1、主动方发起FIN给被动方,自己会进入到FIN—WAIT状态
2、被动方接收到FIN之后,发送ACK给主动方,进入CLOSE-WAIT状态
3、主动方收到ACK之后进入FIN-WAIT2状态,等待被动方的关闭指令
4、被动方发送FIN给主动方,同时进入LAST-ACK状态
5、主动方接收到被动方的FIN会发送ACK给主动方,同时进入TIME-WAIT
6、被动方接受到ACK之后会进入CLOSED状态。

由于大家再工作中会经常看到TIME-WAIT,下个章节我们会重点讲一下TIME-WAIT这个状态。

(有谁知道图片怎么缩小,麻烦和我说一下,排版很难受)

图解tcp的三次握手和四次挥手

文章目录TCP的三次握手与四次挥手三次握手四次挥手其中细节三次握手为什么要有最后一次ACK?四次挥手为什么需要四次挥手?TCP的三次握手与四次挥手三次握手三次握手过程(1)客户端发送一个SYN0给服务器ÿ... 查看详情

图解tcp的三次握手和四次挥手

文章目录TCP的三次握手与四次挥手三次握手四次挥手其中细节三次握手为什么要有最后一次ACK?四次挥手为什么需要四次挥手?TCP的三次握手与四次挥手三次握手三次握手过程(1)客户端发送一个SYN0给服务器ÿ... 查看详情

揭秘——tcp的三次握手和四次挥手

...言本文以博主在某次前端面试中被问到“什么是TCP协议中的三次握手和四次挥手?”为契机,经过整理教材、百度百科以及他人博客,再结合博主自身的理解,尽可能的以通俗易懂的语言来解释TCP协议中的三次握手和四次挥手的... 查看详情

tcp协议的三次握手和四次挥手

TCP协议的三次握手和四次挥手一.过程总览  建立TCP连接需要三次握手,而断开连接则需要四次挥手,整个过程如下图所示:二.报文细节2.1建立连接的三次握手报文细节  首先Client端发送连接请求报文,Server段接受连接后回... 查看详情

tcp协议中的三次握手和四次挥手(图解)

三次握手   四次挥手  查看详情

tcp协议tcp的三次握手和四次挥手

文章目录前言TCP连接的三个阶段TCP数据报介绍TCP三次握手(Three-wayHandshake)三次握手的过程握手过程说明为什么需要三次?两次握手会发生什么问题?数据传输TCP四次挥手四次挥手的过程挥手过程说明握手需要三次,为... 查看详情

tcp协议tcp的三次握手和四次挥手

文章目录前言TCP连接的三个阶段TCP数据报介绍TCP三次握手(Three-wayHandshake)三次握手的过程握手过程说明为什么需要三次?两次握手会发生什么问题?数据传输TCP四次挥手四次挥手的过程挥手过程说明握手需要三次,为... 查看详情

tcp协议的三次握手和四次挥手

TCP协议的三次握手和四次挥手我们知道,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,需要三次握手建立连接,而终止一个连接要经过四次挥手。三次握手第一次握手:客户端申请连接(SYN=1),发送seq=x的数据包,等... 查看详情

tcp的三次握手和四次挥手

TCP(TransmissionControlProtocol) 传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP在传输之前会进行三次沟通,一般称为“三次握手”(Three-WayHandshake),传完数据断开的时候要进行四次沟通,一般... 查看详情

tcp的三次握手和四次挥手

...向服务端请求数据的过程中,如果是TCP协议,则需经历TCP的三次握手和四次挥手,其中具体的过程如下:  三次握手    这个过程其实就是确认对方的收发功能是否都正常的功能,形象表示如下:    这就好比我们在... 查看详情

tcp协议中的三次握手和四次挥手

 转自:   http://blog.csdn.net/whuslei/article/details/6667471/  建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:  查看详情

tcp的三次握手和四次挥手

...特点或者说目的就是建立可靠的双工通信。也就是说所谓的三次握手和四次挥手都是为了这个目标服务的。1.1.1三次握手主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK... 查看详情

tcp的三次握手和四次挥手

TCP建立连接三次握手和释放连接四次握手  本文转载于:http://blog.csdn.net/guyuealian/article/details/52535294    在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单... 查看详情

tcp的三次握手和四次挥手

详情参考:https://www.cnblogs.com/Jessy/p/3535612.html位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequencenumber(顺序号码)Acknowledgenumber(确认号码)& 查看详情

tcp的三次握手和四次挥手

...,那要怎么样进行礼貌的离开呢。这就引起了我们对于tcp的三次握手和四次挥手的概念了。TCP三次握手正常来说如果A找B,B一般都会在门后等着(需要先Listen),当然也可能不 查看详情

tcp协议的三次握手和四次挥手机制

核心知识点:1.三次握手:seq和acknumber2.四次挥手:FIN和随机数 一、TCP/IP协议TCP/IP协议(Transmissioncontrolprotool/Internetprotool)叫做传输控制/网际协议,又叫做网络通讯协议。这个协议是Internet国际互联网络的基础,TCP/IP协议是网... 查看详情

tcp三次握手四次挥手

TCP的三次握手(建立连接)和四次挥手(关闭连接):http://blog.csdn.net/whuslei/article/details/6667471/TCP协议中的三次握手和四次挥手(图解):http://www.cnblogs.com/Jessy/p/3535612.html 查看详情

关于tcp/ip的三次握手和四次挥手解释

TCP协议三次握手过程分析TCP(TransmissionControlProtocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH... 查看详情