浅谈HTTP协议

概述:

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协议》

详情参考这篇文章

    原文作者:HTTP
    原文地址: https://segmentfault.com/a/1190000015112412
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