前端面试(网络方向)

计算机网络

前端开发者时刻在与网络打交道,理解网络的基础原理,可以更快速地定位实际开发中遇到的问题。本章主要介绍几种常见的协议,例如HTTP、TCP、HTTPS等,力图使读者能对这些协议有更感性的认识。除此以外,还介绍了一种经常会讨论到的RESTful架构风格,以及一种在未来将会普及的HTTP/2.0协议。

1.什么是MAC地址?

答案:MAC地址,也称为物理地址,用来定义网络设备的位置,它总共有48位,以十六进制表示,由两大块组成:IEEE(电气电子工程师学会)分配给厂商的识别码和厂商内部定义的唯一识别码。

2,什么是IP地址?答案:IP地址是指互联网协议地址,是为网络中的每台主机(例如计算机、路由器等)分配的一个数字标签。IP地址应用在OSI参考模型中的网络层,保证通信的正常。常用的IP地址分为两大类:IPv4与IPv6。

在浏览器中,一个页面从输入URL到加载完成,都有哪些步骤?

答案:为了便于理解,将这个过程简单地分为5步,如下所列:
(1)域名解析,根据域名找到服务器的IP地址
(2)建立TCP连接,浏览器与服务器经过3次握手后建立连接。
(3)浏览器发起HTTP请求,获取想要的资源。
(4)服务器响应HTTP请求,返回指定的资源。
(5)浏览器渲染页面,解析接收到的HTML、CSS和JavaScript文件。

GET和POST的区别有哪些?

答案:主要区别有4个方面,如下所列:
(1)语义不同**,GET是获取数据,POST是提交数据**。

(2)**HTTP协议规定GET比POST安全,因为GET只做读取,不会改变服务器中的数据。**但这只是规范,并不能保证请求方法的实现也是安全的。

(3)GET请求会把附加参数带在URL上,而POST请求会把提交数据放在报文内。在浏览器中,URL长度会被限制,所以GET请求能传递的数据有限,但HTTP协议其实并没有对其做限制,都是浏览器在控制。

4)HTTP协议规定GET是幂等的,而POST不是,所谓幂等是指多次请求返回相同的结果。实际应用中,并不会这么严格,当GET获取动态数据时,每次的结果可能会有所不同。

三次握手

通信两端(即客户端和服务器)会先经历三次握手,然后才能建立连接,具体过程如下所列,图6-14描绘了这个过程。

(1)客户端发送一个携带SYN标志位的包,请求建立连接。
(2)服务器响应一个携带SYN和ACK标志位的包,同意建立连接。(3)客户端再发送一个携带ACK标志位的包,表示连接成功,开始进行数据传输。

将三次握手翻译成日常对话就相当于下面这样:
客户端:“喂,听得到我说话吗?”
服务器:“听到了,你能听到我说话吗?”
客户端:“很清楚,我们开始聊天吧。”

四次挥手

当要断开连接时,通信两端就会进行四次挥手的操作。由于连接是双向的,所以客户端和服务器都要发送FIN标志位的包,才算彻底断开了连接,具体过程如下所列,图6-15描绘了这个过程。

(1)客户端发送一个携带FIN标志位的包,请求断开连接。
(2)服务器响应一个携带ACK标志位的包,同意客户端断开连接。(3)服务器再发送一个携带FIN标志位的包,请求断开连接。
(4)客户端最后发送一个携带ACK标志位的包,同意服务器断开连接。

将四次挥手翻译成日常对话就相当于下面这样:
客户端:“我要断开连接了。”
服务器:“好的。”
服务器:“我也要断开连接了。
”客户端:“好的。”

加密

在密码学中,加密是指将明文转换为难以理解的密文;解密与之相反,是把密文换回明文。加密和解密都由两部分组成:算法和密钥。加密算法可以分为两类:对称加密和非对称加密。

1.对称加密:对称加密在加密和解密的过程中只使用一个密钥,这个密钥叫对称密钥(symmetric key),也叫共享密钥,对称加密的优点是计算速度快,但缺点也很明显,就是通信两端需要分享密钥。客户端和服务器在进行对话前,要先将对称密钥发送给对方,在传输的过程中密钥有被窃取的风险,一旦被窃取,那么密文就能被轻松翻译成明文,加密保护形同虚设。

2,非对称加密非对称加密在加密的过程中使用公开密钥(public key),在解密的过程中使用私有密钥(private key)。加密和解密的过程也可以反过来,使用私有密钥加密,再用公开密钥解密。非对称加密的缺点是计算速度慢,但它很好地解决了对称加密的问题,避免了信息泄露。通信两端如果都使用非对称加密,那么各自都会生成一对密钥,私钥留在身边,公钥发送给对方,公钥在传输途中即使被人窃取,也不用担心,因为没有私钥就无法轻易解密。在交换公钥后,就可以用对方的公钥把数据加密,开始密文对话。

HTTPS采用混合加密机制,将两种加密算法组合使用,充分利用各自的优点,博采众长。在交换公钥阶段使用非对称加密,在传输报文阶段使用对称加密。

数字签名

数字签名是一段由发送者生成的特殊加密校验码,用于确定报文的完整性。

签名和校验的过程总共分为5步:
(1)发送方用摘要算法对报文进行提取,生成一段摘要。
(2)然后用私钥对摘要进行加密,加密后的摘要作为数字签名附加在报文上,一起发送给接收方。
(3)接收方收到报文后,用同样的摘要算法提取出摘要。
(4)再用接收到的公钥对报文中的数字签名进行解密。
(5)如果两个摘要相同,那么就能证明报文没有被篡改。

在这里插入图片描述

1.HTTPS有哪些缺点?

答案:HTTPS有如下4个缺点:
(1)通信两端都需要进行加密和解密,会消耗大量的CPU、内存等资源,增加了服务器的负载

(2)加密运算和多次握手降低了访问速度

(3)在开发阶段,加大了页面调试难度。由于信息都被加密了,所以用代理工具的话,需要先解密然后才能看到真实信息。

(4)用HTTPS访问的页面,页面内的外部资源都得用HTTPS请求,包括脚本中的AJAX请求。

什么是运营商劫持?有什么办法预防?

运营商为了牟取经济利益,有时候会劫持用户的HTTP访问,最明显的特征就是在页面上植入广告,有些是购物广告,有些却是淫秽广告,非常影响界面体验和公司形象。
为了避免被劫持,可以让服务器支持HTTPS协议,HTTPS传输的数据都被加密过了,运营商就无法再注入广告代码,这样页面就不会再被劫持.

HTTPS

HTTPS(HTTP Secure)是一种构建在SSL或TLS上的HTTP协议(,简单地说,HTTPS就是HTTP的安全版本

之所以说HTTP不安全,是由于以下3个原因导致的:
(1)数据以明文传递,有被窃听的风险。
(2)接收到的报文无法证明是发送时的报文,不能保障完整性,因此报文有被篡改的风险
(3)不验证通信两端的身份,请求或响应有被伪造的风险。

发布了71 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hello250sunshine/article/details/105322849
今日推荐