前端开发必备计算机网络基础知识

187 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

1.计算机网络自顶向下有几层

  1. 应用层。 可理解成:App
  2. 传输层。 可理解成:端口
  3. 网络层。 可理解成:IP地址
  4. 数据链路层。可理解成:MAC地址
  5. 物理层。 可理解成:电缆

2.GET和POST的区别

两者都是http协议发送请求的方式。

  • GET一般用于数据的获取。POST可以用来发送获取、增加、删除数据等的操作。
  • GET请求得到的数据会被浏览器存储下来;POST不会,需要手动设置。
  • GET请求的参数也可以保存在历史记录里;POST不会。
  • GET请求携带的参数通过url传递;POST参数放在request body中。
  • GET的参数有长度限制,POST没有。
  • GET携带的参数是明文的,不安全。
  • POST会在浏览器回退时重新发送请求。

3.什么是HTTP与HTTPS?

HTTP即超文本运输协议,是网络通讯的一种协议。

但是HTTP发送请求时使用的是明文传输,所以使用HTTPS,通过SSL证书来验证服务器身份,并为浏览器和服务器之间的通信加密。

但是HTTPS由于多次握手和加密,性能不如HTTP。

4.HTTPS是如何保证安全性能的?

HTTP通信存在两个问题:

  1. 通信使用明文,可能被窃听。
  2. 不验证通信方的身份,可能遭遇伪装。

HTTPS=HTTP+SSL

HTTPS的安全性是由SSL来保证的。

image.png

  • 对称加密

加密和解密使用的是一个密钥,只要保证密钥的安全,通信就是安全的。

  • 非对称加密

加密采用公钥,可以给任何人。解密使用私钥,只能自己使用。

HTTPS通信过程,采用的是混合加密方式,也就是对称加密和非对称加密混合的方式。

  • 摘要算法

确定收到的消息的完整性。

将数据压缩并通过摘要算法生成一段“摘要”字符串。发消息时携带摘要,收到消息后重新计算一下消息的摘要,如果两者相等,就可以确定消息的完整性。

  • 数字签名

数字签名是用来确定消息的发送方的身份。

签名使用私钥加密,谁都可以拿到,但只有拿到私钥对应的公钥才可以解开。也就是:私钥加密,公钥解密。

5.如何理解UDP和TCP

UDP:一种协议,将应用层的数据,加上头部后,直接全部传递给网络层。

TCP:传输控制协议。将应用层传递下来的数据看成无结构的字节流来发送。会根据当前网络的拥塞状态来确定每个报文段的大小。但报文首部 有20个字节,额外开销大。

6.OSI七层模型

image.png

7.DNS是什么

DNS,是一套域名系统,负责将域名翻译成IP地址。

8.CDN是什么

CDN是内容分发网络。

构建在现有网络上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心的负载均衡、内容分发、调度等模块,使用户就近获取资源,降低网络拥堵,提高用户的访问速率命中率。

简单说,根据用户位置分配最近资源。

9.说说HTTP1.0,1.1,2.0的区别。

  • HTTP1.0

浏览器与服务器保持短暂的连接,浏览器每次请求都需要与服务器建立一个TCP链接。

  • HTTP1.1

引入持久链接,即TCP默认不关闭,可以被多个请求复用TCP。

  • HTTP2.0

采用二进制格式,而非文本格式传输数据。

对报文头部数据进行压缩。

引入服务器推送,允许服务器发送资源给客户端。

10常见状态码

image.png

11从输入URL到回车后发生的行为

  1. URL解析
  2. DNS查询
  3. TCP链接
  4. HTTP请求
  5. 响应请求
  6. 页面渲染

12三次握手四次挥手

三次握手

三次握手,建立一个TCP链接时,需要客户端和服务端总共发送三个包。确认双方的接收和发送能力是否正常。

  • 第一次握手。客户端向服务端发包。确认客户端发送能力,服务端接收能力是否正常。
  • 第二次握手。服务端向客户端发包。确认服务端发送能力,客户端接收能力是否正常。
  • 第三次握手。二次握手无法确认客户端接受的包是否无误,即无法验证客户端的接收能力是否正常。第三次握手客户端发包,再次让服务端接收。

三次握手之后,双方建立链接。

image.png

四次挥手

tcp中止一个链接,需要四次挥手。

  • 第一次挥手。客户端向服务端发送一个FIN报文,之后停止发送数据,等待服务端确认。
  • 第二次挥手。服务端收到FIN后,向客户端端发送一个ACK报文。
  • 第三次挥手。如果服务端也想断开链接,向客户端发送一个FIN报文。
  • 第四次挥手。客户端接收到FIN后一样发动一个ACK报文。服务端收到ACK后关闭连接。

image.png

13.WebSocket

WebSocket是一种网络传输协议。可在单个TCP连接上实现双工通信。可在节省资源和带宽的同时实现即时通讯。

服务器与客户端只需一次握手就可以建立连接,进行双向数据传输。