zoukankan      html  css  js  c++  java
  • TCP三次握手和四次握手

    TCP协议是TCP/IP参考模型中属于传输层协议,TCP是保证可靠地,有序的.TCP提供了多种机制保证这种服务,这里介绍下TCP建立连接和关闭连接的过程.
     
    TCP建立连接三次握手:
     
    服     SYN, client_seq                         客
    务  <----------------------------------------- 户(第一次握手)
    器                                             
     
    [客户端发送完SYN包处于SYN_SENT状态, 此时服务器处于LISTENING状态]
     
    服     SYN, ACK, client_seq+1, server_seq      客
    务  -----------------------------------------> (第二次握手)
    器                                             
     
    [服务器发送SYN,ACK包后处于SYN_RCVD状态]
     
    服     ACK, server_seq+1                       客
    务  <----------------------------------------- (第三次握手)
    器                                             
     
    [客户端发送ACK包后处于ESTABLISHED状态,服务器收到ACK包后处于ESTABLISHED状态]
     
    TCP关闭连接四次握手:
     
    服     FIN                                     客
    务  <----------------------------------------- 户(第一次握手)
    器                                             
     
    [客户端发送FIN包后处于FIN_WAIT_1状态]
     
    服     FIN, ACK                                客
    务  -----------------------------------------> (第二次握手)
    器                                             
     
    [服务器发送FIN, ACK包后处于CLOSE_WAIT状态, 客户端收到FIN, ACK包后处于FIN_WAIT_2状态]
     
    服     FIN                                     客
    务  -----------------------------------------> (第三次握手)
    器                                             
     
    [服务器发送FIN后处于LAST_ACK状态]
     
    服     FIN, ACK                                客
    务  <----------------------------------------- (第四次握手)
    器                                             
     
    [服务器收到FIN, ACK后处于CLOSED状态, 客户端发送FIN, ACK后处于TIME_WAIT状态,等待2秒钟,变为CLOSED状态]
     
     
    TCP为什么进行三次握手:
    1)避免过期连接
    2)防止陷入死锁
     
    其实三次握手是让双方均知道发送的请求能够收到, 多了浪费, 少了达不到效果
  • 相关阅读:
    在博客园里给图片加水印(canvas + drag)
    Chrome开发者工具使用指南
    《古剑奇谭3》千秋戏辅助工具(前端React制作)
    React中useEffect的源码解读
    关于为什么使用React新特性Hook的一些实践与浅见
    使用@babel/preset-typescript取代awesome-typescript-loader和ts-loader
    使用dva改造React旧项目的数据流方案
    在React旧项目中安装并使用TypeScript的实践
    安利一个绘制指引线的JS库leader-line
    微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)
  • 原文地址:https://www.cnblogs.com/ourroad/p/3375942.html
Copyright © 2011-2022 走看看