三次握手和四次挥手

今天来聊一下事实标准协议TCP/IP中传输层里TCP协议中,主机与服务器建立连接时的三次握手,和断开连接时的四次挥手。

本博文分两部分介绍,

   一:状态详解

   二:三次握手和四次挥手状态介绍

这里总共涉及到十种状态,其实总共有十一种状态,接下来分别介绍一下它们;

一:状态详解

CLOSED:关闭—>即没有任何连接状态

LISTEN:监听状态—>服务器随时监听着,看有没有谁发来连接请求

SYN_SENT:同步发送—>客户端在第一次握手时向服务器发送请求建立连接后的状态

SYN_RECEIVED:同步接收—>服务器收到客户端的请求后,在第二次握手中回复客户端确认信息并向其发送建立连接请求后的状态(简写SYN_RCVD)

ESTABLISHED:已建立连接—>在客户端收到服务端的确认及请求信号后,进行第三次握手即立刻回复确认信息,并且双方都立即进入到已建立连接状态,准备数据传输

FIN_WAIT_1:关闭等待1—>第一次挥手中,客户端主动向服务器端发送断开连接请求后进入此状态

FIN_WAIT_2:关闭等待2—>第二次握手中,客户端收到来自服务器端发来的断开连接确认信息后,进入关闭等待2状态,等待服务器端发来断开连接请求

TIME_WAIT:时间等待—>第三次挥手中,客户端也收到服务器端发来的断开连接请求后,立即回复确认信息(第四次挥手),并进入此状态

CLOSE_WAIT:等待关闭—>第一次挥手中,服务器端收到客户端发来的断开连接请求后,回复其确认信息(第二次挥手),并进入此状态

LAST_ACK:最后确认—>第三次挥手中,服务器端将数据整理结束后,发送断开连接信号给客户端,并等待其确认信息

CLOSING:关闭中—>双方同时发送断开连接,等待对方确认(这种状态在三次握手和四次挥手里并没有表现)


:三次握手和四次挥手状态介绍

我在这里将他们分为服务器端和客户端介绍 ,如下图所示(图是自己画的,有点丑*-*,但毕竟是自己总结的,可以加深印象),第一张图是客户端的状态装换图,第二张是服务器端的状态装换图。

三次握手和四次挥手

                                                                                        图一

三次握手和四次挥手

                                                                                                           图二

红色圈住的是客户端的三次握手,黄色圈住的是四次挥手。

其实,我们可以想象一下,这就像谈恋爱一样(虽然我是单身,但大概过程还是了解的*-*),必须有一方是主动的,所以当你中意对方时,是不是要去试探一下对方是否也喜欢你呀,这时你就想用某种方式去表达,(就像是第一次握手中我们客户端主动给服务器端发信号,说我想与你建立连接,即(SYN=1),然后就进入一个SYN_SENT发送信号的状态),这时对方若对你也有意思的话是不是会给你个回应呀,(这时就像第二次握手中,服务器端收到客户端的请求信号后,若是想与他建立连接,就会给客户端一个确认信号(ACK=1即收到了它发来的请求信号)并且也给客户端一个请求连接信号(即我也想与你建立连接),然后进入SYN_RECEIVED(简写RCVD)接收状态),然后这时,你们两情相悦,是不是就可以建立正常男女朋友关系了?!!就可以明目张胆的来往了!!!(就像第三次握手中,客户端也收到了服务器发来的确认信号和建立连接请求,一看服务器端也挺乐意与它建立连接的,那就赶紧建立连接呗,就立即给服务器端一个确认信号(ACK=1),并且双方立即进入ESTABLISHED状态,开始数据传输了)。这样想想就简单了是不是,

