抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

介绍

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上,如图

image-20210903214830491

文本:html, 字符串…

超文本:图片、音乐……

http端口:80

https端口:443

Http请求与响应

HTTP协议永远都是客户端发起请求,服务器回送响应。见下图:

image-20210903214905388

这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端

请求报文:请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

响应(应答)报文:状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

HTTP请求方式

GET:最常用的请求方式,使用GET方法应该只用在获取数据

POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有

除此以外还有HEAD/PUT/DELETE/TRACE/OPTIONS/CONNECT 这8种不常用的请求方式

URL

URL被称为:统一资源定位符

其中通常包含信息:

  • 传送协议
  • 层级URL标记符号(为[//],固定不变)
  • 访问资源需要的凭证信息(可省略)
  • 服务器地址(通常为域名,有时为IP地址)
  • 端口号(可省略,默认使用http协议,端口为80)
  • 资源路径(以“/”字符区别路径中的每一个目录名称)
  • 查询(可省略,GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
  • 片段。以“#”字符为起点(可省略)

例如:

1
http://www.luffycity.com:80/news/index.html?id=250&page=1

HTTP状态码

状态码元由3位数字组成,表示请求是否被理解或被满足。

1XX: 信息——请求已被服务器接收,继续处理

2XX: 连接成功

  • 200:请求成功(其后是对GET和POST请求的应答文档)

3XX: 重定向

  • 300:多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址

  • 301:所请求的页面已经转移至新的url

  • 302:所请求的页面已经临时转移至新的url

  • 303:所请求的页面可在别的url下被找到

4XX: 请求错误

  • 400:服务器不理解请求
  • 401:被请求的页面需要用户名和密码
  • 403:对被请求页面的访问被禁止
  • 404:服务器无法找到被请求的页面

5XX: 服务器错误

  • 500:请求未完成,服务器遇到不可预知的情况。
  • 501:请求未完成。服务器不支持所请求的功能。
  • 503:请求未完成。服务器临时过载或宕机。
  • 504:网关超时

HTTP请求报文

image-20210903214930366

例如:

image-20210903214949259

HTTP响应报文

image-20210903215042801

例如:

image-20210903215124843

Http工作原理

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。

HTTP协议采用了请求/响应模型:

  • 客户端向服务器发送一个【请求报文】,请求报文包含请求的方法(get/post/…)、URL、协议版本、请求头部和请求数据。

  • 服务器以一个【状态行】作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

典型的HTTP事务处理有如下的过程:

(1)客户与服务器建立连接:

一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接

(2)客户向服务器提出请求:

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

(3)服务器接受请求,并根据请求返回相应的文件作为应答:

Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

(4)客户与服务器关闭连接:

  • 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;

  • 若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

(5)客户端浏览器解析HTML内容:

  • 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。

  • 然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。

  • 客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

评论