碎碎念
这两天比较粗略地知道了HTTP、Cookie、Session等原理和应用,但是很多都记不牢。。。还是没有理解透彻,接下来继续深入理解。
学习路线有几个学习http的网址not found,就。。。有点惋惜。。
然后接下来好好琢磨一下《图解HTTP》这本书,买了大半年了,终于开封了。。
《图解HTTP》的笔记
客户端发送请求到服务器
网络通信流程
- 客户端在应用层发出一个HTTP请求,然后往下层传输
- 传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记号和端口号,然后转发给网络层
- 网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层
- 服务器在链路层接收到数据,往上层发送
流程中协议的职责
- HTTP:生成针对目标web服务器的http请求报文
- TCP:将http请求报文分割成报文段,按序号分,把每个报文段可靠地传给对方
- IP:搜索对方的地址,一边中转一边传送
- TCP:重组从对方那里接收到报文段
- HTTP:对web服务器请求的内容的处理
确保可靠性的TCP协议
-
三次握手
为了准确无误地将数据送达目标处,TCP协议采用三次握手策略。
- 发送端首先发一个synchronize标志的数据包给对方
- 接收端收到后,回传一个带有synchronize/acknowledgement 的数据包
- 发送端再回传一个带acknowledgement 的数据包,代表握手结束
若握手过程某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
负责域名解析的DNS服务
Domain Name System 服务是和HTTP协议一样位于应用层的协议。它提供域名到IP地址之间的解析服务。
状态码
1××
2××
3××
4××
5××
HTTP的缺点
http使用明文方式发送,内容可能被窃听
通信加密。通过SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全传输层协议),组合使用,加密HTTP通信内容。
-
不验证通信方的身份,因此有可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认。
-
无法证明报文的完整性,所以有可能被篡改
防篡改
- MD5和SHA-1等散列值校验的方法
- 确认文件的数字签名方法
- 提供文件下载服务的网站也会提供相应的以PGP(Pretty Good Privacy,完美隐私)创建的数字签名,以及MD5算法生成的散列值。
- PGP是用来证明创建文件的数字签名。
- MD5是由单向函数生成的散列值。
-
HTTPS
把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure)
- HTTP通信接口部分用 SSL 和 TLS 协议代替。
- 通常HTTP直接和TCP通信。当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信。
SSL的公开密钥加密
- 共享秘钥加密,就是加密和解密同用一个密钥,也叫对称密钥加密。加密时将密钥也发给对方。(密钥有被窃听的风险)
- 公开密钥加密使用一对非对称的密钥。
- 私钥和公钥。私钥不能让其他人知道,公钥可以随意发布。
- 发送密文的一方使用对方的公钥进行加密处理,对方收到被加密的信息后,再使用私钥进行解密。
- HTTPS采用混合加密方式,对称和非对称。
- 公开密钥的真实性,用数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。