前端面试题——网络篇


前言

准备了一些网络部分高频面试题,有需要的小伙伴可以收藏,需要的时候看看,也会持续更新。


IPv4和IPv6的区别

1.地址空间不同

  • ipv4 使用 32 位地址,可分配的地址空间为 2^32 个,约 42 亿个独立 ip 地址
  • ipv6 使用 128 位地址,地址空间为 2^128 个,约 340 亿个独立 ip 地址

2.地址表示方法不同

  • ipv4 地址通常由四个十进制数字表示,例如 192.168.0.1
  • ipv6 地址由八个十六进制数字表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334

3.安全性不同

  • ipv4 缺乏内置的安全性,通常需要其他协议(如 IPSec)进行安全性增强
  • ipv6 则内置了 IPSec,支持端到端的安全通信

4.配置方式不同

  • ipv4 可以通过手动配置或 DHCP 自动配置
  • ipv6 则通常需要使用 ICMPv6 或 SLAAC(DHCPv6 的无状态地址自动配置)进行地址配置

OSI 模型

模型分层

1.物理层:物理层的作用就是保证双向传输,双向通讯

2.数据链路层:交换机就是工作在二层数据链路层。链路层主要有三个功能

  • 它提供了通讯过程中要用到的 MAC 地址
  • 负责数据帧的转发。数据链路层传输的数据被称为数据帧
  • 提供错误检测机制

3.网络层:路由器工作在第三层网络层。网络层一共有四个功能

  • 提供逻辑 IP 地址
  • 连接不同的媒介类型(内网和外网),使不同的媒介之间可以相互通信
  • 根据路由器运行的不同的路由协议选择最佳路径
  • 在选好的最佳路径上负责路由数据包

4.传输层:传输层的功能是它提供了端口号码的概念(port)

5.会话层:会话层的作用是负责在应用程序之间建立维护并拆除会话连接

6.表示层:表示层的作用是负责数据加密。其提供了四种常见的加密方式

  • 对称加密: 加密方与解密方使用相同的密钥
  • 非对称加密:一把私钥、N 种公钥
  • HASH 256 加密
  • 光密

7.应用层:给用户和抽象的网络之间提供一个接口,使用户可以通过使用应用程序、app 来使用整个的 6 层网络模型

功能

1.从网络功能的角度观察:下面 4 层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;

2.第 4 层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;

3.而上 3 层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下 4 层主要完成通信子网的功能,上 3 层主要完成资源子网的功能。

TCP/IP 分层协议

OSI 只是存在于概念和理论上的一种模型,缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用,后来进行简化后,合并了一些层,最终保留了 4 层,就是所谓的 TCP/IP 模型

  1. 链路层:这一层负责在物理网络连接上发送和接收数据。它包含了各种硬件协议,如HTTP、FTP、SMTP,这些协议在不同的应用程序中用于传输和接收数据。
  2. 网络层:对应于 OSI 七层参考模型的网络层。本层包含 IP 协议、RIP 协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
  3. 传输层:对应于 OSI 七层参考模型的传输层,它提供两种端到端的通信服务。其中 TCP 协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP 协议(User Datagram Protocol)提供不可靠的用户数据报服务。
  4. 应用层:对应于 OSI 七层参考模型的应用层和表示层。因特网的应用层协议包括 Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。

三次握手与四次挥手

三次握手四次挥手是TCP协议中建立连接和断开连接的过程,它们保证了数据传输的可靠性。

三次握手

三次握手是TCP协议中客户端和服务端建立连接的过程,目的是为了同步双方的序列号和确认号,并交换网络信息,确保双方都做好了数据通信的准备。过程如下:

  1. 第一次握手:客户端发送一个带有SYN(Synchronize)标志的数据包到服务器,表示希望建立连接。这个数据包还会包含客户端选择的初始序列号(ISN, Initial Sequence Number)。此时,客户端处于SYN_SENT状态。
  2. 第二次握手:服务器收到客户端的SYN后,会以自己的SYN作为应答,同时设置ACK(Acknowledgment)标志位,表示确认收到了客户端的SYN。服务器也会选择自己的初始序列号,并且将确认序号设置为客户端ISN加1,表示期望从客户端收到的下一个数据包的序列号。然后将这个数据包发送给客户端。这时,服务器进入SYN_RECV状态。
  3. 第三次握手:客户端收到服务器的SYN+ACK包后,会向服务器发送一个确认包,其中ACK标志位被设置为1,确认序号设置为服务器ISN加1,表示已经收到了服务器的SYN。同时,客户端可能还会携带数据在这个ACK包中。这个ACK包发送完毕后,客户端和服务器都进入了ESTABLISHED状态,表示连接已建立,可以开始数据传输。

