计算机保研/考研面试题——计算机网络篇

       笔者在2023年参加了部分985和华五计算机夏令营和预推免面试,下面是作者对于计算机网络知识点一些总结(对于期末复习、保研和考研均适用,对找工作的同学也有一定参考作用,欢迎大家点赞、收藏、评论,如需要其他学科的问题请关注我~)


 相关文章:

计算机保研/考研面试题——数学篇-CSDN博客

计算机保研/考研面试题——数据结构与算法篇-CSDN博客

计算机保研/考研面试题——操作系统篇-CSDN博客

计算机保研/考研面试题——编程语言篇(C和C++)-CSDN博客

计算机保研/考研面试题——数据库基础篇-CSDN博客

计算机保研/考研面试题——计算机组成原理篇-CSDN博客


1. 介绍一下OSI七层模型各层之间的功能与对应的协议?★★★★★

       OSI七层模型自顶向下分别为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

       (1)应用层:为应用程序提供服务。主要的协议有:FTP、SMTP、HTTP、DNS。

       (2)表示层:表示层负责数据的格式转换、加密、解密和压缩等。常见协议有JPEG、ASCII等。

       (3)会话层:建立或解除与其他节点的联系

       (4)传输层:提供端到端的可靠数据传输服务,还提供可靠传输、差错检测、流量控制和拥塞控制等功能。主要的协议有:TCP、UDP协议等。

       (5)网络层:负责进行数据包的路由选择和分组转发,确保数据可以从源主机传输到目标主机。向上提供简单的、无连接的、尽最大努力的交付的服务。主要的协议有:IP、ICMP、IGMP、RIP、OSPF协议等。

       (6)数据链路层:提供点到点的可靠数据传输服务,将物理层提供的原始比特流封装成帧。它还提供了错误检测和纠正机制。常见协议有以太网(Ethernet)、Wi-Fi(802.11)、PPP、CSMA/CD协议等。

      (7)物理层:屏蔽传输媒体以及通信手段的差异,只关注如何在物理介质上传输二进制数据,主要协议有IEEE 802等。

2. 计算机网络为什么要分层?分层的优点是什么?★★★★

       由于计算机网络是一个复杂而且大的系统,分层主要是利用分而治之的思想,将大的问题分解为若干个更小的子问题,从而将复杂问题简单化。

       分层的主要优点有:

       (1)各层之间相互独立:每层只需要用合适的技术解决独立的问题,并不关心相邻层之间的实现,只是接受下层提供的服务,并为上层提供服务,降低问题复杂度;

       (2)灵活性好:当任何一层发生变化时,只要保持各层接口不变,则对某一层的修改将不影响相邻层间的功能实现;

       (3)结构上可分割:每层都可以采用最合适的技术来实现该层的功能;

       (4)易于实现和维护;

       (5)促进标准化工作:每层之间有明确的功能与服务。

3. 协议的三要素是什么?★★

       (1)语法:规定传输数据的格式。

       (2)语义:规定所要完成的功能。

       (3)同步:规定各种操作的顺序。

4. 电路交换、报文交换、分组交换的技术特点。★★★

       (1)路交换:

       定义:传输前,必须建立一条专用的物理通信路径,一直被独占,结束后才释放。

       优点:通信时延小,实时性好;有序传输;没有冲突;控制简单;适用范围广。

       缺点:建立连接时间长;线路使用效率低;灵活性差;控制简单。

       (2)报文交换:

       定义:数据交换的单位是报文,采用存储转发方式。

       优点:无须建立连接;动态分配线路;提高线路可靠性;利用率高;提供多目标服务。

       缺点:存储转发时延打;较大的缓存空间。

       (3)分组交换:

       定义:采用存储转发,限制每次传送数据块大小上限,加上一些控制信息,构成分组

       优点:没有建立时延;线路利用率高;简化了存储管理;并行加速传输;减少出错几率和重发数据量。

       缺点:存在传输时延;需要传输额外的信息量;采用数据报服务,出现失序、丢失、重复分组。

5. MAC地址、IP地址、域名分别在哪一层,有什么作用,用哪些协议建立这些地址的映射。★★★

       MAC地址在数据链路层,IP地址在网络层,域名在应用层。

       作用:

       MAC地址作用:区分网卡,这个地址不能改变。

       IP地址作用:区分用户,为每个用户对应一个IP地址。

       域名:便于记住网站。

       映射:

       IP转MAC协议:ARP

       MAC转IP协议:RARP

       域名转换成IP:DNS

6. 局域网中数据怎么传的?和WiFi无线网中传播的区别。★★

       局域网中的数据采用CSMA/CD协议。

       WIFI无线网中采用CSMA/CA协议。

