美文网首页Android开发Android开发Android技术知识
计算机网络:图文解析TCP的三次握手、四次挥手

计算机网络:图文解析TCP的三次握手、四次挥手

作者: Carson带你学安卓 | 来源:发表于2021-08-24 11:10 被阅读0次

    前言

    • 计算机网络基础中,TCP协议建立连接 & 释放连接时的三次握手、四次挥手十分重要
    • 今天carson将图文解析TCP链接的三次握手 & 四次挥手,包学包会包易懂!

    1. TCP建立连接:三次握手

    1.1 示意图

    示意图

    1.2 流程解析

    示意图

    成功进行TCP的三次握手后,就建立起一条TCP连接,即可传送应用层数据。需要注意的是:

    1. TCP提供的是全双工通信,故通信双方的应用进程在任何时候都能发送数据
    2. 三次握手期间,任何1次未收到对面的回复,则都会重发

    1.3 特别说明:为什么TCP建立连接需三次握手?

    • 结论
      防止服务器端因接收了早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁、浪费资源

    • 具体描述

    具体描述

    SYN洪泛攻击:

    • 从上可看出:服务端的TCP资源分配时刻 = 完成第二次握手时;而客户端的TCP资源分配时刻 = 完成第三次握手时
    • 这就使得服务器易于受到SYN洪泛攻击,即同时多个客户端发起连接请求,从而需进行多个请求的TCP连接资源分配

    2. TCP释放连接:四次挥手

    2.1 示意图

    示意图

    2.2 流程解析

    示意图

    2.3 特别说明

    说明1:为什么TCP释放连接需四次挥手?

    • 结论
      为了保证通信双方都能通知对方 需释放 & 断开连接

    即释放连接后,都无法接收 / 发送消息给对方

    • 具体描述
    示意图

    (延伸疑问)说明2:为什么客户端关闭连接前要等待2MSL时间?

    1. TIME - WAIT 状态的作用是什么;
    2. MSL = 最长报文段寿命(Maximum Segment Lifetime
    • 原因1:为了保证客户端发送的最后1个连接释放确认报文 能到达服务器,从而使得服务器能正常释放连接
    示意图
    • 原因2:防止 上文提到的早已失效的连接请求报文 出现在本连接中
      客户端发送了最后1个连接释放请求确认报文后,再经过2MSL时间,则可使本连接持续时间内所产生的所有报文段都从网络中消失。

    即 在下1个新的连接中就不会出现早已失效的连接请求报文

    3. 总结

    • 本文全面讲解了 计算机网络中TCP协议最重要的三次握手 & 四次挥手
    • 下面我将继续讲解 计算机网络的基础知识,感兴趣的同学可以继续关注本人简书:Carson_Ho的简书

    请点赞!因为你的鼓励是我写作的最大动力!

    相关文章阅读
    Android开发:最全面、最易懂的Android屏幕适配解决方案
    Android事件分发机制详解:史上最全面、最易懂
    Android开发:史上最全的Android消息推送解决方案
    Android开发:最全面、最易懂的Webview详解
    Android开发:JSON简介及最全面解析方法!
    Android四大组件:Service服务史上最全面解析
    Android四大组件:BroadcastReceiver史上最全面解析


    欢迎关注Carson_Ho的简书!

    不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度

    相关文章

      网友评论

        本文标题:计算机网络:图文解析TCP的三次握手、四次挥手

        本文链接:https://www.haomeiwen.com/subject/xvicbctx.html