熬夜整理的20道计算机⽹络⾯试题
关注
“脚本之家
”,与百万开发者在⼀起
作者 | 雷⼩帅
来源 | 爱笑的架构师(ID:DancingOnYourCode)
在⾯试中计算机⽹络是⾯试官最喜欢考察的内容之⼀,下⾯这夺命 20 问⼀定要掌握哟!
⽹络分层
1、说说OSI 七层、TCP/IP 四层的关系和区别?
OSI 七层从下往上依次是:物理层、数据链路层、⽹络层、传输层、会话层、表⽰层、应⽤层。⼀张图给你整明⽩:
(图⽚来源于⽹络)
TCP/IP 四层从下往上依次是:⽹络接⼝层、⽹络层、传输层、应⽤层。与 OSI 七层的映射关系如下:
特点:
层与层之间相互独⽴⼜相互依靠
上层依赖于下层,下层为上层提供服务
敲⿊板:TCP/IP 四层是 OSI 七层的简化版,已经成为实事国际标准。
TCP/IP
2、说说TCP 与 UDP 的区别?
先上⼀张对⽐图:
总结
TCP 向上层提供⾯向连接的可靠服务,UDP 向上层提供⽆连接不可靠服务。
UDP 没有 TCP 传输可靠,但是可以在实时性要求搞的地⽅有所作为。
对数据准确性要求⾼,速度可以相对较慢的,可以选⽤TCP。
3、TCP 是如何实现数据的可靠性?
⼀句话:通过校验和、序列号、确认应答、超时重传、连接管理、流量控制、拥塞控制等机制来保证可靠性。
(1)校验和
在数据传输过程中,将发送的数据段都当做⼀个16位的整数,将这些整数加起来,并且前⾯的进位不能丢弃,补在最后,然后取反,得到校验和。
发送⽅:在发送数据之前计算校验和,并进⾏校验和的填充。接收⽅:收到数据后,对数据以同样的⽅式进⾏计算,求出校验和,与发送⽅进⾏⽐较。
(2)序列号
TCP 传输时将每个字节的数据都进⾏了编号,这就是序列号。序列号的作⽤不仅仅是应答作⽤,有了序列号能够将接收到的数据根据序列号进⾏排序,并且去掉重复的数据。
(3)确认应答
TCP 传输过程中,每次接收⽅接收到数据后,都会对传输⽅进⾏确认应答,也就是发送 ACK 报⽂,这个 ACK 报⽂中带有对应的确认序列号,告诉发送⽅,接收了哪些数据,下⼀次数据从哪⾥传。
(4)超时重传
在进⾏TCP 传输时,由于存在确认应答与序列号机制,也就是说发送⽅发送⼀部分数据后,都会等待接收⽅发送的ACK 报⽂,并解析ACK 报⽂,判断数据是否传输成功。如果发送⽅发送完数据后,迟迟都没有接收到接收⽅传来的ACK 报⽂,那么就对刚刚发送的数据进⾏重发。
(5)连接管理
就是指三次握⼿、四次挥⼿的过程。
(6)流量控制
如果发送⽅的发送速度太快,会导致接收⽅的接收缓冲区填充满了,这时候继续传输数据,就会造成⼤量丢包,进⽽引起丢包重传等等⼀系列问题。TCP ⽀持根据接收端的处理能⼒来决定发送端的发送速度,这就是流量控制机制。
具体实现⽅式:接收端将⾃⼰的接收缓冲区⼤⼩放⼊ TCP ⾸部的『窗⼝⼤⼩』字段中,通过 ACK 通知发送端。
(7)拥塞控制
TCP 传输过程中⼀开始就发送⼤量数据,如果当时⽹络⾮常拥堵,可能会造成拥堵加剧。所以 TCP 引⼊了慢启动机制,在开始发送数据的时候,先发少量的数据探探路。
4、说说 TCP 协议如何提⾼传输效率?
⼀句话:TCP 协议提⾼效率的⽅式有滑动窗⼝、快重传、延迟应答、捎带应答等。
(1)滑动窗⼝
如果每⼀个发送的数据段,都要收到ACK 应答之后再发送下⼀个数据段,这样的话我们效率很低,⼤部分时间都⽤在
如果每⼀个发送的数据段,都要收到ACK 应答之后再发送下⼀个数据段,这样的话我们效率很低,⼤部分时间都⽤在了等待 ACK 应答上了。
为了提⾼效率我们可以⼀次发送多条数据,这样就能使等待时间⼤⼤减少,从⽽提⾼性能。窗⼝⼤⼩指的是⽆需等待确认应答⽽可以继续发送数据的最⼤值。
(2)快重传
快重传也叫⾼速重发控制。
那么如果出现了丢包,需要进⾏重传。⼀般分为两种情况:
情况⼀:数据包已经抵达,ACK被丢了。这种情况下,部分ACK丢了并不影响,因为可以通过后续的ACK进⾏确认;
情况⼆:数据包直接丢了。发送端会连续收到多个相同的 ACK 确认,发送端⽴即将对应丢失的数据重传。
(3)延迟应答
如果接收数据的主机⽴刻返回ACK应答,这时候返回的窗⼝⼤⼩可能⽐较⼩。
假设接收端缓冲区为1M,⼀次收到了512K的数据;如果⽴刻应答,返回的窗⼝就是512K;
但实际上可能处理端处理速度很快,10ms之内就把512K的数据从缓存区消费掉了;
在这种情况下,接收端处理还远没有达到⾃⼰的极限,即使窗⼝再放⼤⼀些,也能处理过来;
计算机架构师证书
如果接收端稍微等⼀会在应答,⽐如等待200ms再应答,那么这个时候返回的窗⼝⼤⼩就是1M;
窗⼝越⼤,⽹络吞吐量就越⼤,传输效率就越⾼;我们的⽬标是在保证⽹络不拥塞的情况下尽量提⾼传输效率。
(4)捎带应答
在延迟应答的基础上,很多情况下,客户端服务器在应⽤层也是⼀发⼀收的。这时候常常采⽤捎带应答的⽅式来提⾼效率,⽽ACK响应常常伴随着数据报⽂共同传输。如:三次握⼿。
5、你知道 TCP 如何处理拥塞吗?
⽹络拥塞现象是指到达通信⽹络中某⼀部分的分组数量过多,使得该部分⽹络来不及处理,以致引起这部分乃⾄整个⽹络性能下降的现象,严重时甚⾄会导致⽹络通信业务陷⼊停顿,即出现死锁现象。拥塞控制是处理⽹络拥塞现象的⼀种机制。
拥塞控制的四个阶段:
慢启动
拥塞避免
快速重传
快速恢复
6、讲⼀下三次握⼿和四次挥⼿全过程
三次握⼿的过程给⾯试官甩⼀张图:
四次挥⼿的过程再给⾯试官甩⼀张图:
7、为什么 TCP 链接需要三次握⼿,两次不可以么,为什么?
两次握⼿只能保证单向连接是畅通的
第⼀步,客户端给服务端发送⼀条消息:你好,服务端。第⼆步,服务端收到消息,同时给客户端回复⼀条消息:收到!你好客户端。
这样的两次握⼿过程,客户端给服务端打招呼,服务端收到了,说明客户端可以正常给服务端发送数据。但是服务端给客户端打招呼,服务端没有收到反馈,也就不能确保服务端是否能正常给客户端发送消息。
只有经过第三次握⼿,才能确保双向都可以接收到对⽅的发送的数据第三步,客户端收到服务端发送的消息,回复:收到!这样就证明了客户端能正常收到服务端的消息。
8、IP地址是怎样分类的,你知道吗?
先说⼀下 IP 的基本特点:
IP地址由四段组成,每个字段是⼀个字节,8位,最⼤值是255。
IP地址由两部分组成,即⽹络地址和主机地址。⽹络地址表⽰其属于互联⽹的哪⼀个⽹络,主机地址表⽰其属于该⽹络中的哪⼀台主机。
IP 地址主要分为A、B、C三类及特殊地址D、E这五类,甩⼀张图:
A类:(1.0.0.0-126.0.0.0)⼀般⽤于⼤型⽹络。
B类:(128.0.0.0-191.255.0.0)⼀般⽤于中等规模⽹络。
C类:(192.0.0.0-223.255.255.0)⼀般⽤于⼩型⽹络。
D类:是多播地址,地址的⽹络号取值于224~239之间,⼀般⽤于多路⼴播⽤户。
E类:是保留地址。地址的⽹络号取值于240~255之间。
E类:是保留地址。地址的⽹络号取值于240~255之间。
HTTP协议
9、讲⼀下 http1.1 和 http2 有什么区别?
HTTP1.1
持久连接
请求管道化
增加缓存处理(新的字段如cache-control)
增加 Host 字段、⽀持断点传输等
HTTP2.0
⼆进制分帧
多路复⽤(或连接共享)
头部压缩
服务器推送
10、说说 HTTP 和HTTPS 的区别?
(1)HTTPS 协议需要到CA 申请证书,⼀般免费证书较少,因⽽需要⼀定费⽤。(2)HTTP 是超⽂本传输协议,信息是明⽂传输,HTTPS 则是具有安全性的SSL 加密传输协议。(3)HTTP 和HTTPS 使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。(4)HTTP 的连接很简单,是⽆状态的;HTTPS 协议是由SSL+HTTP 协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐ HTTP 协议安全。
11、你知道对称加密和⾮对称加密的区别和原理吗?
对称密钥加密是指加密和解密使⽤同⼀个密钥的⽅式,这种⽅式存在的最⼤问题就是密钥发送问题,即如何安全地将密钥发给对⽅ ;
⽽⾮对称加密是指使⽤⼀对⾮对称密钥,即公钥和私钥,公钥可以随意发布,但私钥只有⾃⼰知道。发送密⽂的⼀⽅使⽤对⽅的公钥进⾏加密处理,对⽅接收到加密信息后,使⽤⾃⼰的私钥进⾏解密。
由于⾮对称加密的⽅式不需要发送⽤来解密的私钥,所以可以保证安全性;但是和对称加密⽐起来,它⽐较慢,所以我们还是要⽤对称加密来传送消息,但对称加密所使⽤的密钥我们可以通过⾮对称加密的⽅式发送出去。
12、常见的状态码有哪些?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。