简言

  1. 客户端发起连接请求(SYN),告知服务端想建立连接。
  2. 服务端收到后确认并同意连接(SYN+ACK),同时告诉客户端自己准备好通信。
  3. 客户端收到服务端确认后,最终确认连接已建立(ACK)。

四次挥手

四次挥手是TCP协议中客户端或服务端请求断开连接的过程,它确保了两个方向上的数据传输都已正确结束,且双方都同意关闭连接。过程如下:

  1. 第一次挥手:假设客户端想要关闭连接,它会发送一个FIN(Finish)标志的数据包给服务器,告诉服务器自己没有数据要发送了。客户端进入FIN_WAIT_1状态。
  2. 第二次挥手:服务器收到客户端的FIN后,会回复一个ACK确认包,确认序号为客户端发送的FIN的序列号加1,表示已经接收到客户端的关闭请求。此时,服务器可能还有数据需要发送给客户端,所以服务器不会立即关闭连接,而是进入CLOSE_WAIT状态。
  3. 第三次挥手:当服务器确定自己也没有数据需要发送给客户端时,会发送一个FIN给客户端,告诉客户端服务器也没有数据要发送了。服务器进入LAST_ACK状态。
  4. 第四次挥手:客户端收到服务器的FIN后,会发送一个ACK给服务器,确认序号为服务器发送的FIN的序列号加1,表示确认收到了服务器的关闭请求。客户端进入TIME_WAIT状态,等待一段时间(通常为2MSL,即两倍的最大报文生存时间)后关闭连接,以确保最后一个ACK能够到达服务器。服务器在收到这个ACK后,关闭连接,进入CLOSED状态。

简言

  1. 客户端请求断开连接(FIN)。
  2. 服务端确认收到断开请求(ACK),但可能还在处理数据发送。
  3. 服务端完成数据发送后,也请求断开(FIN)。
  4. 客户端确认服务端的断开请求(ACK),双方等待一段时间后彻底关闭连接。

总结

通过这三次握手和四次挥手的过程,TCP协议确保了连接的可靠建立与优雅关闭。

HTTP和HTTPS区别

HTTP

HTTP 是一种无状态的协议,用于传输超文本(如 HTML)数据。它是 Web 的基础协议。它使用 TCP/IP 作为传输协议,默认端口是 80。

HTTP版本

1.0版本

  • 无持久连接 :每个请求/响应对使用一个新的 TCP 连接,效率较低。
  • 缺乏缓存控制 :缓存机制不完善,导致性能问题。

1.1版本

改进:

  • 持久连接(Persistent Connections) :默认情况下复用 TCP 连接,减少了连接建立的开销。
  • 管道化(Pipelining) :允许在一个 TCP 连接上发送多个请求,但服务器必须按顺序处理,存在队头阻塞问题。
  • 缓存控制 :引入了更复杂的缓存控制头(如 Cache-Control)以改进缓存机制。
  • 范围请求(Range Requests) :支持下载文件的部分内容,提高了大文件的下载效率。
  • 更多的状态码和头信息 :增强了错误处理和状态描述。

缺点:

  • 队头阻塞 :管道化仍然受到队头阻塞的影响,多个请求在同一连接上发送时,必须按顺序处理响应。
  • 单个 TCP 连接的性能瓶颈 :多个请求共享一个 TCP 连接时,性能受限。

2.0版本

改进:

  • 二进制协议 :基于二进制帧传输,而不是文本传输,提高了传输效率和解析速度。
  • 多路复用(Multiplexing) :允许在一个 TCP 连接上并行发送多个请求和响应,解决了队头阻塞问题。
  • 头部压缩(Header Compression) :使用 HPACK 算法压缩头部,减少了数据传输量。
  • 服务器推送(Server Push) :服务器可以主动向客户端推送资源,提高了页面加载速度。
  • 优先级和流控制 :提供了流优先级和流量控制机制,更高效地管理资源分配。

优点:

  • 高效的资源利用 :多路复用和头部压缩显著提高了传输效率,降低了延迟。
  • 改进的并发性能 :可以在一个 TCP 连接中并行处理多个请求,解决了 HTTP/1.1 的性能瓶颈问题。

