网络层:常见的面试题和答案

news2024/11/24 12:46:02

1、什么是IPv4和IPv6?它们有什么区别?

答:IPv4是32位的IP地址格式,而IPv6是128位的IP地址格式。IPv4地址空间有限,而IPv6地址空间更大,可以提供更多的地址。

2、说说 HTTP 和HTTPS 的区别?

  • HTTPS 协议需要到 CA 申请证书,一般免费证书较少,因而需要一定费用。
  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

3、什么是NAT(网络地址转换)?它的作用是什么?

答:NAT是一种将私有IP地址转换为公共IP地址的技术,用于解决IP地址不足的问题。它的作用是实现多个设备共享一个公共IP地址。

4、计算机模型分层结构有哪些

答:计算机网络体系大致分为三种,OSI七层模型、TCP/IP四层模型和五层模型。一般面试的时候考察比较多的是五层模型。
在这里插入图片描述
当前介绍一下五层协议相关内容:

  • 应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS、HTTP协议、SMTP协议等。

  • 传输层:负责向两台主机进程之间的通信提供数据传输服务。传输层的协议主要有传输控制协议TCP和用户数据协议UDP。

  • 网络层:选择合适的路由和交换结点,确保数据及时传送。主要包括IP协议。

  • 数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。

  • 物理层:实现相邻节点间比特流的透明传输,尽可能屏蔽传输介质和物理设备的差异。

5、说说 WebSocket与socket的区别

答:Socket是一套标准,它完成了对TCP/IP的高度封装,屏蔽网络细节,以方便开发者更好地进行网络编程。Socket其实就是等于IP地址 + 端口 + 协议。

  • WebSocket是一个持久化的协议,它是伴随H5而出的协议,用来解决http不支持持久化连接的问题。

  • Socket一个是网编编程的标准接口,而WebSocket则是应用层通信协议。

6、说说TCP 和 UDP 区别?

  • TCP 基于连接,UDP 基于无连接。
  • TCP 要求系统资源较多,UDP 较少。
  • UDP 程序结构较简单。
  • TCP 保证数据正确性,UDP 可能丢包。
  • TCP 保证数据顺序,UDP 不保证。

7、说说对称加密和非对称加密的区别和原理吗?

答:对称密钥加密是指加密和解密使用同一个密钥的方式,这种方式存在的最大问题就是密钥发送问题,即 如何安全地将密钥发给对方 ;

而非对称加密是指使用一对非对称密钥,即 公钥 和 私钥 ,公钥可以随意发布,但私钥只有自己知道。发送密文的一方使用对方的公钥进行加密处理,对方接收到加密信息后,使用自己的私钥进行解密。

由于非对称加密的方式不需要发送用来解密的私钥,所以可以 保证安全性 ;但是和对称加密比起来,它比较 慢 ,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

8、什么是路由选择协议?举例说明一种常用的路由选择协议。

答:路由选择协议是一种用于动态确定路由器之间最佳路径的协议。例如,OSPF(开放最短路径优先)是一种常用的内部网关协议(IGP)。

9、客户端和服务器之间最多能建立多少个连接?

答:65535 。
服务器的 ip ,端口号 ,客户端的 ip 都是确定的。能变的只有客户端的端口号。加网卡 ,保证四元组唯一,理论上能是客户端和服务器之间建立10 万以上的连接。

10、Http常见的状态码有哪些?

编码类别原因
1XXInformational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码))请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错
  • 200 OK:表示从客户端发送给服务器的请求被正常处理并返回成功。
  • 301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改的URL。
  • 302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL。
  • 400 Bad Request:表示请求报文存在语法错误。
  • 403 Forbidden:服务器拒绝该次访问(访问权限问题)。
  • 404 Not Found:表示服务器上无法找到请求的资源(也可以在服务器拒绝请求但不想给拒绝原因时使用)。
  • 500 Inter Server Error:表示服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误时。
  • 503 Server Unavailable:表示服务器暂时处于超负载或正在进行停机维护,无法处理请求。

11、什么是ARP(地址解析协议)?它的作用是什么?

