【面试系列】—— 网络通信

##网络通信
> 网络通信方面,一些基础的协议概念。比如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的标准化



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值