特点

  • 无状态 :每次请求都是独立的,不保存任何请求之间的状态。
  • 明文传输 :数据以明文形式传输,容易被截获和窃取。

工作流程

  • 客户端(通常是浏览器)向服务器发送请求。
  • 服务器处理请求并返回响应,通常是网页内容。
  • 客户端显示服务器返回的内容。

HTTPS

HTTPS 是在 HTTP 的基础上加入了 SSL/TLS 协议,用于加密传输数据,确保数据的安全性。默认端口 443

特点

  • 加密传输 :数据通过 SSL/TLS 协议加密,防止数据被截获和窃取。
  • 身份验证 :服务器需要有 SSL 证书,确保数据传输的目标是正确的服务器。
  • 数据完整性 :防止数据在传输过程中被篡改。

工作流程

  • 客户端向服务器发出 HTTPS 请求。
  • 服务器返回 SSL 证书,客户端验证证书的有效性。
  • 如果证书有效,客户端和服务器通过 SSL/TLS 协议协商生成对称密钥。
  • 后续的数据传输都通过这个对称密钥加密进行。

区别

  • 安全性 :HTTPS 提供了数据加密、身份验证和数据完整性检查,确保数据传输的安全性,而 HTTP 不提供这些安全保障。
  • 端口 :HTTP 使用端口 80,HTTPS 使用端口 443。
  • 性能 :由于加密解密过程,HTTPS 的传输效率比 HTTP 略低,但现代技术优化已经将这个差距缩小到很小。

适用场景

  • HTTP :适用于对安全性要求不高的场景,如公共信息的查询和浏览。
  • HTTPS :适用于需要保护用户隐私和敏感数据的场景,如在线购物、银行交易和社交媒体。

网络攻击

常见攻击类型

  1. DoS(拒绝服务)和 DDoS(分布式拒绝服务)攻击:攻击者利用多个计算机或设备(通常是僵尸网络)向目标服务器发送大量请求,导致服务器过载,无法正常服务。
  2. 钓鱼攻击(Phishing):攻击者通过伪装成合法机构或个人,发送欺诈性电子邮件或消息,诱导受害者提供敏感信息(如用户名、密码、信用卡信息)。
  3. 中间人攻击(Man-in-the-Middle Attack):攻击者在受害者和目标服务器之间拦截和篡改通信数据,获取敏感信息或伪造数据。
  4. SQL 注入(SQL Injection):攻击者通过在 Web 应用程序的输入字段中插入恶意 SQL 代码,控制数据库服务器,执行未授权的操作。
  5. XSS 攻击(跨站脚步攻击,Cross-Site Scripting):攻击者在 Web 页面中注入恶意脚本代码,当用户访问该页面时,脚本在用户浏览器中执行,窃取用户数据或进行其他恶意操作。
  6. CSRF 攻击(Cross-Site Request Forgery,跨站请求伪造):主要利用受害者在已登录的情况下通过浏览器向 Web 应用发送伪造的请求,从而执行未授权的操作。
  7. 密码攻击(Password Attacks):包括暴力破解(Brute Force Attack)、字典攻击(Dictionary Attack)和凭证填充攻击(Credential Stuffing),通过猜测或试探用户密码进行攻击。
  8. DNS 攻击(DNS Spoofing/Poisoning):攻击者篡改 DNS 响应,将用户引导到恶意网站。
  9. 会话劫持(Session Hijacking):攻击者获取有效的会话令牌,冒充受害者访问系统。
  10. 零日攻击(Zero -Day Attack):攻击者利用尚未公开或修复的软件漏洞进行攻击,这些漏洞在被发现之前就被利用。

防护措施

  • 使用强密码和多因素认证 :增加账户的安全性。
  • 定期更新和补丁管理 :确保软件和系统始终是最新的,修复已知漏洞。
  • 加密数据传输 :使用 HTTPS 和 VPN 等技术保护数据在传输过程中的安全。
  • 网络防火墙和入侵检测系统 :监控和阻止可疑活动。
  • 安全意识培训 :教育用户识别和防范钓鱼和社会工程学攻击。
  • 备份数据 :定期备份关键数据,以防勒索软件攻击。
  • 访问控制和权限管理 :限制用户权限,最小化潜在的攻击面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小童不学前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值