HTTP相关内容(一) | 青训营

66 阅读2分钟

HTTP相关内容(一) | 青训营

各种独立的设备间需要进行通讯,想要兼容,就得有一些通用的协议。HTTP:超文本传输协议就是其中一种,其工作在应用层。

HTTP有1.1、2.0、3.0。

HTTP 1.1有无状态,明文传输,长连接几个特点,简单但不安全。服务器不用记录状态信息,但在一些关联性的操作上面就不得行了,比如每次打开一个网站的不同页面都要重新登陆,用户直呼酸爽。当然可以使用Cookie给用户的请求打上标签解决关联性的问题。但是明文传输也十分不安全,内容裸奔,不能辨别真假,不能识别报文完整性。长连接的请求应答模式避免多次TCP链接(三握),且可以发起多个请求进行管道式的通信(管道化默认不开启,浏览器也不支持),这样请求时就没有队头阻塞了。但是服务端要依次处理请求,相应的队头阻塞没法解决。

解决队头阻塞,HTTP2.0使用了 Stream 概念,在一个TCP链接里面,有多个Stream,一个Stream包含多个 Message,Message里面又有多个Frame (由HTTP头和包体组成)。不同的HTTP请求都有装有的Stream ID,他可以乱序发送,接收端会自行有序拼装,这样就可以部分解决响应队头阻塞的问题。

此外安全的问题,则是由HTTPS解决,在HTTP和TCP之间加了一层SSL/TLS协议。TCP三握后还要进行SSL/TLS握手。HTTPS实现了信息加密、校验机制、以及身份证书。

首先信息加密使用混合加密实现,也就是对称加密和非对称加密。使用摘要算法+数字签名保证信息的完整和可靠。给内容的使用哈希算法计算哈希值,可以保证内容不被篡改,但是不能防止中间人替换,这里就可以使用非对称加密解决:公钥和私钥,公钥公开,私钥本地管理,两者是可以上相加解密的。当使用公钥加密私钥解密,可以保证内容安全,其他没有私钥的人不能解密公钥加密内容。私钥加密公钥解密,可以保证信息可靠。此外可以使用数字证书来防止公钥被伪造。

待续.....