# HTTP学习笔记
# 1. 网络基础
# 1.1. TCP/IP分层管理
应用层(HTTP客户端)(HTTP数据)
应用层决定了向用户一共应用服务时通信的活动
传输层(TCP)(TCP首部)
提供处于网络连接中的两台计算机之间的数据传输
网络层(IP)(IP首部)
用来处理在网络上流动的数据包
数据链路层(网络)(以太网首部)
用来处理连接网络的硬件部分
# 2. HTTP协议
- HTTP协议是一种不保存状态,即无状态协议。
- HTTP方法(必须大写)
- GET:获取资源
- POST:传输实体主题
- PUT:传输文件(不带验证机制,一般不使用)
- HEAD:获得报文头部
- DELETE:删除文件(不带验证机制,一般不使用)
- OPTIONS:询问支持的方法
- TRACE:追踪路径(容易引发XST跨站追踪,不常用)
- CONNECT:要求使用隧道协议连接代理
- HTTP保持连接,管道化(可以连续发送请求,不必等待回复),使用cookie管理状态
- HTTP报文:
- 报文首部:请求行、请求首部字段、通用首部字段、实体首部字段、其他
- 空行(CR+LF)
- 报文主体:状态行、响应首部字段、通用首部字段、实体首部字段、其他
- 内容协商:内容协商机制是指客户端和服务器就响应的资源内容进行交涉,然后提供给客户端最为合适的资源。比如不同语言的网页。
# 3. 状态码
- 1XX Informational(信息性状态码):接受的请求正在处理
- 2XX Success(成功状态码):请求正常处理完毕
- 3XX Redirection(重定向状态码):需要进行附加操作以完成请求
- 4XX Client Error(客户端错误状态码):服务器无法处理请求
- 5XX Server Error(服务器错误状态码):服务器处理请求出错
# 4. 与HTTP协作的web服务器
- 单台服务器可通过虚拟主机托管多个网站,但IP相同,因此在发送HTTP请求时,必须在host首部内完整的指定主机名或域名的URI
- 代理,代理是一种有转发功能的应用程序
- 缓存代理
- 透明代理
- 网关,网关是转发其他服务器通信数据的服务器,工作机制和代理十分相似,网关能使通信线路上的服务器提供非HTTP协议服务
- 隧道,隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道的目的是确保客户端能与服务器进行安全的通信
# 5. 确保web安全的HTTPS
- HTTP缺点
- 通信使用明文,可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
- web服务器和特定的web浏览器在实际使用中存在的不足
- 用Java和PHP等编程语言开发的web应用也可能存在安全漏洞
- 加密处理
- 通信加密:HTTP+SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全传输层协议)->HTTPS
- 内容加密:把HTTP报文里所含的内容进行加密。由于不是将整个通信线路加密处理,所以内容仍有被篡改的风险
- HTTPS = HTTP + 加密 + 认证 + 完整性保护
# 6. 确认访问用户身份的认证(没看懂)
# 7. 基于HTTP的功能追加协议
# 7.1. AJAX、Comet
# 7.2. SPDY
- 多路复用流
- 赐予请求优先级
- 压缩HTTP首部
- 推送功能
- 服务器提示功能
# 7.3. 使用浏览器进行全双工通信的WebSocket
- 推送功能
- 减少通信量