三次握手与四次挥手

1.三次握手

所谓的“三次握手”:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。

第一次
第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据

通俗理解
客户端发起连接请求(第一次连接),请求在路上可能存在丢失的风险, 所以当请求到了服务器后如果服务器同意建立连接会给客户端一个回信(第二次连接),告诉它:我已经收到请求,可以连接。 但是回信也存在一个问题,那就是回信能不能到客户端?它需要客户端给他一个回信说我已经收到批准通知了, 如果客户端一直不回复的话意味着客户端没有收到批准通知。 因此客户端一收到批准通知就立马回复(第三次握手):OK老铁我收到你的批准通知了。至此,三次握手结束。

2.四次挥手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

tcp是全双工通信,服务端和客服端都能发送和接收数据。tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。

通俗理解
第1次挥手由客户端向服务端发起,服务端收到信息后就能确定客户端已经停止发送数据。
第2次挥手由服务端向客户端发起,客户端收到消息后就能确定服务端已经知道客户端不会再发送数据。
第3次握手由服务端向客户端发起,客户端收到消息后就能确定服务端已经停止发送数据。
第4次挥手由客户端向服务端发起,服务端收到信息后就能确定客户端已经知道服务端不会再发送数据。
为什么不是3次挥手?在客服端第1次挥手时,服务端可能还在发送数据。所以第2次挥手和第3次挥手不能合并。

三次握手与四次挥手简介相关推荐

  1. 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”

    作者 | AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念 ...

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

    作者 |  AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概 ...

  3. 解析TCP连接之“三次握手”和“四次挥手”

    葡萄美酒夜光杯,欲饮琵琶马上催. 醉卧沙场君莫笑,古来征战几人回?----唐 · 王翰 · <凉州词> 前言 不管是面试别人还是被别人面试,有很大的可能会被问到TCP的"三次握手 ...

  4. TCP的三次握手和四次挥手及常见面试题

    一.前言 今天上掘金查看热门文章,发现一篇好文 ★前端 100 问:能搞懂 80% 的请把简历给我 ★ ,此文包含100个前端面试问题,仔细阅读完所有题目后,顿感身中数刀无法呼吸,留下了没有技术的泪水 ...

  5. 三次握手和四次挥手详解

    详解 TCP 连接的" 三次握手 "与" 四次挥手 " *TCP connection* 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP co ...

  6. 网络编程知识预备(2) —— 三次握手与四次挥手、半连接状态、2MSL

    参考:网络编程知识预备(2) --三次握手与四次挥手.流量控制(滑动窗口).拥塞控制.半连接状态.2MSL_行稳方能走远的博客-CSDN博客 目录 一.三次握手 什么是三次握手? 三次握手图解 三次握 ...

  7. 网络协议:TCP三次握手与四次挥手

    本篇内容包括:TCP/IP 传输协议(TCP/IP 传输协议简介,IP 协议,UDP 协议,TCP 协议介绍),TCP 的三次握手.TCP 的四次挥手 以及 TCP 协议是怎么保证有效传输等内容. 一 ...

  8. TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

    TCP 协议简介 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自己的分工. (图片说明:TCP 是以太网协议和 I ...

  9. 【重难点】【计算机网络 02】TCP 和 UDP 的区别、TCP 的三次握手和四次挥手、HTTP 和 HTTPS、HTTP 各版本之间的区别、HTTP 如何实现长连接

    [重难点][计算机网络 02]TCP 和 UDP 的区别.TCP 的三次握手和四次挥手.HTTP 和 HTTPS.HTTP 各版本之间的区别.HTTP 如何实现长连接 文章目录 [重难点][计算机网络 ...

最新文章

  1. mysql高级操作_mysql数据库表的高级操作
  2. Myeclipse报错--Animation Start An internal error has occurred. java.lang.NullPointerException解决...
  3. Android之应用APN、WIFI、GPS定位小例子
  4. JqueryMobile学习之二---对话框
  5. 正确评估SQL数据库性能,你必须知道的原理和方法!
  6. EasyUI组件使用
  7. centos一键安装包无法创建vhost
  8. 区块链应用如何实现资金盘分红
  9. 神经网络-神经元模型、Hebb学习
  10. Auto Flow Control (AFC) 自动流控制 与 FIFO
  11. apache OpenNLP简要介绍
  12. 第三阶段应用层——1.7 数码相册—电子书(2)—编写通用的Makefile
  13. 墨菲定律等十个比较重要的定律和法则
  14. python def函数调用_Python - def 函数
  15. org.apache.taglibs.standard.tlv.JstlXmlTLV scanned from multiple locations
  16. 软件复用及构件、C/S与B/S混合模型及实战项目技术简述
  17. Selenium学习——QQ空间点赞好友说说
  18. 不讲武德!小伙陪大爷下棋靠手机开挂艰难获胜:我选的是天人合一难度
  19. 大学生如何在竞争激烈的就业市场中脱颖而出
  20. socks5进程代理模拟器单窗口单IP软件分享及使用教程

热门文章

  1. 云原生的 CICD 框架:Tekton
  2. Python网络爬虫的概念和基本原理
  3. 毕设 深度学习图像风格迁移
  4. 如何在共享中添加计算机,如何在网上邻居中添加共享文件夹
  5. MATLAB08:符号运算
  6. python-绘图与可视化
  7. 什么叫幂等?如何实现幂等性?
  8. Android 的 Activity 教程
  9. 安装时间大于30秒_30个住宅室内消防设置检验要点!硬核干货!
  10. 【计算机网络】计算机网络核心知识点