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

 

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

 

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

 

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

上一篇:request表示HttpServletRequest对象?


下一篇:R install("curl")