HTTP 协议
HTTP 概述
全称:`Hyper Text Transfer Protocol` 中文名:超文本传输协议
超文本:包含有 超链接(Link)和各种多媒体元素标记(Markup)的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
用简单的话说:HTTP去我们的服务器拿取文件,解析URL后展示成页面给我们看
URL
`URL`即统一资源定位符(Uniform Resource Locator),用来唯一的标识万维网中的某一个文档。
`URL`由协议、主机和端口(默认为80)以及文件名三部分构成
http:// www.baidu.com :80 /index.html ?key=value
协议: 域名 端口 文件及其路径 参数=值
http html URL
html页面是由很多个URL组成的,http负责获取并解析,之后展示成页面
HTTP 访问工作原理
HTTP 请求报文结构
请求报文结构:
1.请求行:
请求的方法(get方法没有请求主体内容 post方法会有请求主体信息)
请求的URL数据信息(默认请求index.html首页文件)
请求http协议版本
2.请求头:客户端有关的信息介绍说明
3.空行:隔离上下文,说明请求头部结束
4.请求主体:get方法没有请求主体内容 post方法会有请求主体信息
HTTP 响应报文结构
响应报文结构:
1.起始行(响应行)
HTTP协议版本信息
响应的状态码信息(请求成功状态码 200)
响应状态码说明信息
2.响应头部:服务端有关信息说明
3.响应空行:隔离上下文,说明响应头部结束
4.响应主体内容:一般为html css js 等等代码信息
范例
General 基本信息
#请求的URL
Request URL: http://10.0.0.7/
#请求的类型
Request Method: GET
#返回状态码
Status Code: 200 OK
#请求域名对应的地址端口
Remote Address: 10.0.0.7:80
#设置请求头部
Referrer Policy: no-referrer-when-downgrade
Request Header 请求头部
#文件类型
Accept: image/webp,image/apng,image/*,*/*;q=0.8
#压缩
Accept-Encoding: gzip, deflate
#语言
Accept-Language: zh-CN,zh;q=0.9
#保持连接:长连接
Connetection:keep-alive
HTTP/1.1版本 #长连接,一次TCP的连接可以发起多次http请求
HTTP/1.0版本 #短连接,一次TCP的连接只能发起一次http请求
还有HTTP/2.0和HTTP/3.0
#请求的域名
Host:www.driverzeng.com
#登录信息
cookie: PHPSESSID=afb7d767864ce6a652caa67dde33fcfc; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_8cb66d45a3693d7c9673d2f1eaf63f66=admin%7C1565534946%7C0cvYan2unubeCmkeb4dHfIueS0DrnA4cW8plJj9700T%7C37bb38d7b5c62837d6d82dd12eda70830752a1a37cf976d94d4ee560c75f766f
#主机
Host: 10.0.0.7
#该指令用于让浏览器自动升级请求从http到https,是告诉服务器,自己支持这种操作,也就是我能读懂你服务器发过来的上面这条信息,并且在以后发请求的时候不用http而用https,简洁的来讲,就相当于在http和https之间起的一个过渡作用
Upgrade-Insecure-Requests: 1
#浏览器版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Response Header 响应头部
#请求信息的单位
Accept-Ranges: bytes
#长连接
Connection: Keep-Alive
#数据长度
Content-Length: 38772
#文件类型
Content-Type: image/jpeg
#请求时间
Date: Fri, 06 Dec 2019 01:52:48 GMT
#标签(唯一标识符,确认是否有改变)
ETag: "9774-56aca09afaf80"
#长连接超时时间
Keep-Alive: timeout=5, max=96
#最后一次修改时间
Last-Modified: Fri, 27 Apr 2018 01:01:02 GMT
#服务加版本号
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
HTTP请求方法
在HTTP
请求报文中的方法(Method),是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
方法(Method) | 含义 |
---|---|
GET | 从指定的资源请求数据 |
POST | 向指定的资源提交要被处理的数据 |
DELETE | 删除Web页面 |
CONNECT | 用于代理服务器 |
HEAD | 请求读取一个Web页面的头部 |
PUT | 请求存储一个Web页面 |
TRACE | 用于测试,要求服务器送回收到的请求 |
OPTION | 查询特定选项 |
状态码
状态码(status-code)是响应报文状态行中包含的一个3位数字,指明特定的请求是否被满足,如果没有满足,原因是什么。状态码分为以下五类:
状态码 | 含义 |
---|---|
200 | 成功 |
301 | 永久重定向(跳转) |
302 | 临时重定向(跳转) |
304 | 本地缓存 |
307 | 内部重定向(跳转) |
400 | 客户端错误 |
401 | 认证失败 |
403 | 找不到主页,权限不足 |
404 | 找不到站点目录 |
500 | 内部错误 |
502 | 找不到后端主机 |
503 | 服务器过载 |
504 | 后端主机超时 |
HTTP协议总结
1.用户输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)
客户端向服务端发起查询 - > 递归查询
服务端向服务端发起查询 -