计算机网络基础面试(计算机网络基础面试题及答案)

网络基础 85
本篇文章给大家谈谈计算机网络基础面试,以及计算机网络基础面试题及答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、测试同学必备的网络知识

本篇文章给大家谈谈计算机网络基础面试,以及计算机网络基础面试题及答案对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

测试同学必备的网络知识

对于测试同学来说,计算机网络的基础知识是必不可少的,话不多说,先来整理一波高频网络面试题。

包括GET,POST ,PUT,DELETE,HEAD,OPTIONS,PATCH,TRACE , CONNECT 等9种方法,常用的为前四种

1、请求效率。GET比POST的请求效率更高。GET产生一个TCP数据包,POST产生两个TCP数据包(划重点,最重要的区别)

2、安全性。Get是不安全的,在传输过程中,数据被放在请求的URL中,POST相对安全,将请求数据放在body中,但是通过抓包也是可以获取到参数的,想要真正的安全,需要用HTTPS的加密协议

3、传输数据量。GET请求数据大小受限于URL长度(1024字节),POST请求数据不受限制

4、使用场景。GET主要从服务器上获取数据,例如查看新闻功能,POST主要用于向服务器提交数据,例如用户登录功能

1XX。信息,服务器收到请求,需要请求者继续执行操作

2XX。成功,操作被成功接收并处理

3XX。重定向,需要进一步的操作以完成请求

4XX。客户端错误,请求包含语法错误或无法完成请求

5XX。服务器错误,服务器在处理请求的过程中发生了错误

200 OK :服务器成功处理了请求

301 Moved Permanently(重定向):永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302 Found:临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

304 Not Modified:未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

400 Bad Request:客户端请求有语法错误,不能被服务器所理解

401 Unauthorized:请求未经授权。例如访问未经授权的页面

403 Forbidden:服务器收到请求,但是拒绝提供服务。例如访问被禁止的网站目录

404 Not Found :请***不存在。例如:输入了错误的URL

500 Internal Server Error:服务器遇到错误,无法给请求提供服务

基于Token的身份验证流程:

1、客户端使用用户名uid和密码pwd去请求登录

2、服务端收到请求,将uid用一个算法例如(HMAC-SHA256算法)+秘钥(只有自己知道)去做签名sign,然后把这个签名sign和数据uid一起作为Token, 发送给客户端,服务端不保存Token

3、客户端收到 Token 以后把它存储起来,比如放在 Cookie 或者 Local Storage 里

4、客户端每次向服务端请***的时候需要带着服务端签发的 Token

5、服务端收到请求,然后去验证客户端请求里面带着的 Token(即用uid按照同样的算法,将算出的结果与请求带过来的Token核对),如果验证成功,就向客户端返回请求的数据

基于Session的身份验证流程:

1、客户端使用用户名uid和密码pwd去请求登录

2、服务端收到请求,会生成一个会话标识Sessionid,即一个随机字符串,发送给客户端。每个用户登录都会生成一个,对服务器是一个巨大的开销

3、客户端收到Sessionid 以后可以把它存储起来,比如放在 Cookie 里

4、客户端每次向服务端请***的时候需要带着服务端返回的 Sessionid

5、服务端收到请求,然后去验证客户端请求里面带着的Sessionid,如果与保存在服务端的相同,就向客户端返回请求数据

三者的区别:

1、Cookie是客户端保存数据的一种手段,而Session是服务端保存数据的一种机制,Session保存在服务端内存中,机器重启之后就没有了,Token和Session均是一种身份认证机制

2、主要比较Session和Token机制的优缺点,Token的身份验证机制应用更普遍,优点如下:

A、无状态,可拓展

无状态:即程序需要验证每一次请求,从而辨别客户端的身份

可拓展:在服务端的内存中使用Session存储登录信息,伴随而来的是可拓展性问题,使用Token可以更好的拓展,同时节省了服务器的开销。把Token写到http请求头中,以保证Http请求的无状态。例如有多台服务器,使用负载均衡,第一次登录转发到了A,A中seesion缓存了用户的登录信息,第二次登录转发到了B,这时候就丢失了登录状态,当然这样也是有解决方案可以共享session,但token只需要所有的服务器使用相同的解密手段即可

B、支持移动设备

当客户端是原生平台时,cookie不被支持,可采取Token方式

C、跨程序调用

避免了跨域资源共享的问题

D、安全(防止csrf攻击)

签名校验机制。Session是基于Cookie进行用户识别的, Cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击,一般将Token写到HTTP请求头中。

举个csrf(即跨站点请求伪造)攻击的例子:

