计网面试干货---带你梳理常考的面试题

2024-05-16 00:12

本文主要是介绍计网面试干货---带你梳理常考的面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

顾得泉:个人主页

个人专栏:《Linux操作系统》 《C++从入门到精通》  《LeedCode刷题》

键盘敲烂,年薪百万!


一、HTTP和HTTPS的区别

       1.安全性:HTTPS通过SSL/TLS协议对数据进行加密处理,有效防止数据在传输过程中被窃听或篡改。而HTTP传输的数据是明文形式,不进行加密处理,因此安全性较低。

       2.端口:HTTP的标准端口是80,而HTTPS的标准端口是443。

       3.加密方式:HTTPS使用SSL/TLS协议对数据进行加密,这增加了额外的计算资源消耗,可能导致带宽和CPU使用率增加。而HTTP不进行加密处理,因此在性能上可能略优于HTTPS。

       总的来说,虽然HTTP在传输速度上可能略优于HTTPS,但考虑到数据安全的重要性,推荐网站使用HTTPS协议来传输数据,以提升网站的安全性和用户体验。随着技术的进步和普及,HTTPS的性能损耗正在逐渐减少,同时越来越多的浏览器和搜索引擎都在鼓励使用HTTPS,以提供一个更加安全的网络环境。


二、HTTPS如何确保安全性

       1.加密通信:HTTPS使用SSL/TLS协议对数据进行加密。这意味着所有通过HTTPS传输的数据都会被加密,即使数据在传输过程中被截获,没有相应的密钥也无法解读数据内容。

       2.身份验证:SSL/TLS协议还包括了身份验证的步骤,确保通信双方是可信的。这通常是通过SSL证书来实现的,证书由权威的证书颁发机构(CA)签发,保证了服务器的真实性。

       3.完整性保护:除了加密和身份验证之外,HTTPS还确保数据的完整性,防止数据在传输过程中被篡改。这是因为SSL/TLS协议会使用消息认证码(MAC)来验证数据是否在传输过程中被更改。

       4.安全连接:HTTPS在客户端(通常是用户的浏览器)和服务器之间建立一个安全的连接,这个连接是通过协商加密算法和交换密钥来建立的。这个过程通常称为“握手”,是确保后续通信安全的关键步骤。


三、TCP和UDP的区别

       1.连接性:TCP是一种面向连接的协议,它在数据传输前需要通过3次握手过程建立连接,而UDP是无连接的,它可以直接发送数据,不需要建立连接过程。

       2.可靠性:TCP提供可靠的数据传输服务,包括数据包的顺序传送、错误检测与重传等,确保数据能够按顺序、完整地到达接收端。相比之下,UDP不保证数据的可靠传输,它不进行错误检测和纠正,也不保证数据包的顺序,因此可能会出现数据丢失或乱序的情况。

      3. 传输方式:TCP面向字节流,意味着数据被看作一连串的字节流进行传输,而不是独立的数据包。UDP则是面向报文的,每个数据报文都是独立传输的,保持了报文的边界。

       4.效率和速度:由于UDP没有复杂的传输控制机制,它的首部开销小(只有8个字节),对系统资源的要求较少,因此在传输速率上通常比TCP更快。而TCP首部有20个字节,且需要进行流量控制和拥塞控制,对系统资源的消耗更多。

       5.应用场景:TCP适用于对数据完整性和可靠性要求较高的应用,如文件传输、电子邮件、网页浏览等。而UDP适用于对实时性要求较高或对可靠性要求不高的应用,如在线视频、音频通信和某些游戏。

       总的来说,TCP和UDP各有优势和适用场景。TCP以其可靠的数据传输机制在许多应用中发挥着重要作用,而UDP则以其高效快速的特点在特定领域得到应用。


四、TCP的链接过程

