- HTTP 和 HTTPS 的区别
- 端口不同:https的端口是443 ,而http的端口是80
- http传输是明文的,而https是用ssl加密的,https的安全性更高(https也就是在http上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。SSL中文交“安全套阶层”,后来由于广泛应用,SSL标准化之后就改名为TLS了)
- https是需要申请证书的,而http不需要
- 什么是HTTP 和 HTTPS
- https 是 http的安全版本,也叫超文本安全传输,https是有加密传输协议的通道,并且ssl提供了安全加密基础,https主要是用于http的传输,并且在HTTP 和 TCp之间有一个特殊的加密/身份验证
- http是一种普通的传输协议,在互联网上,所有的文件都要遵守这个HTTP协议,同时超文本也是http传输的基本部分,实现客户端和服务器的相互请求
- HTTP
- 网络七层协议:
- 物理层:物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织指定的标准。连接头、帧、帧的作用、电流、编码及光调制等都属于各种物理层规范中的内容
- 数据链路层:它顶替了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关
- 网络层:这层对端对端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了如何讲一个包分解成更小的报的分段方法
- 传输层:这层的功能包含是否选择差错恢复协议还是无差错恢复协议,及在同一个主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的艺的重新排序功能
- 会话层:它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在值完成谦虚消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果标识层收到了所有的数据,则用户数据代表标识层
- 标识层:这一层的主要功能是定义数据格式及加密。例如:FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,name发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方讲吧文本从发送方的字符集转换成标准的ASCII转换成接收方计算机的字符集
- 应用层:与其他计算机通讯的一个应用,它是对应应用程序的通信服务的。例如:一个没有通信功能的子处理程序就不能执行通信的代码,从事子处理工作的程序员也不关心OSI的第七层。但是如果添加了一个传输文件的选项,那么子处理器的程序员就需要实现OSI的第七层
- HTTP协议
- HTTP 协议对应于应用层,TCP协议对应于传输层,IP协议对应于网络层,HTTP协议是基于TCp连接的,三者本质上没有可比性。
- TCP/IP 是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,是它的一组接口
- TCP/IP 五层协议
- TCP/IP 五层模型的协议分为:应用层、传输层、网络层、数据链路层、和物理层。
- 中继器、集线器、还有我们常说的双绞线也工作在物理层;网桥(目前已很少使用)、以太网交换机(二层路由器)、网卡(其实网卡的一般工作的物理层、一般工作在数据链路层)在数据链路层;路由器、三层交换机在网络层;传输层主要是四层交换机、也有工作在四层的路由器
- TCP/IP 协议中的应用层处理七层模型中的第五层、第六层和第七层的功能。TCP/IP 协议中的传输层并不能总是保证在传输层可靠的传输数据包,而七层模型可以做到。
- TCP 和 UDP
- TCP : 面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、熟读满,建立连接需要开销较多(时间,系统资源)
- UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快
- HTTP 1.0、1.1、 2.0 和 3.0 的区别
-
HTTP 1.0
- 无状态,无连接;
- 短连接:每次发送请求都要重新建立tcp请求,即三次握手,非常浪费性能;
- 无host头域,也就是http请求头里的host;
- 不允许断点续传,而且不能只传输对象的一部分,要求传输整个对象。
-
HTTP 1.1
- 长连接,流水线,使用connection:keep-alive使用长连接;
- 请求管道化;
- 增加缓存处理(新的字段如cache-control);
- 增加Host字段,支持断点传输等;
- 由于长连接会给服务器造成压力。
-
HTTP 2.0
- 二进制分帧;
- 多路复用(或连接共享),使用多个stream,每个stream又分帧传输,使得一个tcp连接能够处理多个http请求;
- 头部压缩,双方各自维护一个header的索引表,使得不需要直接发送值,通过发送key缩减头部大小;
- 服务器推送(Sever push)。
-
HTTP 3.0
- 基于google的QUIC协议,而quic协议是使用udp实现的;
- 减少了tcp三次握手时间,以及tls握手时间;
- 解决了http 2.0中前一个stream丢包导致后一个stream被阻塞的问题;
- 优化了重传策略,重传包和原包的编号不同,降低后续重传计算的消耗;
- 连接迁移,不再用tcp四元组确定一个连接,而是用一个64位随机数来确定这个连接;
- 更合适的流量控制
-
- 网络七层协议:
- HTTPS
- 实现原理
- HTTPS 协议之所以安全是因为HTTPS协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实:HTTPS在内容传输的加密上使用的是对称加密,非对称加密值作用在证书校验阶段
- 为什么数据传输是用对称加密
- 非对称加密的加解密效率低,网站中存在大量的交互,所以非对称的效率是无法接受的
- 在HTTPS的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS中内容传输加密采取的是对称加密
- 为什么要使用CA 证书
- 防止“中间人”攻击,同时可以为网站提供身份证明
- 实现原理