7. 简述一下CSMA/CD协议。★★★

       CSMA/CD(载波监听多点接入/碰撞检测)协议的执行流程如下:

       (1)在发送数据前需要监听信道。如果信道忙,则持续等待;如果信道空闲,则在等待一段细微时间后将开始传输数据;(载波监听,碰撞检测)

       (2)在传输数据的过程中,一边传输一边监听信道是否发生碰撞。如果在争用期之内没有检测到碰撞,则说明已经独占信道,可以持续至完成发送;若在争用期内发生碰撞,则将停止数据发送,并发送一个拥塞信号;(边听边发,冲突停发)

       (3)检测到发生碰撞后,适配器将执行二进制退避算法随机等待一段时间后,在进行数据发送。(截断二进制指数规避算法,随机重发)

8. 简单介绍一下Http1.0~Http3.0★★★★★

(1)HTTP/1

非持久连接。每发起一个请求,都要新建一次 TCP 连接。而且HTTP/1是串行请求,不支持管道(流水线)。

(2)HTTP/1.1

HTTP/1.1是互联网的第一个真正意义的HTTP标准版本,也是应用最普遍的HTTP版本。

① 默认持久连接。无须每发起一个请求,都要新建一次 TCP 连接。减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。

② 默认管道传输(或流水线)。在同一个TCP连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

③ 有队头阻塞的问题。相同连接上的后续请求必须等待先前的请求完成,如果某个请求阻塞,所有后续请求都会阻塞。基于队头阻塞的问题,浏览器一般采用和服务端建立多个连接的方式来提高并发,而不是使用管道。

④ 无状态、明文传输、不安全。

(3)HTTP/2

一篇文章带你彻底了解HTTP 2.0_13250163的技术博客_51CTO博客

2015年HTTP/2发布。HTTP/2协议是基于HTTPS的,所以HTTP/2的安全性也是有保障。

头部压缩。HTTP/2会压缩Header信息,如User-Agent、Accept等。如果同时发出多个请求,他们的Header是一样或相似的,那么协议会消除重复的部分。采用了HPACK算法实现,在客户端和服务器同时维护一张头信息表,所有字段存入这个表,每个字段对应一个索引号,对于重复字段只发送索引号,这样就提高速度了。

二进制格式。HTTP/2不再像HTTP/1.1里的纯文本形式的报文(明文),而是全面采用了二进制格式,服务器收到报文后直接解析二进制报文,增加了数据传输的效率。

并发传输。HTTP/2引入了流,1个TCP连接可以包含多个流,每个流可以双向传输帧。帧是传输的最小单元,一个请求或响应消息就是由一或多个帧组成。不同消息的帧在各自的流上按照优先级并发地发送,接收方乱序接收不同请求的帧,根据每个帧首部的流标识符Stream ID 重新组装成消息。HTTP/2真正实现了多路复用,多个请求复用一个TCP连接,解决了HTTP的队头阻塞。没有解决TCP层队头阻塞,TCP报文一旦丢失,就会阻塞住所有的HTTP请求。

如图所示,有三个流,每个流可以双向传输帧,这里只发送了ABC三个请求的帧。

④ HTTP/2引入了静态推送功能,允许服务器在可用的新数据时向客户端发送更新,不需要客户端拉取。

(4)HTTP/3

3.7 HTTP/3 强势来袭 | 小林coding

HTTP/2是基于TCP和HTTPS的,连接建立的过程中握手过多,消耗的时间太长。HTTP/2有队头阻塞问题,且IP地址变化,TCP连接无法维持,对移动设备支持不好。

HTTP/3放弃了TCP协议,改为使用UDP协议。UDP不提供可靠传输、拥塞控制、流量控制等功能,需要在UDP和应用层之间新增一层QUIC协议,在QUIC协议中实现相关功能。

9. 简述一下与自治系统AS相关的内部网关协议和外部网关协议?★★★

       (1)内部网关协议IGP

       指自治系统内部所使用的路由选择协议,一般有路由信息协议RIP和开放最短路径优先协议OSPF。

       RIP:

       RIP协议是基于距离向量的路由选择协议。一条RIP路径最多包含15个路由器,当距离为16时表示不可达。该协议中路由器只和相邻路由器进行信息交换,交换的信息是路由表。它适用于小型网络,但在大型网络中存在收敛慢、更新频繁等缺点。

       OSPF:

       OSPF是一种基于链路状态的路由选择协议。协议中路由器发送的信息是相邻路由器的链路状态,并且使用洪泛法进行发送。最终,每个路由器都将建立一个链路状态数据库,即整个网路的拓扑结构。

       (2)外部网关协议EGP

       是指在不同自治系统之间交换信息的协议。例如BGP是一种EGP。通常每个自治系统需要选择一个路由器作为BGP发言人,并且建立使用TCP连接,利用BGP会话交换路由信息。

