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


    🍎个人博客:个人主页

    🏆个人专栏:JAVA

    ⛳️  功不唐捐,玉汝于成


    目录

    前言

    正文

    三次握手(Connection Establishment)

    四次挥手(Connection Termination)

    结语

     我的其他博客


    前言

    TCP的三次握手和四次挥手是保障网络通信可靠性的关键步骤。通过三次握手,建立了双方的连接,确保双方能够准备好发送和接收数据;通过四次挥手,优雅地关闭了连接,避免数据丢失和不必要的资源浪费。理解这些握手和挥手过程对于网络通信的正确性和可靠性至关重要。

    正文

    TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层协议。在TCP连接的建立和断开过程中,使用了三次握手和四次挥手的机制。

    三次握手(Connection Establishment)
    1. 第一次握手(SYN):

      • 客户端发送一个TCP报文,其中设置SYN标志位为1,表示请求建立连接。
      • 客户端选择一个初始序列号(ISN),用来标识报文段的顺序。
    2. 第二次握手(SYN + ACK):

      • 服务器收到客户端的SYN后,发送一个带有SYN和ACK标志位的报文作为响应。
      • 服务器也选择一个初始序列号(ISN),并将其加1,然后将客户端的ISN作为ACK的确认号。
    3. 第三次握手(ACK):

      • 客户端收到服务器的SYN + ACK后,发送一个带有ACK标志位的报文。
      • 客户端的序列号加1,而确认号为服务器的序列号加1,表示连接建立。

    此时,TCP连接已经建立,双方可以开始进行数据传输。

    四次挥手(Connection Termination)
    1. 第一次挥手(FIN):

      • 当客户端或服务器决定要断开连接时,发送一个带有FIN标志位的报文,表示不再发送数据。
    2. 第二次挥手(ACK):

      • 接收到FIN的一方发送一个带有ACK标志位的报文,确认收到断开请求。
    3. 第三次挥手(FIN):

      • 如果接收到FIN的一方也希望断开连接,它也发送一个带有FIN标志位的报文。
    4. 第四次挥手(ACK):

      • 接收到第三次挥手的一方发送一个带有ACK标志位的报文,表示确认收到对方的断开请求。

     

    经过这四个步骤,双方的连接就被断开了。三次握手和四次挥手的过程是为了确保数据的可靠传输和连接的正常断开。在挥手过程中,每个方向的关闭都需要经过两个阶段,即发送方发送FIN和接收方发送ACK。

    结语

    在网络通信中,TCP的三次握手和四次挥手是保证数据传输可靠性和网络连接资源的合理利用的基础。通过深入理解这些过程,我们能更好地设计和管理网络通信,确保数据安全、稳定和高效传输。

     我的其他博客

    【MySQL】数据库规范化的三大法则 — 一探范式设计原则-CSDN博客

    【JAVA】线程的run()和start()有什么区别?-CSDN博客

    【日常聊聊】程序员必备的面试技巧:如何在面试战场上脱颖而出-CSDN博客

    【JAVA】Java8开始ConcurrentHashMap,为什么舍弃分段锁-CSDN博客

    【JAVA】怎么确保一个集合不能被修改-CSDN博客

    【Web开发】会话管理与无 Cookie 环境下的实现策略-CSDN博客

    【Mybatis】Mybatis如何防止sql注入-CSDN博客

    【软件工程】航行敏捷之路:深度解析Scrum框架的精髓-CSDN博客

    【Spring】理解IoC与AOP:构建灵活而模块化的软件架构-CSDN博客

  • 相关阅读:
    CentOS 7 防火墙
    2022 Java最新面试题合集
    【医学影像处理】基于MRIcron的dcm2nii批量dcm转nii格式
    天下苦定制久矣,平台化建设到底难在哪里?
    使用 zk-SNARKs 的可编程零知识证明:第 3 部分
    IO多路转接
    计算机组成原理 — PCI-E 总线
    【JAVA项目实战】【图书管理系统】用户更新功能【Servlet】+【Ajax】+【Mysql】
    LeetCode·每日一题·654.最大二叉树·递归·单调栈
    Spring Cloud应用- Eureka原理、搭建
  • 原文地址:https://blog.csdn.net/AliceNo/article/details/136247090
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号