码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【浅学Java】三次握手 / 四次挥手


    三次握手 / 四次挥手

    • 三次握手
      • 1. 三次握手的场景
      • 2. 三次握手的目的
        • 2.1 投石问路
        • 2.2 协调参数
      • 3. 四次握手行不行?
      • 4. 两次握手行不行?
      • 5. 三次握手时的状态变换
    • 四次挥手
      • 1. 四次挥手的场景
      • 2. 中间的ACK 和 FIN为什么不合并?
      • 3. 四次挥手时的状态转换
      • 4. TIME_WAIT如何处理最后一个ACK丢包?
      • 5. 丢包问题
      • 6. 四次挥手能变成三次吗?

    三次握手

    1. 三次握手的场景

    运用传输层的TCP协议时,在建立连接阶段,就得进行三次握手来完成连接的建立。
    在这里插入图片描述

    2. 三次握手的目的

    2.1 投石问路

    通过三次握手可以来确定双方的传输是否通畅。
    尤其是确认双方的发送和接收能力是否正常。

    在这里插入图片描述

    2.2 协调参数

    通过三次握手,可以让双方协调选择一些参数,例如:序号是从几开始。

    3. 四次握手行不行?

    在这里插入图片描述

    四次握手理论上是可以的,但是实际上:当A的SYN到达B的时候,B的内核会同时做出ACK和SYN的响应。如果非要分成两步,就会使传输的效率变低。

    4. 两次握手行不行?

    在这里插入图片描述
    很显然:两次握手的话,B将无法知道B的发送能力和A的接收能力是否正常。

    5. 三次握手时的状态变换

    在这里插入图片描述

    四次挥手

    1. 四次挥手的场景

    运用传输层的TCP协议时,在断开连接阶段,就得进行三次握手来完成连接的建立。
    在这里插入图片描述

    2. 中间的ACK 和 FIN为什么不合并?

    在这里插入图片描述

    1. 当B接收到A发送过来得FIN时,内核会立即返回一个ACK,表示收到。
    2. 而B向A发送FIN是由用户代码块控制的,代码中出现socket.close这样的操作时,才会触发FIN。这就可能导致一种特殊情况的发生:B的代码出现问题,导致一直不能close,即一直不能向A发送FIN。

    3. 四次挥手时的状态转换

    在这里插入图片描述

    4. TIME_WAIT如何处理最后一个ACK丢包?

    在这里插入图片描述
    此时,如果最后一个ACK丢了,此时就无法进行重传了!

    设计TIME_WAIT就是为了等待一段时间,以确保最后一个ACK成功发送。

    5. 丢包问题

    在这里插入图片描述

    6. 四次挥手能变成三次吗?

    理论上是可以的。

    虽然FIN 和 ACK 的触发时机不同,但是在延时应答和捎带应答的情况下,还是可以合并在一起的。

  • 相关阅读:
    upload-labs1-17思路
    《统计学习方法》 第二十一章 PageRank算法
    依概率收敛和依分布收敛(附一道例题)
    计算机毕设(附源码)JAVA-SSM连锁便民超市前端系统
    Arrays.asList()方法:隐患与解决之道
    Ansible优化大全
    查看和分析 IIS 日志文件以增强 Web 服务器安全性
    高通Android10 移植exFat格式
    Android可滑动的分时图以及常用动画
    Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)
  • 原文地址:https://blog.csdn.net/qq_52276036/article/details/126377593
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号