内容概要:
? HTTP协议
? HTTPS协议
? HTTPS和HTTP的区别

一、HTTP协议
1.1 HTTP特点
- 无状态
- 使用URI定义互联网资源
- HTTP方法
- GET:获取资源
- POST:传输实体主体
- PUT:传输文件
- HEAD:获得报文首部
- DELETE:删除文件
- OPTIONS:询问支持的方法
- TRACE:追踪路径
- CONNECT:要求用隧道协议连接代理
- 持久连接节省通信量
- 管线化实现并行发送多个请求,而不需要一个接一个等响应
1.2 HTTP报文
用于HTTP协议交互的信息称为HTTP报文。
请求报文:
- 报文首部
- 请求行
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 空行
- 报文主体
响应报文:
- 报文首部
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 空行
- 报文主体
发送多种数据的多部分对象集合:
- MIME
- multipart/form-data
内容协商:
- 服务器驱动协商
- 客户端驱动协商
- 透明协商
1.3 HTTP状态码
1XX:接收的请求正在处理
2XX:请求正常处理完毕
- 200 OK
- 204 NoContent
- 206 Partial Content
3XX:需要进行附加操作以完成请求
- 301 Moved Permanenetly
- 302 Found
- 303 See Other
- 304 Not Modified
- 307 Temporary Redirect
4XX:服务器无法处理请求
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
5XX:服务器处理请求出错
- 500 Internal Server Error
- 503 Service Unavailable
1.4 HTTP1.1 和HTTP1.0的区别
可扩展性:定义Via头域,增加版本号的支持。
缓存:
- 增加对缓存的重激活机制:使用ETag头域描述一个资源。
- 增加Cache-Control头域支持可扩展的指令集。
带宽优化:允许请求资源的某部分,而不是整个资源。
长连接:
- HTTP/1.0只支持浏览器与服务器保持短暂的连接,浏览器的每次请求都要建立一个新的连接。
- 而HTTP/1.1允许在一个TCP连接上可以传送多个HTTP请求和响应。HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。
- 非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求。
- 流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文。
1.5 Cookie与Session的区别
1、存取方式的不同
- Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比较艰难的。
- Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。
2、隐私策略的不同
- Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。
- Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
3、有效期上的不同
- Cookie的过期时间指定
- Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器该Session就会失效,因而Session不能完成信息永世有效的效果。
3、服务器压力的不同
- Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。
- Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。
4、浏览器支持的不同
- Cookie是需要客户端浏览器支持的。
- 假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。
5、跨域支持上的不同
- Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。
- Session则不会支持跨域名访问。Session仅在他所在的域名内有效。
1.6 Ping
同网段:
- 主机A要去Ping主机B, 主机A会封装两层报文,主机A先检查自己MAC地址中是否有B的MAC地址,如果没有就向外发送一个ARP广播包。
- 交换机收到这个ARP后,会检查在交换机中是否包含B的MAC地址,如果有就直接返回给A;如果没有就向所有端口发送ARP,该网段的主机的MAC如果与B的MAC地址不同就丢弃,如果主机B收到了该ARP就马上返回相同格式的ARP。
- 这时主机A已经有了B的MAC地址,就把B的MAC地址封装到ICMP报中,向主机B发送一个回显请求。
- 主机B收到该报文后,知道是主机A的一个回显请求,就会返回一个相同格式的报文。这样就完成了同一个网段的Ping的过程。
不同网段:
- 主机A要去Ping一个不同网段的主机C,主机A会去找网关转发
- 如果主机A不知道网关的MAC地址,就会发送一个ARP广播一下,这样就知道了网关的MAC地址
- 网关收到主机A的ICMP报文,根据上面的目的IP,会去查找路由表,找到一个出口指针,给主机C发送一个ICMP报文
- 如果网关不知道主机C的MAC地址,就会给网关内所有的主机发送一个ARP,从而找到主机C的MAC地址
- 主机C收到主机A的报文就会给主机A发送一个回显请求。这样就完成了不同网段的Ping的请求
1.7 websocket
全双工通信,特点:
- 推送功能:支持服务器向客户端推送数据的推送功能
- 减少通信量:一直保持连接
- HTTP连接建立后,需要完成一次握手动作
- 握手---请求:用到HTTP的upgrade字段告知服务器通信协议发生变化
- 握手---响应:对于之前的请求返回状态码101 switching protocols
- 成功握手确立WebSocket连接之后,通信不再使用HTTP的数据帧,而采用WebSocket独立的数据帧
二、HTTPS协议
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
2.1 HTTP缺点
通信使用明文可能会被窃听,解决方式:
- 通信加密。SSL和TLS组合使用
- 内容加密
不验证通信方身份就可能遭遇伪装,解决方式:查明对手的证书
无法证明报文完整性,可能已遭篡改:数字签名,MD5并不可靠,应用HTTPS。
2.2 HTTP+加密+认证+完整性保护=HTTPS
2.3 HTTPS是身披SSL外壳的HTTP
2.4 HTTP采用混合加密机制
2.5 证明公开密钥正确性的证书
2.6 SSL协议
慢:
- 通信慢。
- 由于大量消耗CPU及内存等资源,导致处理速度变慢。
- SSL必须进行加密处理。
三、HTTPS和HTTP的区别
1. https协议需要到ca申请证书,一般免费证书很少,需要交费。
2. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。