原理:(1)同一浏览器同一域名下的cookie可共享,跨域的不能携带cookie(2)httponly,后端开启关闭,开启之后,本地js读不到cookie的字段,不开启才能读到cookie的字段

在A项目中,先登录A项目,然后在构造的js文件中,加一个跳转至A项目的链接(比如做删除操作),A项目是没有加Token校验的,从js文件直接跳转至A项目,携带cookie,可做删除操作,加了Token校验之后,就无法进行删除操作了

从上而下:

1、应用层

为操作系统或网络应用程序提供访问网络服务的接口。

包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)

2、表示层

表示层的数据转换包括数据的加密、压缩、格式转换等

3、会话层

负责建立、管理、终止进程之间的会话

4、传输层

传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题

包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议)

5、网络层

负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能

包含的主要协议:IP协议(Internet Protocol,因特网互联协议)、ICMP协议(Internet Control Message Protocol,因特网控制报文协议)、ARP协议(Address Resolution Protocol,地址解析协议)、RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)

6、数据链路层

为网络层提供可靠的数据传输

包含的主要协议:以太网协议

7、物理层

确保原始的数据可在各种物理媒体上传输

计算机网络技术,面试什么

计算机网络工作的职责范围决定求职者要准备的技能,面试问题也是在这方面来展开。简单来说如下:

1、一般小型公司,主要面对硬件维护、网络维护,老板对电脑也不太懂,问题会有:

(1)有装机经验吗?

(2)会装系统吗?

(3)会设内网吗,像路由器、网络打印等会设吗?

2、有点规模的公司,IT系统有一定规模,问题会有:

(1)网络经验有哪些?(对方懂网络,要小心条理的回答)

(2)网络安全会处理吗?(如果有这方面的能力,工资会高一些)

(3)有用过VPN设备或防火墙吗?(公司里有这些设备需要维护)

3、软件类公司,这种公司里高手有的是,需要熟练技能。

(1)学的专业是什么,会那些语言?

(2)域的设置熟练吗?

(3)维护过服务器吗?

网管工作分别很大,从初级到精通,从维护小局域网到保证网络的稳定和安全,再高端的提供数据安全方案并实施,包括网络知识和阵列知识等。

计算机网络面试知识点

[图片上传失败...(image-47b18e-1644856864285)]

[图片上传失败...(image-fbfbf-1644856864285)]

网络协议其实就是端到端的一个 通信规则 ,有了这些规则,双方的沟通才有意义。

[图片上传失败...(image-bc49f9-1644856864285)]

其中,有几点比较重要:

[图片上传失败...(image-f04cf4-1644856864285)]

[图片上传失败...(image-bb666-1644856864285)]

如果我们只进行 2 次握手就建立连接,那么对于 Server 端来讲太容易建立起连接了,基本是有客户端过来,那么 Server 就要建立起连接了。这种情况就会导致连接成本太低,Server 端很容超负载。

四次挥手是因为 TCP 是 全双工 的,存在了数据发送与接收两个行为,在这两个方向的数据流入流出都需要进行关闭。

当服务接收到客户端请求连接 SYN,然后向客户端响应 ACK 和 SYN 后, 就会将连接维护到半连接队列。当客户端再次回复 ACk 后,当前的连接就会被维护到全连接队列里。

SYN 攻击是 DOS 攻击的一种,通过伪造大量的请求建立连接,使得半连接队列超出最大容量,其他正常的请求无法处理。

TIME_WAIT 是一个定时设置,在 2*MSL(MSL 表示一个包在网络环境中的生存时间,一般为 2 分钟, Linux 里为 30s)时间过后就会真正的 CLOSED。

之所以不立即关闭,主要为了让被动关闭方能有足够的时间接收到最后的 Ack 包,如果没有接收到,被动方就会重新发送 Fin 包,重新触发主动方发送最后的 Ack 包。这样的话,就能尽量保证被动关闭方尽快关闭连接了,毕竟主动关闭方需要承担起主要责任,所以会有 TIME_WAIT 的等待了。

另外一个原因也是怕当前连接立马释放,有一定概率会重用到当前连接标识(五元组),而旧的网络包由于延迟此时才接收到,就有可能产生包的混乱问题了。

TCP 发送的包都需要接收方进行一个 Ack 包的响应,如果在一定时间内没有响应的话,那么发送方就会认为包未能正确到达,需要进行重传动作。这就是 TCP 的重传机制。

TCP 里的重传机制会有一个超时的判断,这个超时时间并不是很准确,或者说并不是很标准,毕竟不同的网络环境,包的到达情况都会是不一样的。

