zoukankan      html  css  js  c++  java
  • HTTP三次握手都处于什么状态

    HTTP三次握手都处于什么状态

    一、HTTP

      HTTP是一种传输协议:在客户端和服务器端通信时,规范了传输数据的格式,底层用的是TCP/IP通信协议

    请求报文包含:

      请求行:主要是请求方法、请求URL(和请求头的Host属性组成完整的请求URL)、HTTP协议及版本,Get请求参数放这里。

      请求头:服务端据此获取客户端的信息、与缓存相关的规则信息,均包含在header中

      请求体:键值对的形式储存参数,POST参数在这里

    响应报文包含:

      响应行:报文协议及版本、状态码及状态描述

      响应头:属性在这里,服务端,通过这个高速客户端如何控制响应内容的缓存,可以说这里也是规则。

      响应体:真正的干货,返回的数据在这里

    第一次握手:客户端发送syn包,里面包含位码为syn=1,同时里面还有随机产生seq number=2322326583 的数据包到服务器,服务器由SYN=1知道,客户端要求建立联机;客户端进入SYN_SEND,等待服务器确认;

                                                                                                      服务器向客户端发送(SYN+ACK包)

    第二次握手:服务器收到请求后要确认联机信息(syn=1),向客户端发送一个SYN(syn=1,ack=1)+ACK(ack number=(客户端的seq+1))包,随机产生seq=3573692787的数据包,此时服务器进入SYN_RECV状态

    第三次握手:客户端收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,客户端会再发送ACK确认包(ack number=(服务器的seq+1),ack=1)服务器收到后确认seq值与ack=1则连接建立成功。客户端和服务器进入ESTABLISHED状态,完成三次握手。

    完成三次握手,客户端与服务器开始传送数据

    从tcpdump的数据,可以明显的看到三次握手的过程是:
    第一次握手:client syn 2322326583 —> server
    第二次握手:server syn 3573692787, ack 2322326583 + 1 —> client
    第三次握手:client ack 3573692787 + 1 -->server

    SYN,ACK是标志位
    SEQ,AN是数据包序号
    SYN=1, ACK=0, SEQ=200 的意zhi思是:发送的为一个SYN请求,发送端的初始数据包序号为200
    SYN=1, ACK=1, SEQ=4800, AN=201 的意思是:接收端的确认信息,且接收端的初始数据包序号为4800

  • 相关阅读:
    npm ERR! code ELIFECYCLE
    typescript react echarts map geojson
    react ts could not find a declaration file for module
    SQL SERVER 查询存储过程执行时间
    分析云优化方案
    U8 单据弃审失败 解决办法
    RCP的熔断,降级与限流(笔记五)
    RPC的优雅关闭(笔记四)
    RCP的请求路由(笔记三)
    RCP的负载均衡(笔记二)
  • 原文地址:https://www.cnblogs.com/gushiye/p/13933995.html
Copyright © 2011-2022 走看看