http协议可以说是当代最重要的应用层协议,平时我们浏览的页面、微信公众号的文章、aap内每天更新的内容等等,都是使用的http协议。既然是使用最广泛的协议,那么我们运维必须了解它的一些原理,同时也要了解http协议传输的数据都有哪些。

http协议

1请求流程

wKiom1hVOaCzAp7QAACWLBMWNsY558.png

上图是网上流传最多的一张关于HTTP协议协议请求流程的图

2通用首部

  通用首部的重要的几个,通用首部既可以出现请求报文中也可以出现在响应报文中

Date :报文的创建时间

Connection :连接方式,如keep-alive,Close

Via :显示报文经过的中间节点

Cache-Control :控制缓存的生效机制

Pragma :兼容Http 1.0

3请求首部

Accept :通知服务器自己可以接受的媒体类型

Accept-Charset :可以接受的字符集

Accept-Encoding :通知服务器自己接受的编码格式,如gzip

Accept-Language :接受的语言

Client-IP :客户端IP

Host :请求的服务器名称和端口号

Referer :包含当前正在请求资源的上一级资源

User-Agent :客户端代理

4响应首部

  • 信息性

Age :响应持续时长

Server :服务器程序软件名称和版本

  • 协商首部:某资源有多种表示方法时使用

Accept-Ranges :服务器可接受的请求范围类型

Vary :服务器查看的其他首部列表 ,服务器根据首部内容挑选

出最合适的资源版本发送给客户端

  • 安全响应首部

Set-Cookie :向客户端设置Cookie

Set-Cookie2

WWW-Authenticate

5 实体首部

Allow 列出对此实体可使用的请求方法

Location 告诉客户端真正的实体位于何处

Content-Encoding 内容的编码格式

Content-Language 内容的使用语言

Content-Length 主体的长度

Content-Location 实体真正所处位置

Content-type 主体的对象类型

缓存相关

         Etag 实体的扩展标签

 Expires 实体的过期时间

          Last-Modified最后

URL 基本语法

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

举例1 http://www.magedu.com/bbs/hello;gender=f

举例2 http://www.magedu.com/bbs/item.php?username=tom&title=abc

URL 语法释义

<user>:<password> 访问网站资源时候所需要用户名密码

ftp://zhaoritian:zhaoritian@ftp.magedu.com/gnu

<Params> 指定特殊参数的可选项, 分隔

http://www.magedu.com/bbs;sale=flase/index.html;grp=true

<query> 向动态网页传递参数,供后端动态程序发起查询请求

http://www.magedu.com/bbs/item.php?username=tom&title=abc

<frag> 锚定符, 定义一个较大页面中的某一个具体的位置

http://www.magedu.com/study.html#unix

常见http的方法

GET :从服务器获取一个 资源

HEAD :只从服务器获取文档响应 首部

POST :向服务器发送要处理的数据,放在请求报文的<entity-

body>

PUT :与POST 相反,将请求的主体部分存储在服务器

DELETE :请求删除服务器上指定的 文档

TRACE :追踪请求到达服务器中间经过的代理 服务器

OPIONS :请求服务器返回对指定资源支持使用的请求

常用的状态码

200 请求成功 OK

301 向永久重定向 MovedPermanently

302 向临时重定向 Found

304 请求资源未发生改变 NotModified

401 输入账号和密码认证之后才能访问源资源Unauthorized

403 请求被禁止 Forbidden

404 服务器无法找到客户端请求的资源Not Found

500 服务器内部错误InternalServer Error

502 代理服务器从后端服务器收到一条伪应响应 Bad Gateway

传输的数据格式

1静态数据

  静态数据一般都使用htmlhtml文件的格式如下

<html>

       <head>

              <title></title>

       </head>

       <body>

              <h1>标题</h1>

                     <p内容<a herf=http://oldking.blog.51cto.com>bb</a></p>

       </body>

</html>

2动态数据

  动态数据主要分为有phpjavascriptasp.net。了解就好。

总结

  了解各种首部和状态码,可以帮助我们判断问题的出处,了解URL可以帮我们重定向URL使用户访问特定的网站,数据格式基本就不用去了解了。