所以 TCP 会使用一个采样时间,先记录了正常情况下一个数据包从发送到响应确认这么一来一回的时间,即所谓的 RTT (Round Trip Time) 时间,根据这个时间进行一些公式计算,得到了超时时间的值: RTO (Retransmission TimeOut)

对于重传机制,还有另外一种触发机制。上面的情况属于发送方去探知发送情况,有另一种情况是接收方能探知的。比如发送方发送了 1, 2, 3 的包,但实际上接收方只接收到 1 和 3,一直没能收到 2 这个包,那此时接收方就会连续响应三个 关于 2 的 ack 包。

当发送方收到这么一个连续的 3 个 ack 包后,就知道需要重传 2 了,此时就不需要等到 2 的超时未确认触发,可以提前的重传 2 这个包了。

TCP 采用 滑动窗口 进行了流量的控制,所谓的滑动窗口即在发送方和接收方各自维护了一个窗口,在这个窗口里将会维护对应的数据包,以感知当前的数据处理情况。

在接收方这边的窗口称之为 接收窗口 ,它具体表示当前所能接收的数据包大小,计算公式为:当前最大可接收缓冲区大小 - 当前已接收的大小,在连接建好的开始一般为 65535 字节。

在计算出可接收大小后,接收方就会将此值设置在 TCP 头部里的 Window 字段,然后响应回发送方,发送方也就知道了当前所能允许发送的数据包大小了。

在发送方这边的窗口称之为 发送窗口 ,按正常逻辑来讲,发送窗口维护的是即将要发送的数据,即根据刚刚反馈回来的接收窗口大小计算出的发送数据。

但由于一个数据包的发送需要有一个 ACK 响应才算完整流程,所以对于这些“已发送未响应”的数据也应该纳入到发送窗口的管理,并且只有真的 ACK 响应回来,才能继续下个数据包的准备发送。

[图片上传失败...(image-8f81f8-1644856864285)]

需要注意的是,如果发送方接收到的 Window 大小为 0,则表示当前的接收方已经无能力处理新的包了,此时发送方就不会再下发数据了,直到接收方发送一个 窗口通告 ,才继续数据的发送。

但此时需要考虑一种情况,就是接收方由于网络问题没能将窗口通告送达发送方,那此时发送方就会一直干等着了.所以对于发送方来讲,会启动 窗口探知 动作,要求接收方 ACK 它当前的接收窗口大小,如果超过 3 次的探知动作,则直接断开连接了。

TCP 协议抽象出了 拥塞窗口 (cwnd)的概念,它会根据当前的网络拥塞程度进行动态的调整。由于加入了拥塞情况的考虑,上面我们提到过的发送窗口则不能仅仅只考虑接收窗口这个因素了,需要进行 min(拥塞窗口,接收窗口) 的选择发送了。

MSS 表示 网络传输 数据 的最大值,如果 MSS 加上包头大小,则表示网络传输最大 报文 :MTU 。

在 Internet 这种互联网中,一般 MTU 定义为 576 字节,减去 TCP、IP 的包头 40 字节,则可以得到 MSS = 536 字节的值;而在以太网这种局域网里,一般 MTU 会大点:1500 字节,MSS 为 1460 字节。

当连接建立完毕,开始传输数据时,TCP 协议规定不能一开始就发送大尺寸的数据包,这样避免了网络环境有问题时,新加入的连接加剧了拥塞状况。所以,对于新加入的连接而言,需要一点一点的增大数据量,这就是所谓的 慢启动 。

其中,慢启动涉及的拥塞窗口计算过程如下:

从慢启动的算法来看,每经过一个 RTT 后,拥塞窗口的增长速度将会变得很厉害,如果没有进行限制的话,那么很快就会占满带宽了。因此, TCP 协议使用了一个叫慢启动门限(ssthresh)的变量(一般取 65535 字节)。当 cwnd(拥塞窗口) 超过该限制后,就会进入所谓的 拥塞避免 阶段了。

在拥塞避免阶段,拥塞窗口的计算过程如下:

从上面的算法可以看出,进入拥塞避免阶段后,数据包的发送大小将呈线性增加了。通过这样的方式,使得 TCP 的传输在前期很快,然后再慢慢降下来,达到网络最佳值。

在拥塞发生时,关于拥塞窗口的计算在不同的 TCP 版本里将会不一样,主要有以下 3种版本:

Tahoe 版本是 TCP 的最早版本,当它发现需要进行重传动作,即触发了 RTO 超时或发送方收到三个重复 ACK 包时,此时会进行的动作为:

