1.网络基础:
1.各种协议
- http:生成针对目标Web服务器的http请求报文
- tcp:为了方便通信,将http请求报文段分割成报文段,把每个报文段可靠的传给对方
- ip:搜索对方地址,一边中转,一边传送
- tcp:从对方接收的报文段,重组到达的报文段,按序号重组请求报文
- http:对web服务器请求的内容的处理
- tcp/ip:请求的处理结果也同样使用tcpip通信协议向用户回传
2.简单HTTP协议:
- 1.请求报文:请求方法+uri+协议版本+可选的请求首部字段+内容实体
- 2.响应报文:协议版本+状态码+解释状态码的原因短语+可选的相应首部字段+实体主体
1.http方法:
2.持久化连接节省通信流量
- http协议的初始版本中,每进行一次http通信就要断开一次tcp连接
- 为了解决问题 出现持久连接
- http keep-alive 特点:只要任意一段没有明确提出断开连接,则保持tcp状态
- 优点:减轻服务器负载
- HTTP/1.1 中所有链接(默认)都是持久化连接
- 持久化连接使管线化成为可能:不用等待响应就可以发送下一个请求
3.HTTP是一种不保存状态,无状态协议,对于发送的请求和响应都不做持久化处理
- 无法根据之前的状态进行本次的请求和响应
- 引入cookie技术:通过在请求和响应报文中写入cookie信息控制状态,cookie根据服务端发送的响应报文中一个叫做setcookie的首部字段信息,通知客户端保存,客户端下次发送请求会携带cookie
- 服务端通过cookie,对比服务器记录,得到之前的状态信息
3.HTTP报文中的HTTP信息
1.报文
- http报文大致可以分为报文首部+报文主体
- 报文首部组成:(请求行+状态行+首部字段+ 其他)
- 报文:http通信中的基本单位,由8位组字节流组成,通过http通信传输
- 实体:作为请求或相应的有效载荷数据被传输,内容由实体首部+实体主体
- HTTP报文的主体用于传输请求或响应实体主体,通常报文主体==实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致实体主题与报文主体发生差异
- 内容编码
- 在通信中,传输大容量数据时,通常会把数据分割成多块(chunk),让浏览器逐步显示页面,这种把主体分块的功能叫做分块传输编码
- 多部份对象集合
- 再获取资源时,获取部分内容的范围请求
- 不同语言显示:内容协商:(服务器驱动协商/客户端驱动协商/透明协商)
4.返回结果的HTTP状态码
5.与HTTP协作的Web服务器
1.用单台虚拟机主机实现多个域名
http1.1润许一台http服务器搭建多个web站点,物理层面上只有一个服务器,但是只要使用虚拟主机功能,则可以假想已经有多台服务器
2.通信数据转发程序:代理,网关,隧道
-
代理
- 服务器与客户端的中间人
- 优点:利用缓存技术,减少网络带宽的流量,组织内部震度特定网站的访问控制,以获取访问日志为主要目的,等等
- 代理种类:缓存代理,透明代理
- 缓存代理:代理转发响应时,caching proxy 会将预先资源副本缓存在代理服务器上
缓存的有效期限:缓存服务器会判断缓存有效性
客户端的缓存:(临时网络文件)会向缓存服务器判断缓存有效性
- 透明代理:不对报文做任何加工
-
网关
- 转发其他服务器通信数据的服务器
- 网关可以使通信线路上的服务器提供非http协议服务。
-
隧道
- 在相隔甚远的服务器与客户端中间进行中转,并保持双方通信连接的应用程序
- 可以按要求建立起一条与其他服务器的通信线路,用ssl等加密手法进行通信。保证双方安全通信
6.HTTP首部(略)
7.确保Web安全的HTTPS
1.http的缺点:
- 通信使用明文,有可能被窃听
- tcp/ip 是可能被窃听的网络,所以要对对象加密
- 加密的对象
- 通道的加密:ssl/tls http+ssl = https
- 内容的加密:对http中包含内容加密(需要客户端和服务器同时具有加密解密机制,不同于通道,仍有篡改风险)
- 不验证通信方身份,有可能遭遇伪装
- 任何人都可以发起请求
- ssl可以查明对手证书(客户端在开始通信之前先确认服务器的证书,客户端持有证书即可完成个人身份认证)
- 无法整明报文完整性,所以有可能篡改
- 接受到内容可能有误
- 请求和响应在传输途中,遭攻击者拦截并篡改内容的攻击叫做中间人攻击
- 如何防止篡改:
- 常用md5/sha-1等散列值校验方法,数字签名
2.HTTP+加密+认证+完整性保护 = HTTPS
1.https的通信接口部分用ssl和tls协议代替了。通常http直接和tcp通信,当使用ssl时,则演变成先和ssl通信,再由ssl与tcp通信。
2.相互交换密钥的公开密钥加密技术
ssl采用一种公开密钥加密的加密处理方法
1.使用2把密钥的公开密钥加密
- 一对非对称的密钥,一把叫做私有密钥,一把叫做公有密钥
2.HTTPS采用混合加密机制
3.HTTPS的安全通信机制(略)