答:ARP是一种用于将IP地址解析为物理MAC地址的协议。它的作用是在局域网中建立IP地址和MAC地址的对应关系。

12、说一说你对 DNS 的理解?

答:DNS (Domain Name System)是互联网中的重要基础设施,负责对域名的解析工作,为了保证高可用、高并发和分布式,它设计成了树状的层次结构。

  • 由根DNS服务器、顶级域 DNS 服务器和权威 DNS 服务器组成。
  • 解析顺序是首先从浏览器缓存、操作系统缓存以及本地 DNS 缓存 (/etc/hosts)逐级查找,然后从本地 DNS 服务器、根 DNS、顶级 DNS 以及权威 DNS层层递归查询。
  • 可以基于域名在内网、外网进行负载均衡。
  • 传统的 DNS 有很多问题(解析慢、更新不及时),HTTPDNS通过客户端 SDK 和服务端配合,直接通过 HTTP 调用解析 DNS 的方式,可以绕过传统 DNS 这些缺点,实现智能调度。

13、说说cookies和session的区别

  • cookies数据保存至客户端,session数据保存在服务端;
  • cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗;
  • session安全点,但是会占用服务器资源

14、解释一下IP协议和ICMP协议的作用。

答:IP协议是一种网络层协议,负责将数据包从源主机传输到目标主机。ICMP协议是基于IP协议的一种协议,用于发送错误报告和网络状态信息。

15、HTTP 的请求方法的方法有哪些?

  • GET 获取资源 (幂等)
  • POST 新增资源
  • HEAD 获取 HEAD 元数据 (幂等)
  • PUT 更新资源 (带条件时幂等)
  • DELETE 删除资源 (幂等)
  • CONNECT 建立 Tunnel 隧道
  • OPTIONS 获取服务器支持访问资源的方法 (幂等)
  • TRACE 会显服务器收到的请求,可以定位问题。(有安全风险)

16、讲讲GET和POST的区别?

  • POST请求更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,GET请求的是静态资源,则会缓存,如果是数据,则不会缓存)
  • POST请求发送的数据更大(GET请求有url长度限制,http协议本身不限制,请求长度限制是由浏览器和web服务器决定和设置)
  • POST请求能发送更多的数据类型(GET请求只能发送ASCII字符)
  • 传参方式不同:GET请求参数通过url传递,POST请求放在request body中传递
  • GET请求的是静态资源,则会缓存,如果是数据,则不会缓存
  • GET请求产生一个TCP数据包;POST请求产生两个TCP数据包(GET请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;POST请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 返回数据)

17、什么是Http协议无状态协议?怎么解决Http协议无状态协议

答:无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息。状态协议解决方法:通过cookie或者session会话保存。

18、讲讲TCP的粘包和拆包?

答:TCP是面向流,没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。

为什么会产生粘包和拆包呢?

  • 要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;

  • 接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包;

  • 要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;

  • 待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。即TCP报文长度-TCP头部长度>MSS。

解决方案:

  • 发送端将每个数据包封装为固定长度

  • 在数据尾部增加特殊字符进行分割

  • 将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小。

19、什么是DoS、DDoS、DRDoS攻击?

  • DOS: (Denial of Service),指的是拒绝服务,一切能引起DOS行为的攻击都被称为DOS攻击。最常见的DoS攻击就有计算机网络宽带攻击、连通性攻击。

  • DDoS: (Distributed Denial of Service),指的是分布式拒绝服务。是指处于不同位置的多个攻击者同时向一个或几个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。常见的DDos有SYN Flood、Ping of Death、ACK Flood、UDP Flood等。

  • DRDoS: (Distributed Reflection Denial of Service),指的是分布式反射拒绝服务,该方式靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,从而形成拒绝服务攻击。

20、什么是CSRF攻击,如何避免

答:CSRF,跨站请求伪造(英文全称是Cross-site request forgery),是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

怎么解决CSRF攻击呢?

  • 检查Referer字段。

  • 添加校验token。

21、什么是XSS攻击?