10. 为什么无线局域网不能使用CSMA/CD?★★★

       (1)无线信道特性:无线信道具有广播性质和随机性质,无法实现完全的碰撞检测。由于无线信道中存在传播延迟、多径效应、信号衰落等因素,无法准确检测到信号的冲突。与有线媒体不同,无线信道上的碰撞无法通过监听到碰撞信号来进行检测和处理。

       (2)信号干扰:在无线局域网中,多个设备共享同一无线信道进行通信。由于无线信号的传播范围和干扰范围较大,相邻的无线设备发送信号时容易相互干扰,导致更多的碰撞发生。

       (3)隐藏终端问题:无线局域网中存在隐藏终端问题,指的是即使在发送前进行了碰撞检测,但由于某些设备之间的距离较远或者受到障碍物的干扰,无法感知到对方的存在而导致碰撞。

11. 简述流量控制、拥塞控制和可靠传输机制的原理。★★★★

       (1)流量控制

       流量控制用于确保发送方与接收方之间的数据传输速率相匹配,以防止接收方无法及时处理大量的数据。

       流量控制通过使用滑动窗口协议来实现。

       发送方会根据接收方的接收能力缓冲区的剩余空间来动态调整发送数据的速率。当接收方的缓冲区快满时,它会发送一个流量控制信号给发送方,告知发送方降低发送速率,以避免数据丢失或溢出。

       (2)拥塞控制

       拥塞控制用于在网络中防止过多的数据流量导致网络拥塞。拥塞控制是一个端到端的过程,涉及到发送方、接收方以及中间设备(如路由器)。

       拥塞控制通过监测网络中的拥塞状态来调整发送速率。当网络中发生拥塞时,路由器会发送拥塞通知给发送方,告知其减少数据发送速率。发送方接收到拥塞通知后,会减少发送数据的速率以减轻网络拥塞。通过不断检测和调整发送速率,拥塞控制可以维持网络中的稳定性和公平性。

       (3)可靠传输

       可靠传输是一种确保数据在通信过程中不丢失、不损坏且按正确顺序到达目标地的机制。实现可靠传输通常需要以下几个关键技术:

       序号与确认、超时重传、滑动窗口、错误检测与纠正。

12. 什么是ARP协议?说说ARP的工作流程以及四种典型情况。★★★

       ARP用于将IP地址解析为物理MAC地址。每个网络设备都有一个唯一的MAC地址,而IP地址则用于在互联网上进行通信。

       ARP的工作流程:

       当一个设备需要发送数据到另一个设备时,它会首先检查自己的ARP缓存表。ARP缓存表存储了IP地址和对应的MAC地址。

       如果目标设备的MAC地址不在ARP缓存表中,发送设备将广播一个ARP请求消息到局域网上的所有设备,询问该目标IP地址对应的MAC地址。

       接收到ARP请求的设备会检查自己的IP地址是否与请求中的目标IP地址匹配,如果匹配,则会回复一个ARP应答消息,将自己的MAC地址提供给发送设备。

       发送设备接收到ARP应答后,将目标IP地址和对应的MAC地址添加到ARP缓存表中,并使用这个MAC地址发送数据包。

       四种典型情况:

       (1)发送方是主机,接收方是本网络的主机:用ARP找到目的主机的MAC地址。

       (2)发送方是主机,接收方是另一个网络的主机:用ARP找到本网络路由器的硬件地址,剩下工作交给路由器完成。

       (3)发送方是路由器,接收方是本网络的主机:用ARP找到目的主机的MAC地址。

       (4)发送方是路由器,接收方是另一个网络的主机:用ARP找到本网络路由器的硬件地址,剩下工作交给路由器完成

13. 什么是滑动窗口协议和停止等待协议,有什么区别,滑动窗口协议有什么优点。★★★

       滑动窗口协议:

       发送方和接收方都维护了一个固定大小的窗口,用于控制发送和接收的数据包数量。

       停止等待协议:

       发送方发送一个数据包后,就会停止发送并等待接收方的确认,只有在收到接收方的确认后,才会发送下一个数据包。

       与停止等待协议相比,滑动窗口协议具有以下区别和优点:

       (1)发送窗口和接收窗口:滑动窗口协议中,发送方和接收方都维护了一个窗口。发送窗口控制着允许发送的数据包数量,而接收窗口控制着允许接收的数据包数量。发送方可以连续发送多个数据包,而不需要等待每个数据包的确认。

       (2)流水线传输:滑动窗口协议支持流水线传输,即发送方可以一次发送多个数据包,而无需等待每个数据包的确认。这具有更高的传输效率和带宽利用率。

       (3)窗口大小动态调整:滑动窗口协议允许动态调整发送窗口和接收窗口的大小,根据网络状况进行自适应。通过调整窗口大小,可以更好地适应网络的延迟、丢包率等变化,提高传输效率和性能。这具有更好的动态适应性。

