HTTP协议

文章目录

  • 前言
  • 一、HTTP基础
    • 要点
    • 内容
  • 二、协议结构和通信原理
    • 要点
    • 内容
  • 三、特性、使用
    • 要点
    • 内容
  • 四、构建应用
    • 要点
    • 内容
  • 五、安全、HTTPS
    • 要点
    • 内容
  • 六、功能追加协议
    • 要点
    • 内容
  • 七、Web安全
    • 要点
    • 内容
      • WASC将web威胁分六类
  • 总结


前言


一、HTTP基础

要点

基础、发展、TCP/IP协议族

内容

HTTP:超文本传输协议,应用层的面向对象的协议
HTML:超文本标记语言

HTTP版本发展:
0.9 -> 1.0 -> 1.1 ->2.0 -> 3.0 (QUIC)

HTTP协议是TCP/IP的一个子集

TCP/IP网络

链路层 网络层 传输层 应用层
网络 IP TCP HTTP

数据包封装

以太网 IP TCP 应用数据 以太网
首部 首部 首部 尾部
<- TCP段 ->
<- IP数据报 ->
<- 以太网帧 ->

TCP 三次握手
要保证双方的发送和接收能力都正常
DNS域名解析

二、协议结构和通信原理

要点

报文结构、通讯原理、请求方法、状态码

内容

HTTP支持C/S模式
HTTP支持任意类型的数据对象、类型由Content-Type标识

HTTP 无链接
每次连接只处理一个请求
处理完请求并收到客户端应答即断开连接
可以节省传输时间
Keep-Alive 解决了无连接的断开问题
无状态:服务器无记忆能力,对于已经处理过的信息必须重传
Cookie和Session用于解决无状态问题

URI = URL + URN
URL是URI,但并非所有URI都是URL

HTTP四类报文头
通用报文头、请求报文头、响应报文头、实体报文头
通用报文头

通用报文头 解释
Cache-Control 控制缓存
Connection 用于指定当前的连接如何处理。例如:close:表示在完成请求后,客户端希望断开连接。keep-alive:表示在完成请求后,客户端希望保持连接,以便可以发送后续请求。upgrade:表示客户端希望将当前的连接升级为其他协议,例如HTTP/2或WebSocket。
Date 创建报文时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 报文主体编码
Upgrade 协议升级。例如websocket需要协议升级
Via 代理服务器
Warning 错误通知

请求报文头

请求报文头 解释
Accept 客户端可接受的MIME类型 、用户代理可处理的媒体类型
Accept-charset 客户端所能接受的字符集,这些字符集是按照优先级排序的
Accept-Encoding 客户端可接受的编码类型
Accept-Language 客户端可接受的语言类型
Authorization 身份认证信息
Expect 客户端期望服务器在响应中返回哪些内容。通常情况下,这个字段用于指定服务器是否需要采取特殊的行为来处理该请求
From 标识发送请求的用户的电子邮件地址
Host 请求的目标服务器
If-Match If-Match字段的值通常是一个ETag值,它是一个与资源相关的标识符,可以由服务器分配。如果ETag值匹配,则服务器认为资源未更改,可以响应请求。如果ETag值不匹配,则服务器认为资源已更改,无法响应请求。
If-Modified-Since 比较资源的更新时间
If-None-Match 与If-Match相反
If-Range

PUT方法是幂等的,所以更新用PUT,追加用POST
HEAD类似于GET但是响应没有具体内容
OPTIONS查询资源支持的方法
CONNECT用于做代理(VPN)

状态码

编码 解释 举例 解释
1xx 表示消息请求已被接受要继续处理,临时响应
2xx 成功 206 成功处理了部分get请求,用于断点续传
3xx 重定向,代表客户端要采取进一步操作才能完成请求,后续的请求地址在本次响应的Location域中 304 未修改
4xx 请求错误,客户端错误妨碍了服务器的处理
5xx 服务器错误,服务器意识到当前软硬件无法完成请求的处理

