一、概述
HTTP(超文本传输协议):用于客户端和服务器端之间的通信. 为理解HTTP,我们需要先了解 TCP/IP协议族: 不同的计算机与网络设备要相互通信,双方就必须基于相同的规则:使用什么语言?,怎样开始?,怎样结束?。而我们就把这种规则称为协议。
TCP/TP协议族里重要的一点就是分层。 TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层。
与HTTP关系密切的协议:IP、TCP和DNS
URI:统一资源标识符,URI就是由某个协议方案表示的资源的定位标识符。采用HTTP协议时,协议方案就是http。 URL:统一资源定位符,URL正是使用Web浏览器等访问Web页面时需要输入的网页地址。 URI用字符串标识某一互联网资源,而URL表示资源的地点(互 联网上所处的位置)可见URL是URI的子集。
二、介绍
HTTP是一种不保存状态,即无状态(stateless)协议。HTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术。
HTTP支持的方法: 持久连接:在HTTP/1.1中,所有的连接默认都是持久连接,但在HTTP/1.0未标准化。 管线化:不用等待响应亦可直接发送下一个请求。 使用COOKIE的状态管理。
三、HTTP报文
编码:
-
压缩传输的内容编码:内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。 常用的内容编码有以下几种。 gzip (GNU zip) compress(UNX系统的标准压缩) deflate( zlib) identity(不进行编码) -
分割发送的分块传输编码 在HTP通信过程中,请求的编码实体资源尚未全部传输完成之 前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割 成多块,能够让浏览器逐步显示页面。每一块十六进制来标记块的大小。 -
发送多种数据的多部分对象集合 如同MIME机制(用于邮件),HTTP协议中也采纳了多部分对象集合,发送的一份报文 主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。 多部分对象集合包含的对象如下。 multipart/form-data :在Web表单文件上传时使用 multipart/byteranges :状态码206( Partial Content,部分内容)响应报文包含了多个范围的内容时使用。 -
获取部分内容的范围请求 用途:能从之前下载中断处恢复下载。 执行范围请求时,会用到首部字段 Range来指定资源的byte范围。 -
内容协商机制 内容协商机制是指客户端和服务器端就响应的资源内容进行交涉, 然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字 符集、编码方式等作为判断的基准。 三种类型:1. 服务器驱动协商 2.客户端驱动协商 3.透明协商
四、HTTP状态码
五、WEB服务器
-
用单台虚拟主机实现多个域名 在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域 名的Web网站,因此在发送HTTP请求时,必须在Host首部内完整指 定主机名或域名的URI -
通信数据转发程序:代理、网关、隧道 1.代理:一种有转发功能的应用程序,扮演服务器和客户端的中间人。 代理的方法:按两种基准分类。一种是是否使用缓存,另 种是是否会修改报文。 缓存代理:
代理转发响应时,缓存代理( Caching Proxy)会预先将资源的副本
(缓存)保存在代理服务器上。
透明代理:
转发请求或响应时,不对报文做任何加工的代理类型被称为透明代
理( Transparent Proxy)。反之,对报文内容进行加工的代理被称为
非透明代理。
2.网关:网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有 时客户端可能都不会察觉,自己的通信目标是一个网关。 网关的工作机制和代理十分相似。而网关能使通信线路上的服务器
提供非HTTP协议服务。
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通
信线路上加密以确保连接的安全。比如,网关可以连接数据库,使用
SQL语句查询数据。另外,在Web购物网站上进行信用卡结算时,网
关可以和信用卡结算系统联动。
3.隧道: 是在相隔甚远的客户端和服务器两者之间进行中转,并保持双 方通信连接的应用程序。 隧道可按要求建立起一条与其他服务器的通信线路,届时使用SSL
等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的
通信。
隧道本身不会去解析HTTP请求。也就是说,请求保持原样中转给
之后的服务器。隧道会在通信双方断开连接时结束。
-
缓存:客户端缓存和缓存服务器缓存
六、HTTP首部和HTTPS
HTTP首部字段是由首部字段名和字段值构成的,中间用冒号“ :” 分隔。 若HTTP首部字段重复了会如何? 未明确规定,不同浏览器有不同逻辑
- 4种HTTP首部字段类型
通用首部字段 请求首部字段 响应首部字段 实体首部字段 - HTTP缺点
- HTTP+SSL=HTTP+加密+认证+完整性保护=HTTPS
HTTPS缺点:
- 因为与纯文本通信相比,加密通信会消耗更多的
CPU及内存资源。如果每次通信都加密,会消耗相当多的资源,平摊到 台计算机上时,能够处理的请求数量必定也会随之减少。 - 购买证书要钱:大概一年600¥
七、身份认证
基于表单的认证方法并不是在HTTP协议中定义的。
但是基于使用便利和安全问题,认证多为基于表单认证: 基于表单认证的标准规范尚未有定论,一般会使用 Cookie来管理 Session(会话)
八、基于HTTP的功能追加协议
-
SPDY: 其开发目标旨在解决HTTP的性能瓶颈,缩短Web页面的加载时间(50%)。 SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY规定通信中使用SSL。 -
使用浏览器进行全双工通信的 Websocket -
HTTP/2.0 -
Web服务器管理文件的 WEBDAV
九、WEB的攻击技术
- 跨站脚本攻击
跨站脚本攻击( Cross-site Scripting,XSS)是指通过存在安全漏洞 的Web网站注册用户的浏览器内运行非法的HTML标签或 Javascript 进行的一种攻击。动态创建的HTML部分有可能隐藏着安全漏洞。就 - SQL注入攻击
- OS命令攻击
OS命令注入攻击( OS Command Injection)是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用 Shell P函数的地方就有存在被攻击的风险。. - HTTP首部注入攻击
- 邮件首部注入攻击
- 目录遍历攻击
- 远程文件包含漏洞
|