概述:
HTTP协议又称超文本传输协议
HTTP(HyperTextTransfer Protocol)。HTTP 是一个无状态
(意味着客户端跟服务器不能长时间处于连接状态,一旦请求Request
-> 响应Response
过程完成,连接就会关闭)的应用层协议,基于C/S
模式,它使用 TCP 连接进行可靠的传送,能够在万维网上进行文本、声音、图像、视频等各种信息的交换。
HTTP连接过程
HTTP基于C/S模式,那么就有HTTP客户端和 HTTP 服务器两个部分,该过程主要由以下7个步骤组成:
-
建立TCP连接
在HTTP工作开始前,web浏览器向服务器发起连接请求,并建立建立。http协议是比tcp协议更高层次的应用层协议,根据规则,只有低层的协议建立连接才能进行数据通信。因此首先需要建立tcp连接,tcp连接的端口号一般是80.下面是建立连接的三次握手第一次
建立连接时,客户端A向服务端B发送请求报文段,这时首部中的同步位SYN =1,同时选择一个初始序号seq= x.TCP规定SYN=1报文段不能携带数据,但是要消耗一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态,等待服务器确认。
第二次
服务器收到请求报文后,如同意连接,则向A发送确认,同时自己也发送一个确认报文段,确认报文段中SYN和ACK都置1,确认号ack = x+1,同时自己也为自己选择一个初始序号seq =y。注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。
第三次
客户端A收到B的确认后,还要向B给出确认报文段。确认报文段的ACK=1,确认号ack =y+1,而自己的序号seq=x+1.此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 -
客户端向服务器发送请求命令
【请求行: 请求方法 、 url 、 协议版本】。一旦建立起连接,浏览器就会立即向服务器发起请求 -
Web浏览器发送请求头信息
浏览器向服务器发送他的头部信息,头部信息的格式为name=value的格式发送,最后将以一个空行来告诉服务器发送的请求消息报头已经发送完毕。 -
Web服务器应答
【状态行:协议版本号 、 应答状态码】。浏览器向服务器发送请求以后,服务器会做出应答,如HTTP/1.1 200 OK。 -
Web服务器发送应答头信息
就像客户端向服务器发送自己的头部消息一样,服务器也向客户端发送自己的数据和请求的文档,并以一个空行表示头部信息已经全部发送完毕。 -
Web服务器向浏览器发送数据
这时候web服务器会以Content-Type应答头部信息所描述的格式发送用户所请求的实际数据 -
服务器关闭TCP连接
一旦web服务器向客户端发送了请求数据,服务器就要断开tcp连接。
如果浏览器或是服务器的头部信息中加入了“Content-Type:keep-alive”,那么在TCP连接在发送数据之后还是保持着打开状态,浏览器还是可以向服务器发送请求。保持连接节省了为每个请求建立新的连接所需要的时间,还节约了网络带宽。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。