TCP/IP 协议(应用层、传输层、网络层、链路层)
- 应用层:规定了向用户提供应用服务时通信的协议,如DNS域名系统、FTP文件传输协议、HTTP协议、HTTPS协议
- 传输层:对接上层应用层,提供处于网络连接中两台计算机之间的数据传输,如TCP传输控制协议、UDP用户数据报协议、QUIC协议
- 网络层:规定了数据通过怎样的传输路线到达对方计算机传送给对方,如IP协议
- 链路层:处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC,及光纤等物理可见部分
请求的方法
注意点:浏览器发送 CORS(跨域) 请求时, 分为简单请求与复杂请求,如果是复杂请求,浏览器会预先发送一个 option 请求
- GET:一般用于获取服务器资源,能缓存、参数保存在浏览器历史中、因为是明文传输且参数被保存所以比POST安全性差一点
- POST:一般用于传输实体主体,后退按钮/刷新数据会被重新提交、不能缓存、参数不会保存在浏览器历史中
- PUT:一般用于传输文件
- DELETE:用于删除文件
- HEAD:用于获取报文首部,不返回报文主体
- OPTIONS:用于询问请求URI资源支持的方法
HTTPS 握手过程
- 客户端使用 https 的 url 访问服务器,要求与服务器建立 ssl 连接
- 服务器收到客户端请求后, 将网站的证书(包含公钥)传送一份给客户端,服务器自己保留私钥
- 客户端收到网站证书后检查证书的颁发机构是否受客户端信任、校验证书是否被吊销(通过 CRL 或 OCSP 的方式)、校验证书是否在有效期内(对比系统时间)、证书的网站域名是否与证书颁发的域名一致(通过校验对方是否存在证书的私钥), 如果没有问题就随机产生一个秘钥
- 客户端利用公钥将会话秘钥加密, 并传送给服务器, 服务器利用自己的私钥解密出会话秘钥
- 后续服务器与客户端使用秘钥进行加密传输
HTTPS 中间人攻击及防御
攻击过程如下:
- 服务器向客户端发送公钥
- 攻击者截获公钥,保留在自己手上
- 然后攻击者自己生成一个【伪造的】公钥,发给客户端
- 客户端收到【伪造的】公钥后,生成加密的秘钥发给服务器
- 攻击者获得加密的秘钥,用自己的私钥解密获得真秘钥
- 同时生成【假】的加密的秘钥,发给服务器
- 服务器用私钥解密获得【假】秘钥
- 服务器用【假】秘钥加密传输信息
防范方法:
- 通过权威的证书颁发机构 CA :服务器在发送浏览器的公钥中加入 CA 证书,浏览器可以验证 CA 证书的有效性
- 问题:中间人也可申请 CA 认证
HTTPS 和 HTTP 的区别
- 费用:HTTPS 协议需要到 CA 申请证书,免费证书很少,一般都需要一定的费用
- 安全:HTTP 是超文本传输协议,信息是明文传输;HTTPS 通过 SSL 加密传输协议、身份认证的网络协议,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。简单说;HTTPS = HTTP + TLS/SSL(安全传输层)
- 端口:HTTP 使用 80 端口; HTTPS 使用 443 端口
可配合以下博客一同食用:
QUIC协议-和-TCP-UDP-协议
HTTP状态码及其含义
HTTP的请求及响应
从点击url到浏览器显示页面,这个过程中发生了什么?