基础知识iOS开发之常用技术点Android开发

网络基本知识点汇总

2019-02-13  本文已影响307人  码上就说

1.TCP/IP五层网络架构
2.OSI七层网络架构
3.TCP 3次握手,四次挥手
4.TCP/UDP协议区别
5.浏览器工作原理:从 URL 输入到页面展现到底发生了什么?
6.chromium浏览器内核架构
7.http1.1 vs http2.0
8.http2.0 vs quic
9.https的加密过程
10.对称加密和非对称加密
11.TLS1.3 vs TLS1.2

1.TCP/IP五层网络架构

TCP/IP层 网络设备
应用层 HTTP协议工作的层
传输层 四层交换机,也有工作在四层的路由器
网络接口层 路由器,3层交换机
数据链路层 网桥、以太网交换机、网卡
物理层 中继器、集线器等

2.OSI七层网络架构

OSI层 功能 TCP/IP协议
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP, HTTP, SNMP, FTP, SMTP, DNS, Telnet
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 解除或者建立与其他节点的联系 没有协议
传输层 提供端对端的接口 TCP, UDP
网络层 为数据包选择路由 IP, ICMP, RIP, OSPF, BGP, IGMP
数据链路层 传输有地址的帧,错误检测功能 SLIP, CSLIP, PPP, ARP, RARP, MTU
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110, IEEE802

除了层的数量之外,开放式系统互联(OSI)模型与TCP/IP协议有什么区别?

3.TCP 3次握手,四次挥手

TCP建立连接时要经过3次握手:


三次握手建立连接时,发送方再次发送确认的必要性?
主要是为了防止已失效的连接请求报文段突然又传到了B,因而产生错误。假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结 点长时间滞留了,一直延迟到连接释放以后的某个时间才到达B,本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误认为是A又发出一次 新的连接请求,于是就向A发出确认报文段,同意建立连接。假定不采用三次握手,那么只要B发出确认,新的连接就建立了,这样一直等待A发来数据,B的许多 资源就这样白白浪费了。

TCP关闭连接是需要4次挥手:


四次挥手释放连接时,等待2MSL的意义?
第一,为了保证A发送的最有一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK 报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。
第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最有一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。

4.TCP/UDP协议区别

5.浏览器工作原理:从 URL 输入到页面展现到底发生了什么?

  • 1.键盘或触屏输入URL并回车确认
  • 2.URL解析/DNS解析查找域名IP地址
  • 3.网络连接发起HTTP请求
  • 4.HTTP报文传输过程
  • 5.服务器接收数据
  • 6.服务器响应请求
  • 7.服务器返回数据
  • 8.客户端接收数据
  • 9.浏览器加载/渲染页面
  • 10.打印绘制输出

DNS查询分为*递归查询和迭代查询两种。

6.chromium浏览器内核架构

image.png

Blink中采用了多进程架构,它的优点如下

Blink中包含的主要进程如下:

Browser和Renderer通信过程:

7.http1.1 vs http2.0

*(1)HTTP/2采用二进制格式而非文本格式
这个功能非常有效,因为二进制格式会加上frame,frame有序,这样我们不必像之前传输文本那样按序传输,可以直接并行传输,frame数据中包含序号,在服务端重组即可。
*(2)HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
同域名下可以复用一个连接,Apache支持的并发数是300,这次可以最大程度的支持并发。
*(3)使用报头压缩,HTTP/2降低了开销,HPack压缩算法。
*(4)HTTP/2让服务器可以将响应主动“推送”到客户端缓存中

8.http2.0 vs quic

*(1)减少了 TCP 三次握手及 TLS 握手时间。

  • 第一次建立连接需要1RTT,之后需要0RTT,当客户端首次发起QUIC连接时,客户端想服务器发送一个client hello消息,服务器回复一个server reject消息。该消息中有包括server config,类似于TLS1.3中的key_share交换。这需要产生1-RTT
    当客户端获取到server config以后,就可以直接计算出密钥,发送应用数据了,可以认为是0-RTT。
    因此,QUIC握手除去首次连接需要产生1-RTT,理论上,后续握手都是0-RTT的。