14. 为什么出现IPv6,和IPv4相比有什么优点?★★★★

       IPv6的可以解决IPv4地址短缺的问题。IPv6还增加了更多的功能和特性,改进首部的格式,快速处理/转发数据报,提供更高效的路由和更好的网络配置灵活性,同时还支持更多的安全特性。

       优点:

       (1)大规模地址空间:IPv6采用128位地址,相较于IPv4的32位地址,IPv6的地址空间巨大到几乎无限。

       (2)改进的性能和效率:IPv6在头部格式和地址分配方式上进行了优化,减少了路由器和主机处理数据包的开销,提高了网络性能和传输效率。

       (3)增强网络的安全性:IPv6在设计时考虑了一些安全机制的加强,例如IPSec(IP Security)协议的原生支持,提供了对数据传输的认证、加密和完整性校验,增强了网络的安全性。

15. IPv6和IPv4相比,报文首部的变化?★★

       (1)IPv6取消了首部长度字段,因为IPv6首部长度固定40字节。

       (2)IPv6取消了区分服务字段,IPv6数据报首部中的通信量类和流表号字段实现了区分服务字段的功能。

       (3)IPv6取消了总长度字段,改为有效载荷长度字段。这是因为IPv6数据报的首部长度是固定的40B,只有后面的有效载荷长度是不变的。

       (4)IPv6取消了标识、标志、片偏移字段,因为这些功能已经包含在IPv6数据报的分片扩展首部中。

       (5)IPv6把生存时间TTL字段改成跳数限制字段,这样名称与左右更加一致。

       (6)IPv6取消了协议字段,改用下一个首部字段。

       (7)IPv6取消了首部检验和字段,加快路由器处理IPv6数据报的速度。

       (8)IPv6取消了选项字段,改用扩展首部来实现选项功能。

16. 简述一下SDN的工作原理。★★★★

       SDN通过将网络的控制平面与数据平面分离,并将网络控制逻辑集中到一个中心化的控制器中来实现网络的灵活性和可编程性。

       传统的网络架构中,网络设备(如路由器)负责同时处理数据转发和网络控制功能。而在SDN中,网络设备仅负责数据转发,而控制逻辑则由集中式的控制器进行管理。控制器作为网络控制平面的中心,通过与网络设备间的OpenFlow等协议进行交互,向网络设备下发指令来控制和管理整个网络。

       SDN的工作原理可以简述如下:

       (1)分离控制平面和数据平面:SDN将网络设备的控制功能从设备本身分离出来,在控制器上进行集中管理和配置。这样可以实现控制逻辑的灵活编程和网络策略的集中管理。

       (2)集中式控制器:SDN网络中的控制器作为中心节点,负责网络的全局控制和管理。控制器与网络设备之间通过标准化的协议进行通信,如OpenFlow。控制器接收来自网络设备的状态信息,来指导数据包的转发行为。

       (3)网络编程和应用:在SDN中,控制器可以通过编程接口提供给应用程序,让应用能够根据需要控制和管理网络。

17. 简述一下TCP和UDP的区别。★★★★★

       (1)连接性

       TCP是面向连接的协议,它在通信之前需要建立一个可靠的双向连接,然后再进行数据传输。

       UDP是无连接的协议,它不需要在通信之前建立连接,直接将数据包发送出去。

      (2) 可靠性

       TCP提供可靠的数据传输,通过确认机制、重传机制和数据校验等方式来确保数据的完整性和正确性。如果数据包丢失或损坏,TCP会自动重新发送。

       UDP不提供可靠性保证,它只是简单地将数据包发送出去,不进行确认、重传或校验。如果数据包丢失或损坏,UDP也不会重新发送,因此可能会导致丢失部分数据。

      (3) 速度和效率

       TCP对数据传输进行了较多的控制和管理,包括流量控制、拥塞控制和差错检测等。这些额外的机制会增加延迟和网络开销,使得TCP的传输速度相对较慢。

       UDP没有这些额外的控制机制,使得它的传输速度更快、延迟更低。它适合用于实时性要求较高的应用,如音视频流媒体。

       (4)数据完整性

       TCP保证数据的可靠性和完整性,它会对数据进行序号标记、校验和重传等操作,确保数据包按正确的顺序到达目的地。

       UDP不提供数据的完整性保证,数据包可能会在传输过程中丢失、重复或乱序。因此,如果应用程序需要保证数据的完整性,需要自行实现相关机制。

       (5)报文格式

       TCP的首部开销大,首部最小20字节,最大60字节。

       UDP的首部开销小,只有8字节。

18. TCP的机制是什么?★★★★

       TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

       (1)面向连接

       在数据传输开始之前,TCP需要通过“三次握手”过程建立一个连接。数据传输完成后,通过“四次握手”过程终止连接。

       (2)可靠传输

       如果数据包在传输过程中丢失,TCP会重新发送丢失的数据包。通过序列号和确认应答(ACK)机制,TCP确保数据包按序到达。

       (3)基于字节流

       用户消息通过TCP协议传输时,消息可能会被操作系统分组成多个的TCP报文。数据的边界不由TCP维护,而是由上层应用层协议(如HTTP)来处理。

