学过计算机网络的同学都知道TCP协议是计算机网络课程里面最复杂的协议之一,还没有通信就要搞个什么三次握手,断开还要什么四次分手,中间还要什么流量控制啦,拥塞控制,滑动窗口什么的,初学者看了就会头晕。

通信基本流程

我们都知道TCP协议是面向连接的协议,可以保证数据不丢失,不重复,不乱序的到达接收方。TCP的通信过程大概是下图所示。

上图为TCP整个完整的通信过程,首先经过三次握手建立连接(绿色部分),连接建立后可以正常通信(蓝色部分),通信完毕需要四次挥手断开连接(红色部分)。

三次握手

三次握手可以这么理解:

TCP客户端是男孩子,TCP服务器是女孩子,男孩子要追女孩子,首先要建立恋爱关系。需要一个建立恋爱关系的过程。

男孩:我们可以恋爱吗?(客户端请求服务器建立连接)

女孩:你想追我?想清楚了!(服务器要求客户端确认连接)

男孩:没错,你就是我的梦中情人!(客户端确认连接)

三次握手确立了TCP服务器和客户端的“恋爱关系”。为什么需要三次握手,两次握手不行吗?从通信角度看,对于客户端两次就够了,但对于服务器不够,因为,两次握手服务器仅仅知道客户端和服务器之间的信道是通的,但服务器和客户端之间还未知,所以需要收到客户端发来的确认消息双方才能确认双方的消息通路都是ok的。

四次挥手

对于连接的断开需要四次挥手,可以理解为男孩和女孩要分手,需要经过一番如下商量。

男孩:我们不合适,我们分手吧。(客户端已经没有数据可以传输)

女孩:什么?这么快就分手了,不能这么快完,我要给你算总账!(服务器这端还有未发送完的数据)

女孩给男孩算账中……(没有发送完的数据继续传输)

女孩:算好了,分手!(服务器这端数据传输完毕)

男孩:好的,我们从今后还是朋友……(等待Time_Wait时间到,恢复单身)

这里有个注意的点是,客户端在收到服务器发送的数据传输完毕的消息后(第三次挥手),不能立即关闭连接(恢复单身,寻找新欢),必须等待2MSL时间才能关闭,因为这期间最后一次挥手服务器未必能收到,如果没有收到,服务器会重新发送第三次挥手的消息,这时候如果客户端关闭,将无法回应第四次挥手消息,使得四次挥手过程无法完成。

转载于:https://www.cnblogs.com/linuxprobe-sarah/p/11155326.html

TCP三次握手四次挥手介绍相关推荐

  1. TCP三次握手四次挥手简介

    TCP三次握手四次挥手简介 图解三次握手.四次挥手 建立连接:三次握手 关闭连接:四次挥手 上图传递过程中出现的几个字符(SYN,ACK,FIN,seq,ack)各代表什么意思 SYN,ACK,FIN ...

  2. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

  3. [计算机网络][总结][常见问题][TCP][三次握手][四次挥手]

    TCP三次握手 四次挥手 三次握手 目的:保证传输的可靠性,为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误.主要防止资源的浪费. 具体过程:当客户端发出第一个连接请求报文段时并没有丢 ...

  4. TCP三次握手四次挥手(图解)

    <TCP-IP协议栈概略图与TCP三次握手四次挥手> 目录 1 TCP过程详解 1.1 三次握手 1.2 四次挥手 2 使用tcpdump分析三次握手的过程 2.1 tcpdump抓包和t ...

  5. TCP三次握手四次挥手过程及其中的状态量

    网上看到过一些有关TCP三次握手四次挥手的过程,觉得有必要总结一下了,对于了解TCP的过程还是有帮助的 1.变量含义 SYN表示建立连接, FIN表示关闭连接, ACK表示响应, PSH表示有 DAT ...

  6. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  7. TCP三次握手四次挥手详解

    TCP三次握手四次挥手 1. TCP报文格式 2. TCP连接需要解决的问题 3. 三次握手 4. 四次挥手 5. 一些补充问题 1. TCP报文格式 在了解三次握手和四次挥手之前,先知道TCP报文内 ...

  8. Wireshark验证TCP三次握手四次挥手

    本文介绍如何通过Wireshark抓包工具验证TCP的三次握手四次挥手过程. 首先本地起了一个tomcat服务器,跑了一个简单的基于SpringMVC的rest服务. 打开Wireshark,捕获指定 ...

  9. TCP三次握手四次挥手 TCP/UDP区别

    三次握手 第一次握手: 建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认:  SYN:同步序列编号(Synchronize Sequence Numbe ...

  10. TCP三次握手四次挥手(三国版)

    TCP的三次握手四次挥手 TCP的三次握手和四次挥手不管是我们自己使用还是面试都是需要掌握的,本文先将原理,然后以三国为例讲个小栗子帮助理解.先来一张图: 标志位 TCP在其协议头中使用大量的标志位或 ...

最新文章

  1. anaconda pip install torch报错,安装失败
  2. 计算机的命令函数,数学建模的常用的命令和基本函数..doc
  3. 简明 Vim 练级攻略
  4. 罗斯蒙特电磁流量计8723说明书_罗斯蒙特8732EM电磁流量计变送器如何接线!
  5. byte转换int时为何与0xff进行与运算
  6. Java进阶:BlockingQueue阻塞队列的使用
  7. 3.1.1 存储器的分类(半导体-磁芯-磁表面-光存储-ROM-RAM-永久非永久-内存-外存-Cache)
  8. CDN如何实现,关键技术是什么?
  9. java arraylist .get_Java ArrayList get()方法
  10. 九个工作谎言_书评:关于工作的九种谎言
  11. 使用cl编译器,将记事本写的c文件编译成dll和exe 步骤如下(记事本保存成.c)
  12. 11个最佳Ionic应用程序模板
  13. 元器件 - TVS二极管
  14. MAC 扩展屏,颜色描述文件
  15. Colab、矩池云、mistGPU几个云GPU使用心得
  16. CornerNet详解
  17. 【转】Java面试题合集
  18. Linux都应用在哪些领域?发展如何?
  19. [CTF]中那些脑洞大开的编码和加密
  20. qt制作一个画板_Qt 一个简易画板实现(Graphics View).pdf

热门文章

  1. 更多和最小生成树相关的问题
  2. 如何获取ezui tree 所有子节点
  3. HDOJ 3507 Print Article(DP + 斜率优化)
  4. 更轻量级的Semaphore、AutoResetEvent、ThreadPool
  5. DirectX 9 学习笔记
  6. 北语发布 | 汉语学习者文本多维标注数据集YACLC V1.0 -- 文本纠错方向
  7. 第十七届全国机器翻译大会(CCMT 2021) 征文延期通知
  8. 多标签文本分类研究进展
  9. 干货 | 你是不是希望一月入门深度学习,三月中一篇顶会?-- 关于做科研的态度和方法的一点感想...
  10. 20191202_2_识别偷税漏税人