当然关闭连接的过程也一样。我们就想象一下分手的时候(当然还是希望有情人终成眷属,可以白头偕老的,但是,总会有那么些不愉快的事情发生是不是),分手也分很多种,有一方主动提出分手另一方被动接收的、有还没说出分手就已经分开的(我的意思你懂的^-^)、还有双方都准备分手的…….太多种,但今天就讲一下,其中一方先主动分手的。我与你不愉快了,要分手了,那我就要主动给你一个分手信号“咱们不合适,分手吧”(就像第一次挥手,客户端主动向服务器端发送了断开连接信号(FIN=1分手信号),随后客户端就会进入FIN_WAIT_1关闭等待状态1,而服务器进入CLOSE_WAIT等待关闭状态),那你收到我的分手信息了,不管同不同意分手,是不是要给我一个回应啊(比如说挽留啊、那刚好我也同意分手啊之类的),你说你收到了我的分手信息,让我先屡屡(就像第二次挥手中,服务器端收到了客户端的分手信号,就给她一个回应(ACK=1),说我收到了,客户端就会进入FIN_WAIT_2关闭等待2状态),那要是你也考虑清楚了,反正想分手了,以后在一起也不开森,就开始将我们之间的帐算算(服务器回给客户端确认信号后,就开始整理数据,该发的发完,该收的收回来),省的以后因为某些东西拌嘴,分就分清楚,等你整理清楚了,那你也给我说了“好,那咱们就分手吧”(这时进入第三次挥手,服务器端也给客户端一个分手信号(FIN=1),确定也要与它断开连接,此时服务器端会进入LAST_ACK最后确认状态(即等待客户端回复)),我已经下定决心跟你分手并且已经主动提出来了,所以当听到你给我说分手后,我这边会立即给你回复“好”(第四次握手,客户端收到服务器端发来的分手信息后,立即给出一个确认信息(ACK=1),并且客户端会进入TIME_WAIT时间等待状态(时间较长),然后再进入CLOSED状态,服务器端收到客户端的确认后,立即进入CLOSED状态,随机进入LISTEN监听状态,随时等待其他主机访问),分手结束,好聚好散。

原创文章,作者:M.Sun,如若转载,请注明出处:http://www.178linux.com/85837

(1)
M.SunM.Sun
上一篇 2017-09-01
下一篇 2017-09-02

相关推荐

  • IO重定向

    I/O(IN Out)重定向(本来位置被改到别处位置):            指的改变默认输入输出的位置    程序:数据+指令  IO          可用于输入的设备:文件     &nbsp…

    Linux干货 2017-04-03
  • MAN手册、Linux文件系统等介绍

    适合人群:Linux初学者 主要内容: Man手册使用介绍        FHS文件系统介绍        Linux文件类型介绍        随堂笔记 操作环境:CentOs 6.8 ☆ MAN 手册介绍 man手册…

    Linux干货 2016-10-18
  • Centos7 服务器部署ssh证书授权登录

    在当前服务器生成密钥对 ssh-keygen –t rsa –P ” ssh-keygen –t rsa –P ''[root@localhost ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key …

    Linux干货 2016-12-05
  • 马哥教育网络版25期+第一周作业

    1、描述计算机的组成及其功能 计算机是由CPU,控制器,RAM,输入设备,输出设备组成的 2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 现如今主流的LINUX发行版系列主要有: Debian,Slackware,Redhat,这些发行版都是基于GUNLinux开发的,不过是由不同的组织或团体开发并发行的。 3、描述Linux的哲学思想,…

    Linux干货 2016-12-05
  • 磁盘管理

    设备文件 I/O Ports: I/O 设备地址 一切皆文件: open(), read(), write(), close() 设备类型: 块设备:block ,存取单位“块”,磁盘 [root@localhost ~]# ll /dev/ brw-rw—-. 1 root disk 253, 0 Apr 29 03:53 dm-0 块设备 brw-r…

    2017-04-28
  • 做有高薪有逼格的运维工程师,不会Linux是没有前途的!

    作为互联网的幕后英雄,运维工程师长期隐匿在大众认知范围之外,关于运维的讨论仍旧是一片无人涉足的荒漠。在某知名行业研究调查结果中,非互联网从业者对于运维相关问题的回复有三个高频词汇是:不知道、没听过、网管。当调查人员告诉他们科幻电影中展示黑客高超技巧时的命令行界面正是大多数运维工程师每日工作环境时,他们发出极其一致的惊叹。 相对于普罗大众的一无所知,技术圈对运…

    2017-09-08