HTTP协议之握手挥手

Posted 主机计算环境安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议之握手挥手相关的知识,希望对你有一定的参考价值。

       HTTP基于TCP协议,通信过程简单快速、灵活、无连接、无状态、支持B/S和C/S模式,连接过程需要经过三次握手,断开过程需要经过四次挥手。

       HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

1、连接过程三次握手


       如上图所示,TCP创建连接经过了三次握手,三次握手的目的:消除旧有连接请求的SYN消息对新连接的干扰,同步连接双方的序列号和确认号并交换TCP 窗口大小信息。三次握手的基本步骤是:

第一次握手:

        客户端向服务器端发送连接请求包SYN(syn=j),等待服务器回应;

第二次握手:

        服务器端收到客户端连接请求包SYN(syn=j)后,将客户端的请求包SYN(syn=j)放入到自己的未连接队列,此时服务器需要发送两个包给客户端;(1)向客户端发送确认自己收到其连接请求的确认包ACK(ack=j+1),向客户端表明已知道了其连接请求(2)向客户端发送连接询问请求包SYN(syn=k),询问客户端是否已经准备好建立连接,进行数据通信;

  即在第二次握手时服务器向客户端发送ACK(ack=j+1)和SYN(syn=k)包,此时服务器进入SYN_RECV状态。

第三次握手:

       客户端收到服务器的ACK(ack=j+1)和SYN(syn=k)包后,知道了服务器同意建立连接,此时需要发送连接已建立的消息给服务器;

       向服务器发送连接建立的确认包ACK(ack=k+1),回应服务器的SYN(syn=k)告诉服务器,我们之间已经建立了连接,可以进行数据通信。

  ACK(ack=k+1)包发送完毕,服务器收到后,此时服务器与客户端进入ESTABLISHED状态,开始进行数据传送。

2、断开过程四次挥手

       由于TCP的半关闭特性,TCP连接时双全工(即数据在两个方向上能同时传递),因此,每个方向必须单独的进行关闭。这个原则就是:当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向上的连接。当一端收到一个FIN后,它必须通知应用层另一端已经终止了那个方向的数据传送。即收到一个FIN意味着在这一方向上没有数据流动了。

      四次挥手目的:保证服务器与客户端都能完全的接受对方发送的数据。

HTTP协议之握手挥手

假设客户机A向服务器B请求释放TCP连接,则:

第一次挥手:主机A向主机B发送FIN包;A告诉B,我(A)发送给你(B)的数据大小是N,我发送完毕,请求断开A->B的连接。

第二次挥手:主机B收到了A发送的FIN包,并向主机A发送ACK包;B回答A,是的,我总共收到了你发给我N大小的数据,A->B的连接关闭。

第三次挥手:主机B向主机A发送FIN包;B告诉A,我(B)发送给你(A)的数据大小是M,我发送完毕,请求断开B->A的连接。

第四次挥手:主机A收到了B发送的FIN包,并向主机B发送ACK包;A回答B,是的,我收到了你发送给我的M大小的数据,B->A的连接关闭。


以上是关于HTTP协议之握手挥手的主要内容,如果未能解决你的问题,请参考以下文章

理解TCP三次握手和四次挥手

TCP连接的建立与释放(三次握手与四次挥手)

TCP协议:三次握手,四次挥手

http的三次握手四次挥手

HTTP协议的 三次握手四次挥手

web服务-1http协议的三次握手四次挥手