概念
HTTP 是面向事务的应用层协议,全称为 HyperText Transfer Protocol,即为超文本传输协议,是互联网应用最为广泛的一种网络协议,所有的 www 文件都必须遵守这个标准。
特性
HTTP 是无连接无状态的 HTTP 一般构建于 TCP/IP 协议(传输层)之上,默认端口号是 80 HTTP 可以分为两个部分,即请求和响应。
请求
由 3 个部分构成,分别是:状态行,请求头(Request Header),请求正文。
HTTP 定义了在与服务器交互的不同方式,最常用的方法有 4 种,分别是 GET,POST,PUT, DELETE。
URL 全称为资源描述符,可以这么认为:一个 URL 地址,对应着一个网络上的资源,而 HTTP 中的 GET,POST,PUT,DELETE 就对应着对这个资源的查询,修改,增添,删除 4 个操作。
GET 请求和 POST 请求的区别
- 请求参数位置不同,GET 请求对应的参数放在 URL 中,而 POST 请求对应的参数放在 HTTP 请求主体中。
但是这只是一种约定,GET 请求中出现 Body 也是被允许的。
虽然 HTTP 协议的 RFC 规范 并没有详细规定 URL 的最大字符长度限制,但实际上,在浏览器或者服务器中总会存在限制的,这就导致了 GET 请求中参数数量是有限的。
处于安全考虑,在一些涉及安全的请求比如:登录请求需要用 POST 提交表单,而 GET 请求一般用来获取静态资源。
GET、POST 请求都可以被缓存,但 GET 请求可以被收藏为书签, POST 不可以。
GET 请求的参数在 URL 中,因此绝不能用 GET 请求传输敏感数据。POST 请求数据则写在 HTTP 的请求头中,安全性略高于 GET 请求。
只是略高
响应
由三个部分构成。分别是:状态行,响应头(Response Header),响应正文
HTTP 状态码
1xx : 表示请求已经接受了,继续处理。 2xx : 表示请求已经处理掉了。 3xx : 重定向。 4xx : 一般表示客户端有错误,请求无法实现。 5xx : 一般为服务器端的错误。
常见的状态码: 200 OK 客户端请求成功。 301 Moved Permanently 请求永久重定向。 302 Moved Temporarily 请求临时重定向。 304 Not Modified 文件未修改,可以直接使用缓存的文件。 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。 401 Unauthorized 请求未经授权,无法访问。 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因。 404 Not Found 请求的资源不存在,比如输入了错误的 URL。500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
OSI 7层模型
- 应用层:与其它计算机进行通讯的一个应用,例如HTTP、FTP、DNS等。
- 表示层:定义数据格式及加密。例如二进制或ASCII格式。
- 会话层:定义了如何开始、控制和结束一个会话。例如SQL。
- 传输层:对输入进行复用、排序。例如TCP、UDP。
- 网络层:对端到端的包传输进行定义,标识所有结点的逻辑地址。例如IP。
- 数据链路层:定义了在单个链路上如何传输数据,与被讨论的介质有关。
- 物理层:有关传输介质的特性。