TCP的连接过程通常被称为三次握手

       第一次握手:客户端向服务器发送一个TCP报文,其中SYN(同步序列编号)标志位设置为1,表明这是一个连接请求,并且包含一个随机的初始序号(seq=x)。此时,客户端进入SYN_SENT状态,等待服务器的响应。

       第二次握手:服务器收到客户端的连接请求后,如果同意建立连接,则会返回一个TCP报文。在报文中,服务器也会将SYN和ACK(确认)标志位都设置为1,确认号(ack)设置为客户端初始序号加1(ack=x+1),并且包含服务器自己的初始序号(seq=y)。这表示服务器已经准备好接受数据,此时服务器进入SYN_RCVD状态。

       第三次握手:客户端再次向服务器发送报文,报文中ACK标志位设置为1,确认号设置为服务器初始序号加1(ack=y+1)。这个报文是对服务器SYN报文的确认。完成这一步之后,双方确认了彼此的初始序号,并准备好开始数据传输。此时,TCP连接正式建立,并且是全双工模式,也就是说数据可以在两个方向上同时传输。

       总的来说,这个过程确保了通信双方能够确知对方的存在,并且可以协商一些传输参数,如最大报文段长度、最大窗口大小等,同时也对传输实体资源进行分配,如缓存大小等。


五、TCP如何实现数据的可靠性

       1.序列号/确认应答:每个数据包都被赋予一个唯一的序列号,接收方使用确认号来告知发送方已成功接收的数据。如果发送方在一定时间内未收到某个数据包的确认,它会重传这个数据包。

       2.超时重传:当发送方发送数据后会启动一个定时器,如果在定时器超时前没有收到相应的确认应答,发送方会重新发送该数据。这种机制确保了即使确认应答丢失或延迟,数据也不会丢失。

       3.检验和:TCP首部包含了检验和字段,用于检查数据在传输过程中是否出现错误。接收端在接收到数据后会计算检验和并与首部的检验和比对,不匹配则说明数据出错并丢弃相应的TCP段,随后发送方会重新发送。

       4.滑动窗口控制:通过滑动窗口机制,发送方可以连续发送多个数据报文段而不必等待每个报文段的确认应答,从而提高传输效率。窗口的大小可以根据接收方的处理能力和网络状况进行调整。


六、TCP为什么要三次握手

       TCP协议使用三次握手来建立连接主要是为了确保数据传输的可靠性和正确性。具体分析如下:

       1.防止历史连接:三次握手可以防止已经失效的连接请求突然被服务器接收到,从而错误地建立连接。如果是两次握手,服务器在收到第一个握手(SYN)后直接进入连接状态,如果这个报文是之前某个连接的延迟报文,那么会导致错误建立连接。

       2.同步初始序列号:通过三次握手,客户端和服务器可以相互通知对方自己的初始序列号,这个序列号用于后续数据传输中的序号和确认号的同步,确保数据包的正确排序和检测丢失的数据包。

       3.避免资源浪费:三次握手可以确保双方都具备接收和发送数据的能力。在第三次握手时,客户端再次确认服务器的SYN,这样服务器就知道客户端已经准备好接收数据了。如果此时客户端没有发送确认,服务器会知道连接没有建立成功,从而释放相关资源,避免资源的浪费。


七、TCP为什么不能两次握手

       TCP协议使用三次握手来建立连接,而不能使用两次握手的原因是为了确保数据传输的可靠性和安全性。

       在两次握手的情况下,客户端发送连接请求到服务器,服务器收到请求后返回确认信息,此时客户端会认为连接已经建立,可以发送数据了。但是,如果这个确认信息在网络中被延迟,那么服务器并没有收到客户端的请求,但是客户端已经开始发送数据了。这种情况下,服务器会以为是一个新的连接请求,从而向客户端发送确认信息。此时,客户端会认为这个确认信息是对之前请求的回应,从而建立了一个错误的连接。这种错误的连接可能会导致数据包的丢失、重复、乱序等问题,从而导致数据传输的不可靠性和安全性。

       因此,TCP协议使用三次握手来建立连接,通过第三次握手的确认信息来确保双方都已经收到并确认了对方的请求和响应,从而保证数据传输的可靠性和安全性。