XSS,跨站脚本攻击(Cross-Site Scripting)。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS攻击一般分三种类型:存储型 、反射型 、DOM型XSS

如何解决XSS攻击问题?

  • 对输入进行过滤,过滤标签等,只允许合法值。

  • HTML转义

  • 对于链接跳转,如<a href=“xxx” 等,要校验内容,禁止以script开头的非法链接。

  • 限制输入长度

22、讲讲Tcp三次握手过程?

答:所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:
在这里插入图片描述

  • 第一次握手:
    Client将标志位SYN置为1,随机产生一个值seq=X,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

  • 第二次握手:
    Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=X+1,随机产生一个值seq=Y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

  • 第三次握手:
    Client收到确认后,检查ack是否为Y+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=Y+1,并将该数据包发送给Server,Server检查ack是否为Y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

23、讲讲TCP四次挥手过程?

答:四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:
在这里插入图片描述
因为 TCP 是全双工,所以每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

  • 第一次挥手:
    Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT状态。

  • 第二次挥手:
    Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

  • 第三次挥手:
    Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

  • 第四次挥手:
    Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1091897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】适配器模式 - - stack/queue/deque

目录 一、适配器模式 1.1迭代器模式 1.2适配器模式 二、stack 2.1stack 的介绍和使用 2.2stack的模拟实现 三、queue 3.1queue的介绍和使用 3.2queue的模拟实现 四、deque&#xff08;不满足先进先出&#xff0c;和队列无关&#xff09; 4.1deque的原理介绍 4.2dequ…

基于matomo实现业务数据埋点采集上报

matomo是一款Google-analytics数据埋点采集上报的平替方案&#xff0c;可保护您的数据和客户的隐私&#xff1b;正如它官网的slogan: Google Analytics alternative that protects your data and your customers privacy; 该项目源码开源免费&#xff0c;支持私有化部署&#x…

零基础Linux_17(进程间通信)VSCode环境安装+进程间通信介绍+pipe管道mkfifo

目录 1. VSCode环境安装 1.1 使用VSCode 1.2 远程链接到Linux机器 1.3 VSCode调试 2. 进程间通讯介绍 2.1 进程间通讯的概念和意义 2.2 进程间通讯的策略和本质 3. 管道 3.1 管道介绍 3.2 匿名管道介绍 3.3 匿名管道示例代码 3.3.1 建立管道的pipe 3.3.2 匿名管道…

