图解HTTP(1)
2018-01-29 本文已影响0人
Ztry
第一章 了解Web及网络基础
HTTP
- HTTP(Hyper-Text Transfer Protocol): 超文本传输协议;
- 版本: 0.9,1.0,1.1,2.0;
WWW构建技术
- SGML标准通用标记语言(HTML)
- 文档传输协议(HTTP)
- 指定文档所在地址的URL(统一资源定位符)
TCP/IP
- 应用层(DNS: domain->IP) -> 传输层(TCP: 三次握手) -> 网络层(IP: ARP: IP->MAC) -> 数据链路层(MAC)
URI(统一资源标识符)与URL
- URI: 用字符串标识某一互联网资源
- URL: 强调位置
- URI > URL
第二章 简单的HTTP协议
HTTP要点
- HTTP是一种不保存状态的协议,意思是就当次有效,不持久化处理;HTTP/1.1引入keep-alive避免重复链接,引入Cookie技术进行状态管理
HTTP方法(8种)
- GET: 获取资源,文本直接返回;CGI就执行后返回
- POST: 传输实体主体
- PUT: 传输文件(无验证机制,安全性问题),要配合验证机制和REST
- HEAD: 类GET,只是不返回报文主体部分,用于确认URI有效和更新日期
- DELETE: 删文件,同PUT存在问题,解决和PUT一样
- OPTIONS: 询问支持的方法
- TRACE: 追踪路径,客户端通过TRACE可查发送出去的请求是怎样被加工修改/篡改的,易引发XST(Cross-Site Tracing,跨站追踪)攻击,基本不用
- CONNECT: 隧道协议连接代理,进行TCP通信,主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)加密后经网络隧道传输
持久连接
持久连接: HTTP/1.1默认所有连接持久化
管线化
管线化: 不用等待响应亦可直接发送下一个请求,同时并行发送
Cookie状态管理
- 发请求,服务器生成Cookie返回,响应报文 <set-Cookie: ... >
- 二次请求自动添加Cookie发送
第三章 HTTP报文内的HTTP信息
- HTTP报文本身是由多行(CR+LF作换行符)数据构成的字符串文本,分为报文首部和报文主体,中间有空行,不一定有报文主体
- 首部: 请求行/状态行,首部字段,其他
- 编码提升传输速率
报文主体和实体主体差异在于实体经过编码变为报文
- 压缩传输的内容编码(GNUzip=gzip,compress,deflate(zlib),identity)
- 分块传输编码:每一块都会用16进制标记块的大小,而最后一块使用"0(CR+LF)"来标记
- 发送多种数据的多部分对象集合
MIME(多用途因特网邮件扩展):允许邮件处理文本,图片,视频等不同类型的数据.
Content-Type: multipart/form-data(表单文件上传)
multipart/byteranges 状态码206,响应报文含多个范围
- Range: bytes=范围 Content-Type: multipart/byteranges
- 内容协商
首部字段: Accept,Accept-Charset,Accept-Encoding,Accept-Language,Content-Language
内容协商技术类型:
- 服务器驱动协商
- 客户端驱动协商
- 透明协商: 服务器驱动 + 客户端驱动
第四章 返回结果的HTTP状态码
响应类别
- 1XX - Informational - 信息性状态码 - 接收的请求正在处理
- 2XX - Success - 成功状态码 - 请求正常处理完毕
- 3XX - Redirection - 重定向状态码 - 需要进行附加操作以完成请求
- 4XX - Client Error - 客户端错误 - 服务器无法处理请求
- 5XX - Server Error - 服务器错误状态码 - 服务器处理请求错误
经常使用的14种状态码
- 2XX 成功
- 200 OK
- 204 No Content 返回响应报文不合实体的主体部分
- 206 Partial Content 范围请求Content-Range
- 3XX 重定向: 表明浏览器需要执行某些特殊处理以正确处理请求
- 301 Moved Permanently 永久性重定向
- 302 Found 请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问
- 303 See Other 由于请求的对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
- 304 Not Modified 服务端资源未改变,可直接使用客户端未过期的缓存
- 307 Temporary Redirect 临时重定向,和302类似,会遵照浏览器标准,不会从POST变成GET
- 4XX 客户端错误
- 400 Bad Request
- 401 Unauthorized 发送的请求需有HTTP认证,初次接收到401响应会弹出认证用的对话窗口
- 403 Forbidden 不允许访问,请求被服务器拒绝
- 404 Not Found 服务器上没有请求资源
- 5XX 服务器错误
- 500 Internal Server Error 服务器端执行请求出错
- 503 Service Unavailable 服务器超负载或在维护
第五章 与HTTP协作的Web服务器
- 通信数据转发程序: 代理(中间人),网关(处理请求非HTTP协议),隧道(中转加密)