八、TCP为什么要四次挥手

       第一次挥手:客户端向服务器发送FIN报文,表明自己已经没有数据要发送了。但此时客户端仍然能够接收数据。

       第二次挥手:服务器收到客户端的FIN报文后,会发送ACK报文作为响应,确认序号为收到序号加1。此时,客户端进入FIN_WAIT_2状态。

       第三次挥手:服务器向客户端发送FIN报文,表明服务器也没有数据要发送了。然后客户端回应ACK,确认序号为收到序号加1。

       第四次挥手:客户端等待一段时间后,确定服务器端没有更多数据发送,就关闭连接。


九、TCP/IP五层模型是什么

       1.物理层: 负责光 / 电信号的传递方式 . 比如现在以太网通用的网线 ( 双绞 线 ) 、早期以太网采用的的同轴电缆(现在主要用于有线电视 ) 、光纤 , 现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器 (Hub) 工作在物理层 .
       2.数据链路层: 负责设备之间的数据帧的传送和识别 . 例如网卡设备的驱动、帧同步 ( 就是说从网线上检测到什么信号算作新帧的开始) 、冲突检测 ( 如果检测到冲突就自动重发 ) 、数据差错校验等工作 . 有以太网、令牌环网, 无线 LAN 等标准 . 交换机 (Switch) 工作在数据链路层 .
       3.网络层: 负责地址管理和路由选择 . 例如在 IP 协议中 , 通过 IP 地址来标识一台主机 , 并通过路由表的方式规划出两台主机之间的数据传输的线路( 路由 ). 路由器 (Router) 工作在网路层 .
       4.传输层: 负责两台主机之间的数据传输 . 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
       5.应用层: 负责应用程序间沟通,如简单电子邮件传输( SMTP )、文件传输协议( FTP )、网络远程访问协议(Telnet )等 . 我们的网络编程主要就是针对应用层

十、HTTP1.0/1.1/2.0的区别

       HTTP1.0:是第一个广泛使用的HTTP版本,它使用短连接,每个请求都需要建立一个新的TCP连接。因此,每次请求都需要经历三次握手和慢启动过程,这会导致连接建立的延迟和网络拥塞。此外,HTTP1.0不支持长连接,每个请求完成后都会关闭TCP连接,导致请求响应速度较慢。

       HTTP1.1:通过引入持久连接来解决HTTP1.0的问题,即同一个TCP连接可以发送多个请求和响应。此外,HTTP1.1还引入了管道化技术,使得客户端可以同时发送多个请求而无需等待响应,从而提高了网络性能。此外,HTTP1.1还支持分块传输编码和压缩传输等技术来提高传输效率。

       HTTP2.0:相对于HTTP1.x,HTTP2.0的最大变化是采用了二进制协议而非文本协议,提高了传输效率。此外,HTTP2.0还支持多路复用技术,即在一个TCP连接上可以同时处理多个请求和响应,从而避免了HTTP1.x中建立多个TCP连接的问题。同时,HTTP2.0还支持服务器推送技术和头部压缩等功能。


结语:关于本次常见面试题的梳理到这里就结束了,希望本篇文章的分享会对大家的面试带来些许帮助,如果大家有什么问题,欢迎大家在评论区留言,最后祝愿每位伙伴都能找到心意的工作。 

这篇关于计网面试干货---带你梳理常考的面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/993321

相关文章

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern

梳理2024年,螺丝钉们爱用的3款剪辑软件

这年头,视频到处都是,就跟天上的星星一样数不清。不管你是公司里的新面孔,还是职场上的老狐狸,学会怎么剪视频,就好比找到了赢的秘诀。不管是给上司汇报工作,展示你的产品,还是自己搞点小视频记录生活,只要是剪辑得漂亮,肯定能一下子吸引大家的目光,让人记得你。咱们今天就来侃侃现在超火的三款视频剪辑工具,尤其是PR剪辑,你肯定听说过,这货在剪辑界可是大名鼎鼎,用它剪视频,既专业又麻利。 NO1. 福昕轻松

贝壳面试:什么是回表?什么是索引下推?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 1.谈谈你对MySQL 索引下推 的认识? 2.在MySQL中,索引下推 是如何实现的?请简述其工作原理。 3、说说什么是 回表,什么是 索引下推 ? 最近有小伙伴在面试 贝壳、soul,又遇到了相关的

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不