19. 详细说说TCP的拥塞控制?★★★

       TCP阻塞控制的基本原理是通过监测网络的拥塞情况和调整发送速率来实现。当网络出现拥塞时,数据包的丢失率和延迟会增加,为了避免进一步加重网络负载,TCP会降低发送数据的速率。

       以下是TCP阻塞控制的主要机制:

       (1)慢启动:在TCP连接建立后,发送方初始将拥塞窗口设置为一个较小的值(通常为1个MSS),然后每经过一个往返时间(RTT),拥塞窗口就会加倍。这种机制使得发送方在开始时以较慢的速度逐渐增加发送的数据量,以便观察网络状况。

       (2)拥塞避免:慢启动阶段过后,发送方会进入拥塞避免阶段。此时,拥塞窗口的增长速率变为线性增加,即每经过一个RTT,拥塞窗口只增加一个MSS。通过缓慢增加发送速率,TCP可以更好地探测到网络的容量,并避免过度拥塞。

       (3)快速重传:当发送方连续收到3个重复的确认应答时,它会认为某个数据包丢失,并立即进行重传,而不必等待超时。这可以提前恢复丢失的数据包,减少重传带来的延迟。

       (4)快速恢复:在快速重传后,发送方将进入快速恢复状态。此时,发送方会将拥塞窗口减半,并逐渐增加拥塞窗口的大小。这样做是为了降低发送速率,减少网络负载,同时也允许接收方继续接收数据。

20. 建立TCP连接为什么要三次握手,而不是不两次握手?★★★★

       TCP客户进程发出一个TCP连接报文段,但该报文段在某些网络节点长时间滞留,必然引起该报文段的超时重传。假设重传的报文段被TCP服务器进程正常接收,TCP服务器进程给TCP客户进程发送一个TCP请求确认报文段,进入已连接状态;进行数据传输和释放连接后再过一段时间,之前滞留在网络中失效的TCP连接请求报文段到达了TCP服务器进程,TCP服务器进程又发起一个TCP连接请求,而TCP客户进程处于关闭状态,因此不理会该报文段,而TCP服务器进程一直等待主机的资源。

21. 流量控制引发的死锁?怎么避免死锁的发生?★★

       当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。但是如果这个窗口不为0的应答在传输过程丢失,发送者一直等待下去,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。

       为了避免流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。时间一到便主动发送报文询问接收者的窗口大小。若接收者仍然返回零窗口,则重置该计时器继续等待;若窗口不为0,则表示应答报文丢失了,此时重置发送窗口后开始发送,这样就避免了死锁的产生

22. DNS域名解析的过程?★★★★

       DNS域名解析是将域名转换IP。

       (1)本地计算机的缓存查询:当用户在浏览器中输入一个域名时,首先会在本地计算机的缓存中进行查询。如果之前已经查询过该域名且缓存未过期,就可以直接获取到IP地址,跳过后续步骤。

       (2)本地域名服务器查询: 如果本地缓存中没有相关的域名记录,本地计算机会向配置的本地域名服务器发送查询请求。

       (3)进行迭代或递归查询: 如果本地域名服务器也没有该域名的缓存记录,它将充当客户端,向根域名服务器发出递归查询请求,询问根域名服务器该域名对应的顶级域名服务器的IP地址。进行迭代或递归查询,根域名服务器->顶级域名服务器->权限域名服务器。

23. DHCP的作用和工作原理。★★★

       作用:

       DHCP是一种基于UDP的网络协议,用于动态分配IP地址和其他网络配置信息给计算机设备。

       工作原理:

       DHCP服务器发现:当计算机设备加入网络或重新启动时,它会广播一个DHCP发现消息,以寻找可用的DHCP服务器。

       DHCP服务器提供:当有DHCP服务器收到DHCP发现消息后,它会回复一个DHCP提供消息,其中包含了可用的IP地址、子网掩码、网关、DNS服务器等网络配置信息。

       DHCP请求:计算机设备收到DHCP提供消息后,会选择一份提供中的IP地址配置,并向相应的DHCP服务器发送DHCP请求消息,请求获取该IP地址。

       DHCP确认:DHCP服务器接收到DHCP请求消息后,会向设备发送DHCP确认消息,确认分配给设备的IP地址和其他网络配置信息。

       IP地址续约:设备在租用IP地址的过程中,会周期性地向DHCP服务器发送续约请求,以延长IP地址的有效期。

       IP地址回收:当设备不再需要IP地址或断开与网络的连接时,它会发送DHCP释放消息,通知DHCP服务器回收该IP地址。

24. 为什么有MAC地址还需要IP地址?★★

       (1)各式各样的网络使用不同的硬件地址,IP地址的作用是屏蔽异构网路的差异,使得不同网络之间的设备可以进行信息交互。

       (2)IP地址的本质是终点地址,它在跳过路由器的时候不会改变,而MAC地址则是下一跳的地址,每一次经过一个路由器都会改变。

       (3)分别用MAC地址和IP地址表示物理地址和逻辑地址方便网络分层,使得网络层和数据链路层的协议可以更灵活地替换。