Reno 版本进行的动作为:

其中,快速恢复阶段的计算又如下:

NewReno 是对 Reno 的改进,主要是优化了快速恢复阶段,在 Reno 版本中,所考虑的都是一个包的丢失情况。然而,在实际情况中,一次数据窗口的发送,是有可能出现很多数据包丢失情况的。

这样的话,就会触发多次的 cwnd 和 ssthresh 减半动作,一旦 cwnd 降到小于 3 时,即发送窗口会出现小于 3 的情形,此时将再也触发不了 3 次快速重传动作了,只能依赖 RTO 超时,而一般 RTO 的值是比较大(太小会经常触发重传)的,此时整个传输速度将会大大降低。

所以 NewReno 会在收到所有数据包的确认后才结束快速恢复阶段,这样 cwnd 和 sshthresh 就不会轻易被降低了。

NewReno 主要是使用了一个 recover 变量,作为当前数据窗口中,可能丢包的最大序号。即如果有丢包情况产生,并且大于当前的 recover 值,则会更新该值。

当收到接收方的 ack 后,会进行 ack_seq 的判断,如果 ack_seq recover,此时就可以结束快速恢复阶段了;如果 ack_seq recover,则意味着多包丢失,还不能结束快速恢复阶段。通过这样的控制,来提高了整个的吞吐量。

Nagle 算法把多个小数据包合并到一个片段,并且等待满足一定条件后,再一起发送过去。具体的触发条件如下:

当上述条件都未满足,但发生了超时(一般为 200ms),则立即发送。

对于 TCP 协议来讲,默认会启用 Nagle 算法,降低网络负载,减少网络拥塞,提高网络吞吐。

在 TCP 的确认机制里,可以在通信过程中不对每一个 TCP 数据包进行单独的 ACK 包响应,而是在传输数据时,顺便把 ACK 信息随数据包一起发送,这样可以提高网络流量利用率。

如果在一定时间内(一般 40 ms)没有数据包要发送,此时就会单独的进行 ACK 包响应。这个过程也被称为 Delay Ack。

TCP 是面向字节流的传输,它会根据接收方的包处理能力以及当前网络的拥塞情况来一部分一部分的加载数据发送,再加上有 Nagle 这种整合小数据包的算法存在。所以对于接收方来讲,接收到的数据有可能是粘合在一起的,也有可能是被拆分开的,即所谓的粘包和拆包。

对于粘包和拆包现象,常用的解决方案有:

TCP 的连接和断开都是双方互相沟通进行的(三次握手、四次挥手)。在数据的传输过程中会进行应答确认、超时重传、流量控制、拥塞控制、拥塞避免等手段去保证传输的准确性。

TCP 是面向字节流的可靠连接,而 UDP 是面向数据报文的连接,不保证可靠连接,但传输比较快。TCP 常用于邮件、文件传输这种要求准确性高的场景,而 UDP 常用于视频直播这种实时传输的场景。

HTTP 是基于 TCP 协议的短连接,按请求-响应来通信。每一次的请求都是独立的,和上次的没有关联。尽管 TCP 是有状态的,但它的状态是为了传输使用,比如报文序号、发送窗口大小等辅助信息,这些和 HTTP 的请求没有关系。

Http 虽然有 keep-alive 字段控制,但那是为了提高传输效率,让此次的请求连接尽量生命周期长些,不至于频繁的建立连接-销毁连接。另外,cookie 会话只是 HTTP 的补充,它是允许关闭或伪造的,并不是协议的通信依赖。

首先,会根据域名进行 DNS 的解析,以获取到服务器的 IP 地址。拿到 IP 地址后将会和服务端进行三次握手,建立 TCP 连接。接着将会按照 HTTP 协议的请求-响应来传输网页内容。最后,TCP 通过四次挥手结束连接。

每次请求-响应都会建立一次 TCP 连接,服务器处理完后就会断开 TCP 连接。后面加了 Connection: keep-alive 来延迟 TCP 连接时长,尽量让请求-响应使用同一个连接

HTTPS 解决了 HTTP 的安全传输问题,在 HTTP 这一层协议下加入了 SSL 层。即进行了端到端的加密/身份验证,以保证数据的不被窃取篡改。

HTTPS 的流程如下:

[图片上传失败...(image-b619ee-1644856864285)]

ping 采用了 ICMP 协议,ICMP 协议用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

DOS:即拒绝服务,其目的是使计算机或网络无法提供正常的服务。最常见的 DoS 攻击有计算机网络带宽攻击和连通性攻击,像 SYN 洪水攻击也是一种,它利用 TCP 协议发送大量的半连接请求,耗费服务器的 CPU 和内存资源。

