关于TCP的三次握手流程

三次握手流程

第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段包含标志位SYN=1,序列号seg=x。第一次握手后客户端的状态为SYN-SENT。此时服务端的状态为LISTEN

第二次握手:服务端在收到客户端发来的报文后,会随机生成一个服务端的起始序列号y,然后给客户端回复一段报文,标志位SYN=1,序列号seq=y,ACK=1,确认号ack=x+1。第二次握手后服务端的状态为SYN-RCVD(SYN=1表示要和客户端建立一个连接,ACK=1表示确认序号有效)

第三次握手:客户端收到服务端发来的报文后,会再向服务端发送报文。ACK=1,序列号seq=x+1,确认号ack=y+1。客户、服务端状态变为ESTABLISTED。此时连接建立完成

为什么需要三次握手?

  • 第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常
  • 第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常
  • 第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

所以三次握手目的是保证双方都有发送和接收的能力

相关推荐

  1. 关于TCP握手流程

    2024-07-10 17:34:03       12 阅读
  2. tcp握手

    2024-07-10 17:34:03       38 阅读
  3. TCP握手

    2024-07-10 17:34:03       20 阅读
  4. TCP握手

    2024-07-10 17:34:03       13 阅读
  5. TCP握手原因

    2024-07-10 17:34:03       72 阅读

最近更新

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

    2024-07-10 17:34:03       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 17:34:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 17:34:03       4 阅读
  4. Python语言-面向对象

    2024-07-10 17:34:03       5 阅读

热门阅读

  1. stm32毫秒ms延时,HAL_Delay()

    2024-07-10 17:34:03       10 阅读
  2. nftables(4)表达式(2)主要表达式(PRIMARY EXPRESSIONS)

    2024-07-10 17:34:03       8 阅读
  3. C++八股(三)之虚函数

    2024-07-10 17:34:03       11 阅读
  4. Linux下mysql数据库的导入与导出以及查看端口

    2024-07-10 17:34:03       10 阅读
  5. Mybatis-Flex各种查询,强烈建议收藏

    2024-07-10 17:34:03       13 阅读
  6. Mybatis-plus学习

    2024-07-10 17:34:03       8 阅读
  7. mysql函数 last_insert_id()

    2024-07-10 17:34:03       11 阅读
  8. DateTimeUtils

    2024-07-10 17:34:03       7 阅读
  9. CSS:选择器 / 14种类型

    2024-07-10 17:34:03       10 阅读
  10. css中文字书写方向

    2024-07-10 17:34:03       9 阅读
  11. 19.JWT

    19.JWT

    2024-07-10 17:34:03      10 阅读
  12. 实证Stata代码命令汇总

    2024-07-10 17:34:03       10 阅读