HTTP

一、介绍

HTTP,英文为HyperText Transfer Protocol,中文解释为超文本传输协议,是互联网上应用最为广泛的一种网络协议。用于从WWW服务器传输超文本到本地浏览器的传输协议,所有的WWW文件都必须遵守这个标准。

HTTP协议是一个应用层协议,是请求/响应模型的,客户端发起请求,服务器回送响应。服务器无法主动将消息推送给客户端。

理论上,只要协议符合HTTP协议要求,都可以承载HTTP协议。通常HTTP协议承载于TCP/IP协议之上,有时也承载于TLS或SSL协议层之上,也就是我们常说的HTTPS。

HTTP默认端口号为80,可以修改为其他符合要求的端口。

HTTPS的端口号为443。

二、特点

1.HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。

2.HTTP是媒体独立的:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。 

3.HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。同一个客户端的这次请求和上次请求是没有对应关系。

三、HTTP请求方式

HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

1.GET:请求指定的资源,并返回消息主体。

2.HEAD:类似于GET请求,但是没有相应内容,只有响应头信息。

3.POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

4.PUT:从客户端向服务器传送的数据取代指定的文档的内容。

5.DELETE:请求服务器删除指定的资源。

6.OPTIONS:允许客户端查看服务器的性能。

7.TRACE:回显服务器收到的请求,主要用于测试或诊断。

8.CONNECT:HTTP1.1协议中预留给能够将连接改为管道方式的代理服务器。

四、URL和URI

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。如:www.baidu.com。

URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。如:www.baidu.com/s?wd=http。

区别:URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。

五、HTTP状态码

状态代码由三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息--表示请求已接收,继续处理。

2xx:成功--表示请求已被成功接收、理解、接受。

3xx:重定向--要完成请求必须进行更进一步的操作。

4xx:客户端错误--请求有语法错误或请求无法实现。

5xx:服务器端错误--服务器未能实现合法的请求。

常见状态码的含义

        200---OK/请求已经正常处理完毕。

        400---客户端请求存在语法错误。

        404---客户端请求的URL在服务端不存在。

        500---服务端错误。

六、HTTP请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。

HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

GET请求消息例子,用PostMan工具抓取

GET /s?wd=http HTTP/1.1
Host: www.baidu.com
Cache-Control: no-cache
Postman-Token: d4f9c568-4967-4e59-a1d7-e9d743a55923

第一部分:请求行,用来说明请求类型为GET,要访问的资源为/s?wd=http以及所使用的HTTP版本为HTTP/1.1。

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。

Host指出请求资源的目的地;Cache-Control指定请求和响应遵循的缓存机制,no-cache指示请求或响应消息不能缓存;Postman-Token是工具生成的,可以忽略。

第三部分:空行,请求头部后面的空行是必须的。

POST请求消息例子,用PostMan工具抓取(注意:百度禁止用post请求该地址,这里为测试用)

POST /s HTTP/1.1
Host: www.baidu.com
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 5cf2fa8a-bac8-4b8a-8d67-e58e1217352e

wd=http

第一部分:请求行,用来说明请求类型为POST,要访问的资源为/s以及所使用的HTTP版本为HTTP/1.1。

第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。

Host指出请求资源的目的地;Content-Type内容类型,application/x-www-form-urlencoded数据被编码为名称/值对。;Cache-Control指定请求和响应遵循的缓存机制,no-cache指示请求或响应消息不能缓存;Postman-Token是工具生成的,可以忽略。

第三部分:空行,请求头部后面的空行是必须的。

第四部分:请求数据,即空行以下部分。

七、HTTP响应消息

服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

响应消息例子

HTTP/1.1 200 OK
Date: Wed, 19 Sep 2018 12:01:21 GMT
Content-Type: text/html; charset=UTF-8

 

<html>
      <head></head>
      <body>
            <!--body goes here-->
      </body>
</html>

第一部分:状态行,由HTTP协议版本号,状态码,状态消息 三部分组成。

第二部分:消息报头,用来说明客户端要使用的一些附加信息

第二行和第三行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8

第三部分:空行,消息报头后面的空行是必须的

第四部分:响应正文,服务器返回给客户端的文本信息。

八、工作原理

基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、接收响应信息、关闭连接。

1.建立连接:客户机单击某个超级链接,如:www.baidu.com ,HTTP的工作就开始了。

2.发送请求信息:建立连接后,客户机发送一个请求消息给服务器。

3.接收响应信息:服务器接到请求消息后,给予相应的响应消息。

4.关闭连接:客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

九、HTTP版本历史

HTTP/0.9: HTTP协议的最初版本,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。

HTTP/1.0:增加了请求方式POST和HEAD;根据Content-Type可以支持多种数据格式,即MIME多用途互联网邮件扩展,例如text/html、image/jpeg等;同时也开始支持cache,就是当客户端在规定时间内访问统一网站,直接访问cache即可。但是1.0版本的工作方式是每次TCP连接只能发送一个请求,当服务器响应后就会关闭这次连接,不支持keepalive。

HTTP/1.1:解决了1.0版本的keepalive问题,1.1版本加入了持久连接,一个TCP连接可以允许多个HTTP请求;加入了管道机制,一个TCP连接同时允许多个请求同时发送,增加了并发性;新增了请求方式PUT、PATCH、DELETE等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值