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

顾得泉:个人主页

个人专栏:《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.mzph.cn/news/838379.shtml

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

相关文章

函数栈帧的创建和销毁(详细理解)

🎁个人主页:我们的五年 🔍系列专栏:c语言课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 问题: 1.ebp,esp两个寄存器用来维护函数栈帧 2.main函数也一个函数&#…

Darknet+ros+realsenseD435i+yolo(ubuntu20.04)

一、下载Darknet_ros mkidr -p yolo_ws/src cd yolo_ws/src git clone --recursive https://github.com/leggedrobotics/darknet_ros.git #因为这样克隆的darknet文件夹是空的,将darknet_ros中的darknet的文件替换成如下 cd darknet_ros git clone https://github.…

2024年湖北省安全员-B证证模拟考试题库及湖北省安全员-B证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-B证证模拟考试题库及湖北省安全员-B证理论考试试题是由安全生产模拟考试一点通提供,湖北省安全员-B证证模拟考试题库是根据湖北省安全员-B证最新版教材,湖北省安全员-B证大…

错误: 找不到或无法加载主类问题(已解决)

今天在虚拟机中安装了idea2023.2的版本,运行代码时发现错误找不到主类! 直接说结论: 我先clean了一下target,然后重新build,发现maven报错了,idea2023.2默认使用了内置的maven,然后我切换了一下…

Linux基础之僵尸进程与孤儿进程

目录 一、僵尸进程 1.1 什么是僵尸进程 1.2 为什么要有僵尸状态 1.3 观察我们的僵尸状态 1.4 关于僵尸进程的小Tip 二、孤儿进程 2.1 什么是孤儿进程 一、僵尸进程 1.1 什么是僵尸进程 在上一篇文章中,我们有提到过进程的死亡状态的概念,而我们的…

Transformer 模型

文章目录 前言一、模型结构 前言 Transformer 模型是由谷歌在 2017 年提出并首先应用于机器翻译的神经网络模型结构。机器翻译的目标是从源语言(Source Language)转换到目标语言(Target Language)。Transformer 结构完全通过注意力…

IDC:2023年中国IT安全软件市场同比增长4.7%

IDC最新发布的《中国IT安全软件市场跟踪报告,2023H2》显示,2023年下半年中国IT安全软件市场厂商整体收入约为169.8亿人民币(约合23.5亿元美元),同比上升2.7%。结合全年数据,2023全年中国IT安全软件市场规模…

Linux命令使用

一、ls tree clear 1.1 ls ls:查看当前目录下的文件名ls 目录名:查看指定目录下的文件名ls /:查看根目录下的文件名ls -a:查看当前目录下的所有文件名,包括隐藏文件ls -l:查看当前目录下文件的详细信息…

Java中的数组、Set、List、Map类型的互相转换总结

序言 数组、Set、List、Map是Java语言非常常用的几种数据类型,他们之间存在着千丝万缕的联系。关于底层的数据结构我这里就不再多说啦,直接从应用出发,总结他们之间的转换方法,并给出推荐方法。 大家可以点赞收藏等到需要的时候…

【JAVA】嵌入式软件工程师-2025校招必备-详细整理

一、Java 基础 1.JDK 和 JRE 有什么区别? jdk:java development kit jre:java runtime Environment jdk是面向开发人员的,是开发工具包,包括开发人员需要用到的一些类。 jre是java运行时环境,包括java虚拟机…

SVDD(Singing Voice Deepfake Detection,歌声深度伪造检测)挑战2024

随着AI生成的歌声快速进步,现在能够逼真地模仿自然人类的歌声并与乐谱无缝对接,这引起了艺术家和音乐产业的高度关注。歌声与说话声不同,由于其音乐性质和强烈的背景音乐存在,检测伪造的歌声成为了一个特殊的领域。 SVDD挑战是首个…

电脑常用的PDF阅读器-嗨动PDF编辑器!带你详细了解它

电脑常用的PDF阅读器-嗨动PDF编辑器!在数字化信息爆炸的时代,PDF格式的文件因其易于打印和保留原始格式等优点,成为了人们日常工作和学习的常用格式。而对于PDF文件的处理,一款功能强大、操作简便的PDF阅读器是必不可少的。今天&a…

SprintBoot案例-增删改查

黑马程序员JavaWeb开发教程 文章目录 一、准备工作1. 准备数据库表1.1 新建数据库mytlias1.2 新建部门表dept1.3 新建员工表emp 2. 准备一个Springboot工程2.1 新建一个项目 3. 配置文件application.properties中引入mybatis的配置信息,准备对应的实体类3.1 引入myb…

weblogic 任意文件上传 CVE-2018-2894

一、漏洞简介 在 Weblogic Web Service Test Page 中存在一处任意文件上传漏洞, Web Service Test Page 在"生产模式"下默认不开启,所以该漏洞有一定限制。利用该 漏洞,可以上传任意 jsp 文件,进而获取服务器权限。 二…

[链表专题]力扣141, 142

1. 力扣141 : 环形链表 题 : 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾…

数据结构------二叉树经典习题1

博主主页: 码农派大星. 关注博主带你了解更多数据结构知识 1判断相同的树 OJ链接 这道题相对简单,运用我们常规的递归写法就能轻松写出 所以我们解题思路应该这样想: 1.如果p为空,q为空,那么就是两颗空树肯定相等 2.如果一个树为空另一棵树不为空那么…

2024年,诺基亚手机发售仅一天就售罄

在智能手机越来越同质化的今天,各家都只卷性能和相机,大火的 AI 对于咱来说好像实用性又不太大,机圈属实整的有点儿无聊。 不过在阿红这两天上网冲浪的时候,一个陌生又熟悉的名字闯入了我的视线,——诺基亚&#xff08…

维护表空间中的数据文件

目录 向表空间中添加数据文件 从表空间中删除数据文件 删除users表空间中的users02.dbf数据文件 对数据文件的自动扩展设置 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 维护表空间中的数据文件主要包括向表空间中添…

8个迹象表明你需要一台新笔记本电脑,看一下你的笔记本是否有其中一个

序言 当你第一次打开你的笔记本电脑的盒子时,它会以最高性能运行,电池寿命更长,过热最小,资源使用效率高。然而,随着笔记本电脑的老化,它将不能满足预期用途。以下几个迹象表明,可能是时候寻找并投资一款新设备了。 你的设备不再具有预期用途 如果你的笔记本电脑不再…

“图生视频”技术创新:剪贴画秒变动画生成的实验验证与分析

在最近的研究进展中,AniClipart系统的问世标志着文本到视频生成技术的一个重要里程碑。这一系统由香港城市大学和莫纳什大学的研究者们共同开发,旨在解决将静态剪贴画图像根据文本提示自动转换成动画序列的挑战。传统的动画制作流程繁琐且耗时&#xff0…