持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
1.计算机网络自顶向下有几层
- 应用层。 可理解成:App
- 传输层。 可理解成:端口
- 网络层。 可理解成:IP地址
- 数据链路层。可理解成:MAC地址
- 物理层。 可理解成:电缆
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通信存在两个问题:
- 通信使用明文,可能被窃听。
- 不验证通信方的身份,可能遭遇伪装。
HTTPS=HTTP+SSL
HTTPS的安全性是由SSL来保证的。
- 对称加密
加密和解密使用的是一个密钥,只要保证密钥的安全,通信就是安全的。
- 非对称加密
加密采用公钥,可以给任何人。解密使用私钥,只能自己使用。
HTTPS通信过程,采用的是混合加密方式,也就是对称加密和非对称加密混合的方式。
- 摘要算法
确定收到的消息的完整性。
将数据压缩并通过摘要算法生成一段“摘要”字符串。发消息时携带摘要,收到消息后重新计算一下消息的摘要,如果两者相等,就可以确定消息的完整性。
- 数字签名
数字签名是用来确定消息的发送方的身份。
签名使用私钥加密,谁都可以拿到,但只有拿到私钥对应的公钥才可以解开。也就是:私钥加密,公钥解密。
5.如何理解UDP和TCP
UDP:一种协议,将应用层的数据,加上头部后,直接全部传递给网络层。
TCP:传输控制协议。将应用层传递下来的数据看成无结构的字节流来发送。会根据当前网络的拥塞状态来确定每个报文段的大小。但报文首部 有20个字节,额外开销大。
6.OSI七层模型
7.DNS是什么
DNS,是一套域名系统,负责将域名翻译成IP地址。
8.CDN是什么
CDN是内容分发网络。
构建在现有网络上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心的负载均衡、内容分发、调度等模块,使用户就近获取资源,降低网络拥堵,提高用户的访问速率命中率。
简单说,根据用户位置分配最近资源。
9.说说HTTP1.0,1.1,2.0的区别。
- HTTP1.0
浏览器与服务器保持短暂的连接,浏览器每次请求都需要与服务器建立一个TCP链接。
- HTTP1.1
引入持久链接,即TCP默认不关闭,可以被多个请求复用TCP。
- HTTP2.0
采用二进制格式,而非文本格式传输数据。
对报文头部数据进行压缩。
引入服务器推送,允许服务器发送资源给客户端。
10常见状态码
11从输入URL到回车后发生的行为
- URL解析
- DNS查询
- TCP链接
- HTTP请求
- 响应请求
- 页面渲染
12三次握手四次挥手
三次握手
三次握手,建立一个TCP链接时,需要客户端和服务端总共发送三个包。确认双方的接收和发送能力是否正常。
- 第一次握手。客户端向服务端发包。确认客户端发送能力,服务端接收能力是否正常。
- 第二次握手。服务端向客户端发包。确认服务端发送能力,客户端接收能力是否正常。
- 第三次握手。二次握手无法确认客户端接受的包是否无误,即无法验证客户端的接收能力是否正常。第三次握手客户端发包,再次让服务端接收。
三次握手之后,双方建立链接。
四次挥手
tcp中止一个链接,需要四次挥手。
- 第一次挥手。客户端向服务端发送一个FIN报文,之后停止发送数据,等待服务端确认。
- 第二次挥手。服务端收到FIN后,向客户端端发送一个ACK报文。
- 第三次挥手。如果服务端也想断开链接,向客户端发送一个FIN报文。
- 第四次挥手。客户端接收到FIN后一样发动一个ACK报文。服务端收到ACK后关闭连接。
13.WebSocket
WebSocket是一种网络传输协议。可在单个TCP连接上实现双工通信。可在节省资源和带宽的同时实现即时通讯。
服务器与客户端只需一次握手就可以建立连接,进行双向数据传输。