YOLOv5算法改进(10)— 如何去添加多层注意力机制(包括代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。注意力机制可被应用于模型的不同层级,以便更好地捕捉图像中的细节和特征,这种模型在计算资源有限的情况下,可以实现更好的性能和效率。…

二十一、【文本工具组】

文章目录 横排文本工具字符选项卡段落文字 横排文本工具 需要注意的是一些不是免费的商业字体&#xff0c;一定不要拿去使用&#xff0c;否则后边很容易会受到法律索赔。 在制作海报等一些图形时&#xff0c;需要经常用到文本工具我们需要对文本进行变形&#xff0c;分段&…

Qt开发工程师成系统性长体系教程

QT跨平台开发工程师必备技术栈 基础原理-案例分析-项目实战&#xff0c;紧跟QT开发岗位技术需求. 一、Qt C 语言编程基础专栏 1.1 Qt C 语言编程基础 Visual Studio 2022安装C语言基础概述C指针与引用C类与对象(一)C类与对象(二)类的基它特性构造函数&析构函数&拷贝…

rhel8 nmcli学习

25.3.1 配置动态IP连接 25.3.1.1 配置IP 要使用 DHCP 分配网络时&#xff0c;可以使用动态IP配置添加网络配置文件&#xff0c;命令格式如下&#xff1a; # nmcli connection add type ethernet con-name connection-name ifname interface-name 例如创建名为net-test的动态…

虚拟机的发展史:从分时系统到容器化

一、前世 早期计算机的价格非常昂贵&#xff0c;一台计算机可能需要花费几十万甚至上百万美元。例如&#xff0c;ENIAC计算机&#xff0c;作为世界上第一台通用电子数字计算机&#xff0c;当时的造价约为48万美元。科学家或者工程师们需要计算机的能力&#xff0c;但是买不起整…

C. JoyboardCodeforces Round 902

C. Joyboard 样例1列表找规律&#xff1a; #include<iostream> #define int long long using namespace std; signed main() {int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;if(k1){cout<<1<<endl;}else if(k2){cout<<m…

vue2时间处理插件——dayjs

在vue时间处理上有很多的方法和实现&#xff0c;可以自己实现&#xff0c;但是效率不高&#xff0c;所以&#xff0c;在框架开发中我们一般不会手写&#xff0c;一般是使用集成的第三方插件来解决我们的问题&#xff0c;在vue3中大家一般都使用Moment.js来处理&#xff0c;所以…

Defects4j数据集安装及使用

一、Defects4j数据集安装 在Ubuntu系统上进行操作&#xff0c;具体的在&#xff1a;Defects4j数据集安装 二、Defects4j数据集的使用 1. 常用命令 Getting started ---------------- #### Setting up Defects4J 1. Clone Defects4J:- git clone https://github.com/rjust/d…

JOSEF约瑟 可调漏电继电器RT-LB230KS+Q-FL-100 导轨安装 配套零序互感器

一、产品用途及特点 RT-LB230KS漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压为660V.至1140V电压系统中,频率为50Hz,电流15~4000A线路中做有无中性点漏电保护. 该继电器可与带分励脱扣器或失压脱扣器的断路器、交流接触器、磁力启动器等组成漏电保护装置&…

【ELK 使用指南】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

端到端的机器学习项目(Machine Learning 研习之六)

使用真实数据 当你在研习机器学习时&#xff0c;最好是使用真实世界中的数据&#xff0c;而不是采用人工数据。巧的是&#xff0c;数以千计的数据集可供选择&#xff0c;涵盖了各种领域。 流行的开放数据存储库&#xff1a; OpenML.orgKaggle.compaperswithcode.com UC Irvin…

阿里云服务器不能访问网络之安装mysql 提示连接超时

wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 过了一段时间后提示 fail .......time out 链接超时 有可能你的服务器不能访问网络 因为宽带套餐 我购买的时候没有购 重新购买就行了

python爬取boss直聘数据(selenium+xpath)

文章目录 一、主要目标二、开发环境三、selenium安装和驱动下载四、主要思路五、代码展示和说明1、导入相关库2、启动浏览器3、搜索框定位创建csv文件招聘页面数据解析(XPATH)总代码效果展示 六、总结 一、主要目标 以boss直聘为目标网站&#xff0c;主要目的是爬取下图中的所…

【Candence报错】Discrepancy #i in TASK

问题描述 Candence LVS仿真提示网络不匹配 问题解决 检查原理图和Layout 注意&#xff1a;

穿越功耗墙,我们该从哪些方面提升“性能”?

目录 背景 功耗&#xff1a;CPU 的“人体极限” 并行优化&#xff0c;理解阿姆达尔定律 总结延伸 背景 我们知道 CPU 的性能时&#xff0c;我们提到了这样一个公式&#xff1a; 程序的 CPU 执行时间 指令数CPIClock Cycle Time 这么来看&#xff0c;如果要提升计算机的…

tracy 学习

https://github.com/wolfpld/tracy 适用于游戏和其他应用的实时、纳秒分辨率、远程控制、支持采样和帧率检测 Tracy 支持分析 CPU&#xff08;为 C、C 和 Lua 集成提供直接支持。同时&#xff0c;互联网上存在许多其他语言的第三方绑定&#xff0c;例如 Rust 、Zig、C # 、 OC…

【git】gitlab安装、备份

gitlab官网 官网&#xff1a;官网 中文官网&#xff1a;中文官网 作为一个英文不好的程序员&#xff0c;所以我都去中文网站去看了。下面也是带着大家去走走 安装gitlab 我不想写具体的安装方法&#xff0c;直接去逛网看下面是我的截图。步骤非常详细。 安装文档地址&…