三、特性、使用

要点

内容

常见的编码规范:ASCII、GBK、ISO-8859-1、Unicode
UTF-8是一种编码方式
乱码,编解码使用的编码规范不一致或编码的编码规范中不包含对应字符。

认证方式:Basic认证-(安全)-> DIGEST认证
由于使用便利性被放弃
SSL客户端 由于成本高
基于表单认证,使用最多
不是HTTP协议中认定的
由Web应用程序各自实现
通过Cookie、Session保持用户状态
HTTP协议是基于请求/响应模式的,只要服务端,给了响应,本次HTTP请求就结束了。
HTTP的长连接和短连接本质上是TCP长连接和短连接
HTTP/1.0默认短连接每次HTTP操作都连接和中断
HTTP/1.1起默认长连接,以保证连接特性
请求头中Connection:keep-alive
代理,同时作为服务端和客户端
可以增强访问也可以屏蔽
网关改变访问形式
HTTP/*服务器端web网关(HTTP换mail/FTP等)
HTTP/HTTPS服务器端安全网关
HTTPS/HTTP客户端安全加速网关
资源网关 例HTTP转RPC
HTTP缓存
缓存的是一些静态文件
缓存工作方式:
1、约定过期时间-Expires
2、约定过期时间+最新修改时间对比
Last-Modified, if-Modified-Since
3、Expires/Last-Modified + Etag、If-None-Match
内容协商机制
指客户端和服务器端就响应的资源内容加进行交涉,然后提供给客户端最适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。
内容协商方式
客户端驱动、服务器驱动、透明协商
断点续传、多线程下载
客户端Range、服务器Content-Range
不用断点而成功返回200
用断点而成功返回206

四、构建应用

要点

HTTP服务器代码编写运维

内容

五、安全、HTTPS

要点

加密传输原理、安全服务建设

内容

HTTPS = HTTP + TLS
TLS 传输层加密协议 前身SSL协议
内容加密: 非对称/对称
上述两种加密都有一步铭文传输
都可以被中间人攻击
HTTPS引入了CA机构,浏览器自带CA证书的公钥,这样就没有了明文传输
HTTPS对性能影响
协议交互增加网络RTT(往返时延)
HTTP:TCP握手 ->数据传输
HTTPS:TCP握手 -> 302跳转 -> TCP握手 -> TLS完全握手阶段1 -> 阶段2 -> 数据传输
302跳转 默认网址是HTTP的而非HTTPS
TLS握手 密钥协商

六、功能追加协议

要点

websocket、webDAV、HTTP2、HTTP3

内容

HTTP瓶颈:1、带宽,2、延迟
浏览器连接数有限
DNS查找
建立链接

WebSocket兼容HTTP的握手
完成握手之后有一个协议升级请求头和响应头中的Upgrade

HTTP缺陷
单路连接,请求低效
HTTP只允许客户端主动发起请求
HTTP头部冗余

SPDY的改进 放弃 -> HTTP2.0
多路复用、请求优化
支持服务器推送技术
SPDY压缩HTTP头
强制SSL传输协议

HTTP2.0性能增强的核心:二进制分帧
HTTP2.0首部压缩
设计首部表,对一些通用K-V对,如果没有改变则不重复发送
HTTP2.0资源合并,公用一个TCP连接
HTTP2.0流的优先级

WebDAV协议
网盘实时处理协议
是HTTP1.1的扩展
很少使用,NAS用到

HTTP2.0的问题
队头阻塞,丢包导致全部重传
建立连接握手延迟大

QUIC特性
ORTT
没有队头阻塞的多路复用
前向纠错

七、Web安全

要点

验证、会话管理、SQL注入、跨站攻击

内容

WASC将web威胁分六类

  1. 验证
  2. 授权
  3. 客户侧攻击
  4. 命令执行
  5. 信息暴露
  6. 逻辑性攻击

总结

你可能感兴趣的:(http,网络协议,网络)