25. 在TCP拥塞控制中,什么是慢开始,拥塞避免,快重传和快恢复算法?★★★

       慢开始和拥塞避免:

       发送方会维持一个拥塞窗口,刚开始拥塞窗口和发送窗口大小相同,初值为1。每次收到一个确认,就让拥塞窗口大小变为原来的两倍,并以此类推,形成指数增大。而当窗口值等于慢开始门限值时,就会执行拥塞避免,窗口值每次加1,形成加法增大。若此时出现网络拥塞,则将拥塞窗口值重新设置为1,并且修改门限值为发生网络拥塞时的拥塞窗口值的一半;

       快重传和快恢复:

       当发送方收到三个连续确认时,发送方执行乘法减小策略,将拥塞窗口设置为当前的一半,同时对接收方请求的帧执行快重传算法立刻进行重传而不是等待超时,并且直接执行快恢复算法,即进入拥塞避免状态,采取加法增大每次将拥塞窗口大小+1。

26. 什么叫做HTTP无状态,为什么要无状态,如何让它有状态?★★★

       HTTP被称为无状态协议,是因为它本身不会保存任何关于客户端之前请求的状态信息。

       无状态的特点意味着每个HTTP请求都是独立的,服务器不会记住之前的请求信息。每次请求都需要携带完整的请求信息,服务器接收请求后进行处理并返回响应,然后与客户端断开连接。下次请求时,服务器不会知道这是同一个客户端的请求,也不会知道之前的请求的状态。

       HTTP设计为无状态的主要原因:

       可扩展性:无状态使得服务器不需要为每个客户端维护状态信息,可以处理大量的并发请求。如果有状态可能会增加服务器负担。

       简化:无状态使得请求和响应之间的交互相对简单,提高了协议的灵活性。

       虽然HTTP默认是无状态的,但有时候需要保持会话状态。常见的实现方式有:

       使用Cookie:服务器可以在响应中设置一个包含会话标识符的Cookie,客户端收到后保存起来,并在后续的请求中将Cookie发送给服务器,以此来识别和保持会话状态。

27. 简述HTTP和HTTPS的区别。★★★★★

       HTTPS是基于HTTP的加密传输协议,使用SSL或TLS协议对HTTP进行加密,使得传输过程更加安全可靠。过使用公钥加密和私钥解密的方式,对客户端和服务器之间的通信进行加密保护,使得第三方无法轻易获取和篡改传输的数据。

       主要区别如下:

       (1)安全性:HTTP不进行数据加密,数据以明文形式传输,容易被拦截、窃取和篡改;而HTTPS通过加密技术对数据进行加密,通信过程更加安全。

       (2)协议端口:HTTP默认使用80端口进行通信,而HTTPS默认使用443端口进行通信。

       (3)证书认证:HTTPS使用数字证书来验证网站的身份,确保通信的安全性和可信度,防止中间人攻击等安全问题;而HTTP不需要进行证书认证。

       (4)网络性能:由于HTTPS需要进行数据加密和解密操作,相比HTTP会增加一定的计算和传输开销,因此可能会稍微降低网络性能。

       应用场景:

       HTTPS通过加密技术保护了通信过程中的数据安全,适用于对数据安全性要求较高的场景,例如在线支付、用户登录等;

       而HTTP适用于一些对数据安全性要求不高的场景,例如博客

28. 请你说说HTTPS是如何建立连接的?

参考:3.1 HTTP 常见面试题 | 小林coding

      (1)HTTPS与HTTP一样,需要通过TCP协议三次握手建立连接。

      (2)建立TCP连接后,将进行SSL/TLS四次握手,利用RSA算法握手具体如下:

      ① 第一次握手:Client Hello

客户端通过发送一个Client Hello消息。Client Hello消息包含了支持的SSL/TLS版本、客户端生成的第一随机数和支持的加密套件列表等。

      ② 第二次握手:Server Hello

      服务器收到Client Hello后,回应一个Server Hello消息。Server Hello消息包含了确认使用的SSL/TLS版本、服务器生成的第二随机数,从客户端提供的加密套件列表中选择一个加密套件(如RSA算法、ECDHE算法)和服务器证书(包含服务器的公钥)等。

      ③ 客户端证书验证

      客户端收到服务器的Server Hello后,通过本地内置的可信任的认证机构的公钥,确认证书的有效性。

      ④ 第三次握手

      如果客户端验证证书有效,客户端用服务器公钥向服务器发送第三随机数。服务器和客户端有了这三个随机数,接着就用双方协商的加密算法,各自生成本次通信的会话秘钥。

      客户端生成好会话秘钥之后,给服务器发送加密通信算法改变通知,告诉服务器接下来使用会话秘钥加密通信,然后再把之前所有发送的数据做个摘要发送给服务器。

      ⑤ 第四次握手

      服务器生成好会话秘钥之后,给客户端发送加密通信算法改变通知,告诉客户端接下来使用会话秘钥加密通信,然后再把之前所有发送的数据做个摘要发送给服务器。

      (3)TLS的握手阶段结束后,客户端和服务器使用会话密钥加密HTTP数据,进行安全的数据传输。

