这是一个很有意思的问题~

首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。 单工资只能A给B发,B不能给A发; 或者是只能B给A发,不能A给B发。

 我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手

  • 第一次握手: A给B打电话说,你可以听到我说话吗?
  • 第二次握手: B收到了A的信息,然后对A说: 我可以听得到你说话啊,你能听得到我说话吗?
  • 第三次握手: A收到了B的信息,然后说可以的,我要给你发信息啦!

在三次握手之后,A和B都能确定这么一件事: 我说的话,你能听到; 你说的话,我也能听到。 这样,就可以开始正常通信了。

  注意: HTTP是基于TCP协议的,所以每次都是客户端发送请求,服务器应答,但是TCP还可以给其他应用层提供服务,即可能A、B在建立链接之后,谁都可能先开始通信。

  如果两次,那么B无法确定B的信息A是否能收到,所以如果B先说话,可能后面的A都收不到,会出现问题 。

  如果四次,那么就造成了浪费,因为在三次结束之后,就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息。

那么三次握手在正式情况下都做了什么呢?

第一次握手:

客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里

第二次握手

服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

第三次握手

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1

即SYN就是询问: 你能听得到吗? ACK就是回到: 我能听得到啊。

TCP四次挥手的过程:

四次挥手:
A:“喂,我不说了 (FIN)。”A->FIN_WAIT1

B:“我知道了(ACK)。等下,上一句还没说完。Balabala…..(传输数据)”B->CLOSE_WAIT | A->FIN_WAIT2

B:”好了,说完了,我也不说了(FIN)。”B->LAST_ACK

A:”我知道了(ACK)。”A->TIME_WAIT | B->CLOSED

A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSED

这样,通过四次挥手,可以把该说的话都说完,并且A和B都知道自己没话说了,对方也没话说了,然后就挂掉电话(断开链接)了 。

为什么只有三次挥手_TCP为什么是三次握手,为什么不是两次或四次,TCP四次挥手...相关推荐

  1. 为什么只有三次挥手_TCP为什么要三次握手?为什么要有四次挥手?

    TCP三次握手的过程 TCP连接释放的过程: 1.为什么两次就建立连接还要三次握手呢?这主要是为了防止已失效的连接请求报文又突然传递服务器. 所谓"防止已失效的连接请求报文又突然传递服务器. ...

  2. 计算机网络之TCP四次挥手

    文章目录 计算机网络之TCP四次握手 1.TCP四次挥手过程 2.任何一方执行close()操作即可产生挥手操作为什么要等待呢 3.说说 TCP 四次挥手过程 4.TCP挥手为什么需要四次呢 5. T ...

  3. 深入浅出TCP四次挥手 (多图详解)

    文章目录 前言 1.TCP的连接释放 2.TCP通过"四报文挥手"来释放连接 3.四次挥手图文详解 4.四次挥手文字总结 5.相关面试问题 前言 TCP三次握手和四次挥手是面试题的 ...

  4. tcp 四次挥手_TCP三次握手和四次挥手

    名词解释 SYN:发起一个新连接 ACK:确认序号有效 FIN:释放一个连接 1,TCP三次握手 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认: 第 ...

  5. tcp 三次握手与四次挥手_TCP三次握手与四次挥手详解

    TCP报文结构   源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号. 序号:占4个字节.序号使用mod运算.TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号 ...

  6. tcp 四次挥手_TCP三次握手和四次挥手通俗理解

    一.TCP报文格式 在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连 接.TCP在发送数据前必 ...

  7. 简述tcp协议三报文握手过程_TCP协议的3次握手与4次挥手过程详解

    前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服 ...

  8. 经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

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

  9. (三)深入浅出TCPIP之再识TCP,理解TCP四次挥手(上)

    目录 1.TCP四次挥手过程 2.挥手连环发问 专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三) ...

最新文章

  1. Block变量的的用法,使你的程序看起来清晰明了!
  2. 装在u盘的linux
  3. Winform下载文件
  4. 根据类名遍历数组的三种方法
  5. 2018NOIP普及组初赛解析
  6. 一次惊险的跳槽面试经历(阿里/美团/头条/网易/有赞...)
  7. pytorch 图像分割的交并比_「通知」《深度学习之图像识别》再版工作启动,欢迎指导和提建议...
  8. artdialog4.1.7 中父页面给子页面传值
  9. 开源 画图_[软件使用05] 快速使用 Deeptools 对 ChIP-seq 数据画图!
  10. 单片机实验用c语言编写计算器,单片机实验报告计算器.doc
  11. 手机群控系统电脑/手机硬件配置相关测试参数
  12. 怎么用python编写个apk_python自动安装apk文件
  13. 大二狗卸任社团职位以及对专业发展方向的思考与总结
  14. matlab清除坐标轴,matlab 使用技巧之设置坐标轴
  15. BIDI SFP光模块和普通SFP光模块的介绍
  16. 子网掩码计算题与解析
  17. GRU 详解+实战(生成汪峰感觉的歌词)
  18. 计算机读光盘出现乱码,解决刻录音乐光盘mp3出现中文乱码的方法
  19. 用手机编程和用电脑编程有什么区别?
  20. 【愚公系列】2022年04月 微信小程序-实时音视频录制

热门文章

  1. 红黑树(二)之 C语言的实现
  2. MySQL中的用户管理
  3. jQuery的同胞遍历
  4. IntelliJ IDEA 超实用技巧分享,不能再全了!
  5. 终于当了回up主,来白嫖我历时半年总结的Java思维导图吧!!!
  6. gitlab使用方法
  7. windows ping 不通虚拟机
  8. Oracle数据库之数据处理
  9. 04-JDBC连接MySQL数据库【修改数据】
  10. python3.8.5是python3吗_科学网-Ubuntu16.04安装Python3.8.5问题及解决方法-陈超的博文