感兴趣的朋友可以搜一搜公众号「 阅新技术 」,关注更多的推送文章。

可以的话,就顺便点个赞、留个言、分享下,感谢各位支持!

阅新技术,阅读更多的新知识。

关于计算机网络技术专业面试应做什么准备

你好,领学网为你解答:

带上简历和证书,当然最好准备一些自己平时的作品,对于一些专业的问题,可以大概准备一些,就算不问,自己回答的时候也可以带着说一些,显示自己的专业性。

计算机网络技术人员的面试,问题范围比较广,具体要根据用人单位的性质和主营方向去准备,不过一般问到最多的是配置和硬件的应用。以下是常见的网络工程师面试问题,可供参考。

1、说出自己配置过的路由器型号,并说出几个最常用的配置命令。

2、说出几种动态路由协议,并谈谈动态路由和静态路由的区别。

3、介绍几种方式用来在web服务器上创建虚拟主机。

4、介绍几种使用过的代理服务器。

5、提供几种邮件服务器的建设方案。

6、说出使用过的数据库产品。

7、介绍使用过的网管软件,以及它的特点。

8、如果负责将一个公司的所有计算机接入互联网,会选择哪种接入方式,为什么?

9、会选择让哪种操作系统装在公司内的计算机上,为什么?

10、简要介绍管理过的网络。

11、谈谈网络中最容易出现的故障有哪些?

希望帮到你!

计算机网络技术专业单招面试时考官会问你些什么啊

常见且通用的面试问题有以下几个,你可以参考看看。

1、请你自我介绍一下你自己?

2、说说你最大的缺点?

3、你对加班的看法?

4、你对薪资的要求?

5、在未来五年的时间内,你的职业规划大概是怎样的?

6、你还有什么问题要问吗?

然后会是些涉及到计算机网络技术方面的专业问题,考查专业素养。

面试最重要的是呈现给人的感觉,做到大方得体,不卑不亢,积极阳光,让考官感觉到你是值得信任,做事靠谱的人很重要。

多花点时间认真准备,自信一点,面试应该不会太难,不要过于焦虑录取人数比例,把自己该做的都准备到位就好。

TCP/IP计算机网络协议面试题汇总

LISTEN – 侦听来自远方TCP端口的连接请求;

SYN-SENT -在发送连接请求后等待匹配的连接请求;

SYN-RECEIVED – 在收到和发送一个连接请求后等待对连接请求的确认;

ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;

FIN-WAIT-1 – 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

FIN-WAIT-2 – 从远程TCP等待连接中断请求;

CLOSE-WAIT – 等待从本地用户发来的连接中断请求;

CLOSING -等待远程TCP对连接中断的确认;

LAST-ACK – 等待原来发向远程TCP的连接中断请求的确认;

TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;

CLOSED – 没有任何连接状态;

路由器仅根据网络号net-id来转发分组,当分组到达目的网络的路由器之后,再按照主机号host-id将分组交付给主机;同一网络上的所有主机的网络号相同。

从主机号host-id借用若干个比特作为子网号subnet-id;子网掩码:网络号和子网号都为1,主机号为0;数据报仍然先按照网络号找到目的网络,发送到路由器,路由器再按照网络号和子网号找到目的子网:将子网掩码与目标地址逐比特与操作,若结果为某个子网的网络地址,则送到该子网。

每台主机或路由器在其内存中具有一个ARP表(ARP table),这张表包含IP地址到MAC地址的映射关系。将IP地址通过广播,根据目标IP地址解析到MAC地址。

1. Ping

Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

2. Traceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。

每个路由器维护一张表,记录该路由器到其它网络的”跳数“,路由器到与其直接连接的网络的跳数是1,每多经过一个路由器跳数就加1;更新该表时和相邻路由器交换路由信息;路由器允许一个路径最多包含15个路由器,如果跳数为16,则不可达。交付数据报时优先选取距离最短的路径。

1、 客户端发送自己支持的加密规则给服务器,代表告诉服务器要进行连接了;

2、 服务器从中选出一套加密算法和 hash 算法以及自己的身份信息(地址等)以证书的形式发送给浏览器,证书中包含服务器信息,加密公钥,证书的颁发机构;

3、客户端收到网站的证书之后要做下面的事情:

4、服务器接收到客户端传送来的信息,要做下面的事情:

5、如果计算法 hash 值一致,握手成功。

把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

关于计算机网络基础面试和计算机网络基础面试题及答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码