29. 在浏览器里输入一个网址,会发生什么?★★★★★

面试官:请说一下浏览器从输入URL 到页面展示这个过程中都经历了什么?你能答出来吗?_哔哩哔哩_bilibili

浏览器访问网址,TCP传输全过程! - 知乎

你知道 HTTP 是如何使用 TCP 连接的吗?今天我就来告诉你!_网易订阅

       (1)域名解析(DNS查询)

       浏览器首先检查域名是否在本地缓存中,如果没有找到,则向DNS服务器发送请求,将域名解析为对应的IP地址。

       (2)建立TCP连接(TCP握手)

       浏览器使用解析得到的IP地址,浏览器内核将调用内核socket程序,TCP.socket.connect("http://www.baidu.com",80)函数向服务器的WEB程序80端口发起TCP连接请求。或443端口(HTTPS)建立连接。

       TCP连接的建立过程包括三次握手:客户端发送SYN,服务器回应SYN-ACK,客户端再发送ACK。

       (3)发送HTTP请求

       浏览器向服务器发送一个HTTP请求,请求可以包括GET或POST方法,请求特定的页面或其他资源。

       (4)服务器处理请求

       服务器接收到请求后,根据请求类型处理请求,这通常涉及到服务器端脚本的执行,如PHP、Python或Java等,以及数据库查询。

       (5)服务器响应

       服务器将请求的资源(HTML页面、图片、CSS样式表、JavaScript文件等)作为响应发送回浏览器。

       (6)浏览器处理响应

       浏览器开始解析服务器返回的HTML内容,并按照HTML的结构构建DOM(文档对象模型)树。

       浏览器加载HTML中引用的CSS样式表和JavaScript文件。

       如果页面中包含其他资源(如图片、视频、音频等),浏览器会继续发送HTTP请求来获取这些资源。

      (7)渲染页面

       浏览器根据CSS样式信息和DOM树渲染页面,将内容显示在屏幕上。

       JavaScript文件执行,可能会修改DOM树或CSS样式,导致页面重新渲染。

      (8)关闭连接

       在HTTP/1.0中,服务器通常在发送完响应后关闭TCP连接(四次挥手)。在HTTP/1.1中,如果浏览器或服务器没有明确指明关闭连接,则连接可能会保持打开状态,以供后续请求使用(持久连接)。

30. 一个TCP连接可以供多少HTTP连接使用?

       在HTTP/1.0和HTTP/1.1协议中,一个TCP连接可以供一个HTTP连接使用。

       HTTP/1.0属于非持久连接,通常每个HTTP请求都会打开一个新的TCP连接,请求完成后关闭连接。

       HTTP/1.1引入了持久连接,这使得单个TCP连接可以在发送完一个HTTP响应后保持打开状态,用于传输后续的HTTP请求和响应。尽管用管道机制,HTTP/1.1没有内建真正的并行请求处理机制。

       HTTP/2引入了多路复用,允许在单个TCP连接上并行发送多个HTTP请求和响应。

       HTTP/3不再使用TCP,而改为使用UDP,且在UDP和应用层之间新增一层QUIC协议。

31. TCP三次握手的过程是怎样的?★★

一开始,客户端和服务端都处于CLOSE状态。先是服务端主动监听某个端口,处于LISTEN状态。

(1)第一次握手

客户端会随机初始化序号(client_isn),将此序号填入TCP首部的32位序号字段中,同时把 SYN 标志位置为 1,表示希望建立连接。接着把第一个SYN报文发送给服务端,该报文不包含应用层数据,之后客户端处于SYN-SENT状态。

(2)第二次握手

服务端收到客户端的SYN报文后,首先服务端也随机初始化自己的序号(server_isn),将此序号填入TCP首部的32位序号字段中,其次在32位确认应答号字段填入client_isn+1,接着把SYN和ACK标志位置为 1。最后把该SYN和ACK报文发给客户端,该报文也不包含应用层数据,之后服务端处于 SYN-RCVD 状态。

(3)第三次握手

客户端收到服务端的SYN和ACK报文后,还要向服务端回应最后一个应答报文,首先该应答报文TCP首部 ACK 标志位置为 1 ,其次在32位确认应答号字段填入server_isn+1,最后把报文发送给服务端,这次报文可以携带客户到服务端的数据,之后客户端处于 ESTABLISHED 状态。服务端收到客户端的应答报文后,也进入 ESTABLISHED 状态。

 32. TCP四次挥手过程是怎样的?

