目录
http 协议介绍
http 协议的版本
http 0.9:仅于用户传输 html 文档
http 1.0:引入了 MIME(Multipurpose Internet Mail Extesions)机制:多用途互联网邮件扩展,引入这个技术之后,http 可以发送多媒体(比如视频、音频等)信息。此机制让 http不在单单只支持 html 格式,还可以支持其他格式来进行发送了。引入了 keep-alive 机制,支持持久连接的功能(但这个 keep-alive 原理是在首部添加了某个字段而形成的,并非原生就支持此功能)引入支持缓存功能http 1.1:支持更多的请求方法,更加精细的缓存控制,原生直接支持持久连接功能(presistent)。http 2.0:提供了 HTTP 语义优化的传输,spdy : google 引入了的一个技术,能够加速 http 数据交互,尤其是使用 ssl 加速机制,但是 spdy 现在用的还不多。目前常用的版本就是 http 1.0 版本和 http 1.1 版本
html 文本架构
<html>
<head>
<title>TITLE<title>
</head>
<body>
<h1>H1</h1>
<p> </p1>
<h2>H2</h2>
<p>< a href="admin.html>ToGoogle< /a ></p>
</body>
</html>
html 文档的生成方式
http 协议的报文
HTTP 报文中存在着很多行的内容,一般是由 ASCII 码串组成,各字段长度是不确定的。
HTTP 的报文可分为两种:请求报文与响应报文
request Message(请求报文)客户端 -→ 服务器端由客户端向服务器端发出请求,不同的网站用于请求不同的资源(html 文档)response Message(响应报文)服务器端 -→ 客户端是服务器予以响应客户端的请求
HTTP协议原理和流程
(1)用户输入用户名->浏览器跳转->app缓存->DNS解析(递归查询|迭代查询)
(2)由浏览器向服务器发起tcp连接(三次握手)
(3)客户端发起HTTP请求:
请求的方法(获取)
请求的主机:域名
请求的资源类型(html)
请求的端口(80、443)
请求携带的参数(类型、压缩、认证等)
(4)服务器的响应:
服务器的web软件
响应的文件类型
是否压缩
是否长连接
(5)客户端向服务器发起tcp断开(四次握手)
HTTP的连接类型:
短连接:建立一次tcp的连接,发起一次HTTP的请求,结束,tcp断开
长连接:建立一次tcp的连接,发起多次HTTP的请求,结束,tcp断开
HTTP 请求方法(常用)
get 获得请求文件信息的数据内容(下载)
post 用户提交数据到服务器(上传)
HTTP 的状态码(常见)
200 请求成功
201 上传文件成功
301 永久重定向(redirect)
302,307 临时重定向(redirect)
304 浏览器缓存
403 请求不到首页,没有权限
404 请求的资源在前端查明不存在
405 请求方法不支持
500 服务器的内部错误,程序错误
502 请求的资源前端有记录指向后端数据库,却找不到后端资源
503 服务暂时不可用
504 请求超时
HTTP 首部介绍
• 通用首部
• 请求首部
• 响应首部
• 实体首部:专门用来表示实体中资源内部的类型、长度、编码格式等
• 扩展首部:非标准首部,可有程序员自行创建
通用首部
• Connection:定义 C/S 之间关于请求、响应的有关选项在 http1.0 的时候,如果他想使用持久连接,那么他所设置的选项即为Connection:keep-alive
• Cache-Control:缓存控制,实现更精细的缓存控制方式。在 http 1.1 上比较常见
请求部首
- Client-IP :客户端 IP 地址
- Host :请求的主机,这在实现基于主机名的虚拟主机时很有用
- Referer :指明了请求当前资源原始资源的 URL,使用 referer 是可以防盗链
- User-Agent:用户代理,一般而言是浏览器
- Accept 首部:指客户端可以接受哪些编码的类型
- Accept:服务端能够发送的媒体的类型
- Accetp-Charset:接收的字符集
- Accept-Encoding:编码格式
- Accept-Lanage:所能接受的语言编码格式
- 条件式请求首部:(在 http1.1 中才会用到)
当发送请求时,先问问对方是否满足条件,如果满足条件就请求,不满足就不请求
- 跟安全相关的请求:
- Authorization
- Cookie
响应首部
- Age:资源响应给你之后可以使用的时长
- Server:向客户端说明自己用到的程序名称和版本
- 协商类的首部:
- Vary:首部列表,服务器会根据此列表挑选最适合的版本发给客户端
- 跟安全相关:
- WWW-Authentication
- Set-Cookie
实体首部
- Location:指明资源的新位置,实现 302 响应码时通常会用到
- Allow:允许对此资源使用的请求方法
- 内容相关的首部
- Content-Encoding
- Content-Language
- Content-Length
- Content-Location:内容所在的位置
- Content-Type
- 缓存相关:
- ETag:扩展标签/标记
- Expires:过期时间
- Last-Modified:最后修改时间
HTTP统计术语
PV:页面浏览量
UV:独立客户浏览量
IP:独立ip浏览量
例子:50人,每人通过手机和电脑访问同一网站各两次,全部都用公司宽带上网,会产生多少pv、uv、ip?
答案:200 100 1
区分URI和 URL
- URI(Uniform Resource Identifier) 同一资源标示符
用于标识某一互联网资源名称的字符串,通过这种标识来允许你用户对资源可通过特定的协议进行交互操作。在 Web 上可用的每种资源,包括 HTML 文档、图像、视频片段、程序等, 由一个通用资源标识符进行定位。所以我们可以使用
URI 来标识每个资源的名称
- URL(Uniform Resource Locator)(统一资源定位符) 用于描述一个特定服务器上某资源的特定位置。
例如:http://www.baidu.com:80/download/bash-4.3.1-1.rpm