*(2)改进的拥塞控制。
*(3)避免队头阻塞的多路复用。

  • SPDY 和 HTTP/2 协议现在都支持将页面的多个数据(如图片、js 等)通过一个数据链接进行传输。该特性能够加快页面组件的传输速度,但是对于 TCP 协议来说,这会遇到前序包阻塞的问题。这是由于 TCP 协议在处理包时是有严格顺序的,当其中一个数据包遇到问题,TCP 连接需要等待这个包完成重传之后才能继续进行。因此,即使逻辑上一个 TCP 连接上并行的在进行多路数据传输,其他毫无关联的数据也会因此阻塞。



    QUIC 协议直接通过底层使用 UDP 协议天然的避免了该问题。由于 UDP 协议没有严格的顺序,当一个数据包遇到问题需要重传时,只会影响该数据包对应的资源,其他独立的资源(如其他 css、js 文件)不会受到影响。


*(4)连接迁移。

  • 底层协议切换到 UDP 协议之后的另一大好处是,连接不再依赖于来源 IP。
    对于 TCP 协议来说,标识一个 TCP 连接需要 4 个参数,既来源 IP、来源端口、目的 IP 和目的端口。其中的任一参数改变,TCP 连接就需要重新创建。

这对于传统网络来说影响不大,因为来源和目的 IP 相对固定。但是在无线网络中,情况就大不相同了。设备在移动过程中,可能会因为网络切换(如从 WIFI 网络切换到 4G 网络环境),导致 TCP 连接需要重新创建。
QUIC 协议使用了 UDP 协议,不再需要这四元组参数。同时 QUIC 协议实现了自己的会话标记方式,称为连接 UUID。当设备网络环境切换时,连接 UUID 不会发生变化,因此无需重新进行握手。

*(5)前向冗余纠错。

  • QUIC 协议有一个非常独特的特性,称为向前纠错(Forward Error Correction),每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通过其他包的冗余数据直接组装而无需重传。
    向前纠错牺牲了每个数据包可以发送数据的上限,但是减少了因为丢包导致的数据重传,因为数据重传将会消耗更多的时间(包括确认数据包丢失、请求重传、等待新数据包等步骤的时间消耗)。

参考:QUIC原理

QUIC 协议的主要目的,是为了整合 TCP 协议的可靠性和 UDP 协议的速度和效率。



QUIC 协议内置了 TLS 栈,实现了自己的传输加密层,而没有使用现有的 TLS 1.2。同时 QUIC 还包含了部分 HTTP/2 的实现。
QUIC 底层通过 UDP 协议替代了 TCP,上层只需要一层用于和远程服务器交互的 HTTP/2 API。这是因为 QUIC 协议已经包含了多路复用和连接管理,HTTP API 只需要完成 HTTP 协议的解析即可。

9.https的加密过程

最近重新了解了下HTTP和HTTPS: 首先二者都是网络传输协议;HTTPS在传输过程中是可以通过加密来保护数据安全的,以免用户敏感信息被第三方获取。 可以说HTTPS是HTTP的升级版、安全版。下面我们就简单看下HTTPS的加密过程,先看下图。


10.对称加密和非对称加密

对称加密(Symmetric Cryptography),又称私钥加密。
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key),这种方法在密码学中叫做对称加密算法。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。

非对称加密(Asymmetric Cryptography),又称公钥加密。
非对称密钥加密,它需要使用“一对”密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。
非对称密钥加密的使用过程:


(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。


11.TLS1.3 vs TLS1.2

TLS(Transport Layer Security Protocol,传输层安全协议)主要目的是提供隐私和数据两个通信应用之间的完整性。该协议由两层组成:TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
我们熟知的一般是SSL(Secure Sockets Layer 安全套接层),TLS是SSL标准化的协议。TLS处于应用层和传输层之间。


TLS 1.3 与之前的协议有较大差异,主要在于:

参考:https://www.jianshu.com/p/efe44d4a7501

TLS1.3的核心优势是:1.访问速度更快;2.安全性更高。
TLS1.2握手流程:


从上图可以看出,使用 TLS 1.2 需要两次往返( 2-RTT )才能完成握手,然后才能发送请求。

TLS1.3握手流程:



TLS 1.3 的握手不再支持静态的 RSA 密钥交换,这意味着必须使用带有前向安全的 Diffie-Hellman 进行全面握手。从上图可以看出,使用 TLS 1.3 协议只需要一次往返( 1-RTT )就可以完成握手。
相比 TLS 1.2,TLS 1.3 的握手时间减半。这意味着访问一个移动端网站,使用 TLS 1.3 协议,可能会减少将近 100ms 的时间。

上一篇 下一篇

猜你喜欢

热点阅读