##网络通信
> 网络通信方面,一些基础的协议概念。比如TCP的握手挥手问题,Http和Https的区别以及Https传输过程中用到的加密方式,Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化等。
### 网络的七层模型(从底层往上)
1. 物理层:网卡、集线器
2. 数据链路层:交换机
3. 网络层:路由器
4. 传输层
5. 会话层
6. 表示层
7. 应用层
###TCP和UDP的区别
* TCP:传输控制协议,基于连接的,需要三次握手
- 优点:可靠稳定,传递数据前会有三次握手来建立连接,传输结束后
- 缺点:慢、效率低、占用系统资源高
* UDP:用户数据报协议,基于无连接的
- 优点:快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制
- 缺点:不可靠不稳定,在数据传输的过程中,如果网络质量不好,就会很容易丢包
###TCP的三次握手
1. 第一次握手:建立连接的时候,客户端A发送SYN包(SYN=j)到服务端,进入一个SYN_SEND的状态,等待服务器确认
2. 第二次握手:服务器收到客户端发来的SYN包后,确认客户端的SYN(ACK=j+1),自己也发送一个SYN包(SYN=k),进入一个SYN_RECV状态
3. 第三次握手:客户端接收到服务器的SYN+ACK包后,向服务器发送确认包ACK(ACK= k+1),此包发送完毕后 客户端和服务器都进入状态,完成三次握手
###TCP的四次握手
1. 客户端想服务器发送一个FIN,用来关闭客户A到服务器之间的数据连接
2. 服务器接受到FIN,发回一个ACK,确认序号加一
3. 服务器关闭与客户端的连接,发送一个FIN给客户端
4. 客户端发回ACK保温确认,并将确认序号加一
###HTTP和HTTPS的区别
* http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
* https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
###HTTPS的加密方式
堆成加密和非对称加密结合,将对称加密的秘钥用非对称加密的公钥进行加密,发送出去,接受方接收到后用密钥解密出对称加密的密钥
1. A向银行请求一笔交易,其浏览器生成一个随机数作为对称密钥
2. A向银行请求一个公钥
3. 银行打给A公钥
4. A用公钥对对称加密的密钥进行加密然后发送给银行
5. 银行用密钥对对发来的对称密钥解密
6. A和银行可以进行交易了
### Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化
- SPDY基于HTTP和HTTPS的优点于一体的传输协议,特点主要有:
1. 降低延迟,针对HTTP的高延迟,SPDY使用多路复用,多路复用通过多个请求stream共享一个tcp连接的方式
2. 请求优先级:多路复用带来一个问题,设置连接共享的基础上可能会导致关键请求被阻塞,SPDY允许给每个request设置优先级,首页html内容是优先展示的,之后是各种静态资源文件,脚本文件等加载,保证用户第一时间看一看到页面
3. Header压缩
4. 基于HTTPS的加密协议,大大提高了传输数据的 可靠性
5. 服务端推送
- HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS;HTTP2.0消息头的压缩算法采用HPCK,而非SPDY采用的DEFLATE,优化为以下几点:
1. 对Hearder压缩,HTTP1.X的头消息中带有大量信息,而且每次都要重复发送,2.0使用encode来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免重复的Header,又减少了需要传输的大小
2. 服务端推送
3. 多路复用,允许同时通过单一的HTTP/2连接发起多重的请求-响应消息
###SSL/TLS
* SSL(Secure Socket Layer):安全套接字层
* TLS(Transport Layer Security):传输层安全协议,就是SSL的标准化
> 网络通信方面,一些基础的协议概念。比如TCP的握手挥手问题,Http和Https的区别以及Https传输过程中用到的加密方式,Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化等。
### 网络的七层模型(从底层往上)
1. 物理层:网卡、集线器
2. 数据链路层:交换机
3. 网络层:路由器
4. 传输层
5. 会话层
6. 表示层
7. 应用层
###TCP和UDP的区别
* TCP:传输控制协议,基于连接的,需要三次握手
- 优点:可靠稳定,传递数据前会有三次握手来建立连接,传输结束后
- 缺点:慢、效率低、占用系统资源高
* UDP:用户数据报协议,基于无连接的
- 优点:快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制
- 缺点:不可靠不稳定,在数据传输的过程中,如果网络质量不好,就会很容易丢包
###TCP的三次握手
1. 第一次握手:建立连接的时候,客户端A发送SYN包(SYN=j)到服务端,进入一个SYN_SEND的状态,等待服务器确认
2. 第二次握手:服务器收到客户端发来的SYN包后,确认客户端的SYN(ACK=j+1),自己也发送一个SYN包(SYN=k),进入一个SYN_RECV状态
3. 第三次握手:客户端接收到服务器的SYN+ACK包后,向服务器发送确认包ACK(ACK= k+1),此包发送完毕后 客户端和服务器都进入状态,完成三次握手
###TCP的四次握手
1. 客户端想服务器发送一个FIN,用来关闭客户A到服务器之间的数据连接
2. 服务器接受到FIN,发回一个ACK,确认序号加一
3. 服务器关闭与客户端的连接,发送一个FIN给客户端
4. 客户端发回ACK保温确认,并将确认序号加一
###HTTP和HTTPS的区别
* http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。
* https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
###HTTPS的加密方式
堆成加密和非对称加密结合,将对称加密的秘钥用非对称加密的公钥进行加密,发送出去,接受方接收到后用密钥解密出对称加密的密钥
1. A向银行请求一笔交易,其浏览器生成一个随机数作为对称密钥
2. A向银行请求一个公钥
3. 银行打给A公钥
4. A用公钥对对称加密的密钥进行加密然后发送给银行
5. 银行用密钥对对发来的对称密钥解密
6. A和银行可以进行交易了
### Http1.0、Http2.0和SPDY之间的区别,Http2.0做了哪些优化
- SPDY基于HTTP和HTTPS的优点于一体的传输协议,特点主要有:
1. 降低延迟,针对HTTP的高延迟,SPDY使用多路复用,多路复用通过多个请求stream共享一个tcp连接的方式
2. 请求优先级:多路复用带来一个问题,设置连接共享的基础上可能会导致关键请求被阻塞,SPDY允许给每个request设置优先级,首页html内容是优先展示的,之后是各种静态资源文件,脚本文件等加载,保证用户第一时间看一看到页面
3. Header压缩
4. 基于HTTPS的加密协议,大大提高了传输数据的 可靠性
5. 服务端推送
- HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS;HTTP2.0消息头的压缩算法采用HPCK,而非SPDY采用的DEFLATE,优化为以下几点:
1. 对Hearder压缩,HTTP1.X的头消息中带有大量信息,而且每次都要重复发送,2.0使用encode来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免重复的Header,又减少了需要传输的大小
2. 服务端推送
3. 多路复用,允许同时通过单一的HTTP/2连接发起多重的请求-响应消息
###SSL/TLS
* SSL(Secure Socket Layer):安全套接字层
* TLS(Transport Layer Security):传输层安全协议,就是SSL的标准化