• 首先是三次握手和四次挥手相关术语的基础概念:
    概念摘自https://blog.csdn.net/qq_38950316/article/details/81087809
   序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。

相关术语的全称(很助于理解):
SYN:Synchronize Sequence Numbers
ACK:Acknowledge Character
FIN:Finished

  • 三次握手的图例展示(来自百科)

    完整的解释可以参考百科:https://baike.baidu.com/item/%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B
    以下是我个人对于这个三次握手的理解:
    第一次是由客户端发送一个SYN序列号给服务器:作用是告诉服务器,我要开始连你了,间接的也证明的客户端能发送消息的能力。
    第二次是服务端收到客户端发送的SYN之后发送SYN和ACK包给客户端,即服务端告诉客户端,我收到你的消息了,然后我也可以发送东西给你,就是说明服务端收发自如。
    第三次是客户端收到SYN和ACK之后,发送一个ACK应答消息给服务端,告诉服务端我也能收东西。

  • 为什么需要三次握手呢?
    简单的来说,三次握手就能证明服务端和客户端收发自如的能力,因为两个都得知道对方既能收东西,也能发东西的能力,那么,最短的握手次数,就是三次最少。

  • 四次挥手的图例展示(来自百科)

    简单的理解如下:
    注释:默认情况下,主动方为客户端,被动方为服务器端

  • 第一次就是客户端发送FIN和ACK给服务端,告诉服务端,它要关闭了,然后客户端就停止继续发送消息。

  • 第二次是服务端收到FIN和ACK,然后发送ACK给客户端,告诉客户端“ok,我知道要关闭了”

  • 第三次是服务端剩余的东西传完之后,发送FIN给客户端,就是类似于告诉客户端“好了,我这里已经全部解决了”

  • 第四次是客户端收到关闭消息了,然后发送ACK给服务端,就是告诉服务端,好了,你可以关了,然后客户端要等一段时间才关闭,服务端收到ACK之后就关闭,不再发送消息。

  • 为什么需要四次挥手
    因为就跟分手是一样的,是有优先顺序的,就是有一方肯定是先有这个想法的,同时间都有想法那是几率太低了,所以肯定是一方(客户端)先死心,然后提分手(第一次挥手),然后另一方(服务端)就说ok了(第二次挥手),然后告诉以方,但是大概率暂时还是念念不忘(张震岳这首念念不忘还挺好听),然后还会继续挽回,最后发现死心了,然后就说“那就这样吧”(第三次挥手),然后客户端就说好吧(第四次挥手),所以后面服务端就收到消息,然后死心,也就不回了,离开了。

比较生动的讲解,希望可以帮助理解,个人是觉得比较好理解。

四次挥手为什么最后需要等待两个时间周期
因为有可能最后一个报文会发送失败,服务器如果超时没收到的话,会重新传FIN-ACK,等待两个时间周期,是为了防止失败,就算失败了,能再次收到FIN-ACK报文,然后重新发送确认报文给服务器,保证服务器能收到。

TCP 三次握手和四次挥手个人理解相关推荐

  1. 什么是TCP三次握手和四次挥手【重点学习系列---干货十足--一文详解】

    引言 本文将会从一个爱情的故事开始,着力从什么是三次握手.为什么是三次而不是俩次或者四次.TCP关闭的过程.为什么要四次挥手.而不是三次.为什么最后是2MSL.什么是2MSL这些问题展开分析,详解,让 ...

  2. 硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

    来自:小林coding 每日一句英语学习,每天进步一点点: 前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 T ...

  3. 握手失败_拜托了,看完这篇别再问我什么是TCP三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 三次握手如何建立连接? 三次握手建立链接 从图中可以清楚的看到, ...

  4. TCP 三次握手 和 四次挥手

    概述 我们都知道 TCP 是 可靠的数据传输协议,UDP是不可靠传输,那么TCP它是怎么保证可靠传输的呢?那我们就不得不提 TCP 的三次握手和四次挥手. 三次握手 下图为三次握手的流程图 下面通过我 ...

  5. 网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手

    网络的五层划分是什么? 应用层,常见协议:HTTP.FTP 传输层,常见协议:TCP.UDP 网络层,常见协议:IP 链路层 物理层 TCP 和 UDP 的区别是什么 TCP/UDP 都属于传输层的协 ...

  6. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理

    接着上一篇文章叙述: TCP/IP连接(在互联网的通信中,永远是客户端主动连接到服务端): 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协 ...

  7. 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手

    转自即时通讯网:http://www.52im.net/ 1.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道"三次"和&quo ...

  8. 计算机网络学习笔记(七)——传输层、TCP三次握手、四次挥手、TCP流量控制、大总结

    文章目录 前言 概念 一.传输层概述 二.传输层问题 三.端到端寻址 四.TCP三次握手和四次挥手 (一)三次握手建立连接 (二)四次挥手拆除连接 五.带拥塞的TCP流量控制 六.传输层实例 计网大总 ...

  9. 图解TCP三次握手和四次挥手!(简单易懂)

    哈喽:亲爱的小伙伴,首先祝大家五一快乐~ 本来打算节日 happy 一下就不发文了,但想到有些小伙伴可能因为疫情的原因没出去玩,或者劳逸结合偶尔刷刷公众号,所以今天就诈尸更新一篇干货,给大家解解闷~ ...

最新文章

  1. C语言条件语句(就做个笔记,云储存一下)
  2. 一天 用户旅程_439天的旅程改变了我的生活
  3. Javascript 获取页面高度(多种浏览器)【转】
  4. php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...
  5. 利剑无意之面试题(三)
  6. Ubuntu18.04安装VCS、Verdi、dve全套教程亲测(有成功截图)
  7. spring+springMvc+struts的SSH框架整合
  8. artTemplate/template.js模板将时间戳格式化为正常的日期
  9. 论文浅尝 | 知识图谱的不确定性衡量
  10. html的opacity标签,css中opacity是什么意思
  11. c3等待加载样式 vue_Vue.js__简易加载等待动画
  12. 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组
  13. 哈佛研发出蛇形柔性机器人,复杂地面无脚行走关键在“人工皮肤”
  14. 4.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- Kong 的基本功能
  15. ArcGIS软件操作问题及解决方法总结
  16. 计算机什么快捷键是睡眠,电脑睡眠快捷键(ctrl加哪个键是睡眠)
  17. 百度网盘下载慢,解决方法
  18. Nginx配置浏览器缓存
  19. 【历史上的今天】12 月 30 日:C++ 之父诞生;Hotmail 创始人出生;Facebook 注册破百万
  20. 视频号日引流500+精准流量6大玩法,实现微信后端转化变现丨国仁网络资讯

热门文章

  1. PreparedStatement JDBC域处理/SQl攻击
  2. C#回车切换焦点实现实例解析
  3. [CQOI2011]放棋子 题解(dp+组合数学)
  4. Java源码阅读PriorityQueue
  5. [Project Euler] 来做欧拉项目练习题吧: 题目013
  6. xml没有提示解决办法eclipse
  7. Spring -- 入门,装备集合,自动装配,分散装配,自定义编辑器
  8. 纹理窗口Qt+OpenGL之纹理贴图
  9. 数据库取图片拼接ImageUrl
  10. ENC28J60 驱动开发要点