(1)第一次挥手

客户端打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后客户端进入FIN_WAIT_1状态。

(2)第二次挥手

服务端收到该报文后,就向客户端发送ACK应答报文,接着服务端进入CLOSE_WAIT状态。客户端收到服务端的ACK应答报文后,之后进入FIN_WAIT_2状态。

(3)第三次挥手

等待服务端处理完数据后,也向客户端发送FIN报文,之后服务端进入LAST_ACK状态。

(4)第四次挥手

客户端收到服务端的FIN报文后,回一个ACK应答报文,之后进入TIME_WAIT状态

服务端收到了ACK应答报文后,就进入了CLOSE状态,至此服务端已经完成连接的关闭。

(5)等待2MSL

客户端在经过2MSL(报文最大生存时间)一段时间后,自动进入CLOSE状态,至此客户端也完成连接的关闭。

33. TCP为什么需要三次握手?两次握手或四次握手可以吗?

(1)三次握手可以保证双方具有接收和发送的能力

第一次握手服务端可以确认客户端的发送能力和服务端的接收能力是正常的;第二次握手客户端可以确认客户端和服务端的收发能力是正常的,但是服务端无法确认客户端的接收能力是正常的;第三次握手服务端可以确认客户端和服务端的收发能力都是正常的。

(2)三次握手可以防止历史连接的建立(最主要原因)

如果客户端有一个请求,但由于网络拥塞先后发送了两个SYN报文,其中旧的SYN报文有可能先到达服务器。

如果是两次握手,服务器收到了旧的SYN报文就会立刻建立连接。旧的SYN报文引起的第二次握手到达客户端,客户端会比较确认应答号字段是否是新的SYN报文的序列号+1,如果是旧的SYN报文发起的,那么会给服务器发送RST报文中止连接。服务器中止后,新的SYN报文又到达了服务器,此时才能建立起正确的连接。对比三次握手的相同情况,二次握手多建立起了一次连接,造成了资源的浪费。

(3)三次握手可以同步双方的初始序列号

TCP协议的通信双方,都必须维护一个序列号,才能保证按序可靠传输。也就是发送了携带了初始序列号的SYN报文,必须用携带了应答序列号的ACK报文来接收。四次握手其实也能够可靠的同步双方的初始化序号,可以把ACK和SYN报文合并在一起进行优化,所以就成了三次握手,这样减少了一次通信。二次握手少了一次ACK报文,也无法可靠的同步双方序列号。

(4)三次握手可以避免资源浪费

当客户端发的 SYN 报文在网络中阻塞,可能会超时重发多个SYN报文。如果多个SYN报文到达了服务端,这样会建立多个冗余的无效链接,造成不必要的资源浪费。

因此,通过三次握手能确认客户端和服务器的收发能力,防止历史连接的建立,能减少不必要的资源开销,能帮助双方同步初始化序列号。不使用两次握手是因为两次握手无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号;不使用四次握手是因为三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

34. 请你说说为什么四次挥手的TIME_WAIT时间是2MSL?为什么不是4MSL?

(1)如果第四次挥手的报文丢失了,服务端会超时重发第三次挥手报文,这一来一回的传输时间正好不超过2MSL,因为MSL指的是报文在网络中生存的最大时间。

(2)4MSL考虑的是第四次挥手报文丢失了两次,假设网络的丢包率1%,连续两次丢包就1/10000。连续两次丢包的概率实在太小了,因此2MSL的性价比最高。

35. 当视频突然卡帧,可能发生了什么?★★★★

(1)网络带宽限制。视频流需要较高的带宽来保证流畅播放,如果网络带宽不足以支持视频流的传输速率,就会导致视频卡顿。

(2)网络拥塞。网络中的数据流量过大,导致路由器或交换机处理不过来,造成数据包丢失或延迟,影响视频流的连续性。

(3)数据包丢失或错误。在传输过程中,数据包可能会丢失或出错。如果是TCP流,丢失的数据包会被重传,但这会导致延迟;如果是UDP流,丢失的数据包可能不会被重传,导致视频画面出现卡顿。

(4)服务器或源站问题。视频的源站服务器可能因为过载、配置不当或硬件故障等原因,无法持续稳定地发送视频流。

(5)客户端问题。接收直播视频的客户端设备可能因为处理器能力不足、内存不足或解码器问题,无法及时处理和解码视频流。

36. 如何提高一个文件的下载速度,如何加速网络传输?★★★

(1)提高一个文件的下载速度

① 使用分块下载(chunking)和多线程并行下载。通过将文件划分成若干小块,每个线程同时请求不同块,并在客户端拼接起来,这样可以绕开单线程下载中的等待瓶颈。

② 对服务端发送的内容压缩传输,也能有效减少传输量,从而提升速度。

(2)加速网络传输其他方法

如果有多个请求,可以使用HTTP/2复用一个TCP连接,减少三次握手开销。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值