Http协议
一、网络基础
如下图,Web使用一种名为Http(HyperText Transfer Protocol)超文本传输协议,完成从客户端到服务器端的一系列运行流程。
网络基础TCP/IP协议族
通常使用的网络是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。
TCP/IP的分层管理也是十分重要的一个机制。
发送端在层与层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息,反之,在接收端层与层之间传输数据时,每经过一层会把对应的首部消去。
与HTTP关系密切的协议:IP、TCP和DNS
- 负责传输的IP协议
IP(Internet Protocol)网际协议位于网络层,IP协议的作用是把各种数据包传送给对方,而保证确实传送到对方需要满足很多条件,其中两个重要条件IP地址和MAC地址
具体的通信过程可参考下图
其中传输路线的选择,就和ARP协议(Address Resolution Protocol)地址解析协议,根据通信双方的IP地址就可以反查出对应的MAC地址,和路由选择(routing)有关了。
- 确保可靠性的TCP协议
TCP协议位于传输层,提供可靠的字节流服务(是指,为了方便传输,将大块数据分割成以报文为单位的数据包进行管理)。
TCP协议使用的确认重传机制确保数据准确可靠的传输给对方,也就是三次握手与四次挥手
- 负责域名解析的DNS协议
DNS(Domain Name System)和HTTP一样是位于应用层的协议,它提供域名到IP地址之间的解析服务
二、浅析http协议
Http请求报文
Http请求报文
HTTP是不保存状态的协议,即无状态协议,虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了Cookie技术
告知服务器意图的HTTP方法
GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT
三、http报文解析
四、http状态码
五、确保Web安全的HTTPS
Http的不足之处
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信双方的身份,因此有可能遭遇伪装,Dos攻击
- 无法证明报文的完整性,所以有可能已遭篡改
对于这三点不足之处,HTTP是如何处理的呢
通信加密
HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer 安全套阶层)或TLS(Transport Layer Security安全层传输协议)的组合使用,加密HTTP的通信内容。
使用证书机制
在公开密钥加密方式中也存在一些问题,那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换了。
为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其他相关颁发的公开密钥证书。虽然HTTP协议无法确定通信方,但如果使用SSL则可以,SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的。另外伪造证书从技术角度上来说是十分困难的一件事。
使用MD5和SHA-1等散列值校验
虽然Http有一定的确认报文完整性的方法,但并不是完美的,为了有效防止这些弊端,有必要使用HTTPS。
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS并非是应用层的一种新协议,简单来说就是身披SSL外壳的HTTP
可以说SSL是当今世界上应用最为广泛的网络安全技术