简述TCP的三次握手与四次挥手

A表示客户client,即主动发起连接的应用程序;B表示服务器,即被动等待连接建立的应用进程。

TCP建立连接三报文握手,也可以是四报文握手

总流程可以简化为:A向B发送连接请求,B向A确认,A再跟B确认。

其中,第二次握手可以拆成两个报文段,就成了四报文握手了。

为什么需要第三次确认呢?

为了防止“已失效的连接请求报文段”突然又传给B,比如A向B发送连接请求的报文段时,在某些网络结点滞留了,导致没有按照正常时间发送给B。A因此重传了一个连接请求,后续正常进行连接与释放。等到连接释放后的某一个时间点,前面没有正常传输的“已失效的连接请求报文段”到达了B,B收到后向A发送了确认。此时如果A不用进行第三次确认,那么就直接建立了运输连接,并一直等待A发送数据,那么此时B的资源就白白浪费了。

TCP释放连接:A向B发送释放连接(通信双方都可以发,即B也可以发送释放连接报文段),并停止发送数据;B向A发送确认,进入半关闭状态,B可以继续向A发送未发送完的数据,A仍可以接收;直到B没有数据要发送了,再发送给A一个最后确认;A向B发送确认后,等待2MSL时间,再释放连接。B释放的时间比A要稍微早。

计算机网络第七版中也把上面释放连接的过程叫做四报文握手。我们一般叫做四次挥手

相关推荐

  1. 简述TCP握手挥手

    2024-03-25 11:30:05       40 阅读
  2. TCP握手挥手

    2024-03-25 11:30:05       39 阅读
  3. tcp握手挥手

    2024-03-25 11:30:05       38 阅读
  4. tcp握手挥手

    2024-03-25 11:30:05       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-25 11:30:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-25 11:30:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-25 11:30:05       87 阅读
  4. Python语言-面向对象

    2024-03-25 11:30:05       96 阅读

热门阅读

  1. Linux ~ 查看日志的常用命令总结

    2024-03-25 11:30:05       33 阅读
  2. npm常用命令

    2024-03-25 11:30:05       35 阅读
  3. 智能小程序开发 —— P2P SDK 源码介绍(一)

    2024-03-25 11:30:05       42 阅读
  4. 怎么配置Dubbo的容错机制?

    2024-03-25 11:30:05       31 阅读
  5. 4k stars! 如何实现按拼音首字母查询证券代码?

    2024-03-25 11:30:05       39 阅读
  6. 鸿蒙开发的入门

    2024-03-25 11:30:05       35 阅读
  7. 3527. 旋转矩阵 考研上机复试真题 暴力模拟

    2024-03-25 11:30:05       39 阅读
  8. 函数封装冒泡排序

    2024-03-25 11:30:05       34 阅读
  9. sql中如何添加数据

    2024-03-25 11:30:05       40 阅读
  10. FPGA时钟资源详解——时钟Buffer的选择

    2024-03-25 11:30:05       39 阅读