前端网络相关面试题

1. GET和POST请求的区别

  • 传递参数不同:

    • POST传递的参数在request body
    • GET传递的参数在url后拼接
  • GET请求一般用于查询POST一般用于提交某种信息进行某些修改操作

  • POST相对GET请求安全

  • GET请求会被浏览器主动缓存,POST不会,要手动设置

  • GET请求长度有限制,POST没有

2. POST和PUT请求的区别

  • PUT请求为更新数据
  • POST为创建数据

3. HTTP 1.1 和 HTTP 2.0 的区别

  • 二进制协议

    • HTTP1.1的解析是基于文本
    • HTTP2使用二进制,将请求和响应分割为更小的帧,从而实现多路复用
  • 多路复用:在一个连接里,客户端和服务器都可以同时发送多个请求或回应,而且不用按照顺序一一发送,这样避免了HTTP队头阻塞,但是TCP的队头阻塞依旧存在

    • HTTP队头阻塞:在同一域名下浏览器的连接数有限制,并且请求要在连接内按顺序处理,这样就会导致某个请求的延迟或阻塞会影响后续请求的处理
    • TCP队头阻塞:在一个TCP连接中,如果某个数据包在传输过程中失误或者丢失,那么在这个数据包后发送的所有数据都需要等待,直到该数据被重新传输。这种情况会导致接收方在TCP缓冲区中,后续的数据包被阻塞在错误数据包之后,无法继续处理,即被堵塞在队头
  • 头部信息压缩

    • HTTP1.1每次请求都会带上所有信息,比如Cookie,这样会很浪费性能
    • HTTP2引入头部压缩,将头部信息使用gzip压缩后再发送,客户端和服务器同时维护一张头部信息表,所有字段都会存入这张表,生成索引,只发送索引就可以
  • 服务器推送HTTP2允许服务器向客户端主动发送资源,只限于静态资源如cssimg

4. HTTP和HTTPS协议的区别

  • HTTPS需要CA证书,HTTP不需要
  • HTTP是明文传输,不安全;而HTTPS基于SSL进行加密,相对安全
  • HTTP端口为80HTTPS端口443

5. HTTP请求中的keep-alive

  • HTTP协议中keep-valie是一种长连接
  • HTTP1.0中默认是每次请求/应答,客户端和服务器都会建立一次连接,请求完成后立即断开,这种是短连接
  • 当使用keep-alive后,客户端和服务端的连接持续有效,后续的请求就会避免重复建立连接,减少服务器负担降低延迟,这种就是长连接
  • 使用方式:通过在HTTP请求头中添加Connection: keep-alive字段,服务端会在响应头中添加Connection: keep-alive字段通知客户端长连接已经建立
  • HTTP1.1默认开启了长连接,除非在请求或响应头中明确关闭它
  • HTTP2中使用了多路复用,允许在同一个连接上处理多个请求和响应,取代了keep-alive机制

6. 三次握手和四次挥手

三次握手

建立一个TCP连接时,需要客户端和服务器总共发送3个包,主要作用是为了确认双方接受和发送能力是否正常。

为什么是三次:为了确认双方的接收和发送能力都正常,服务端在发送完SYN报文后,客户端需要回复一个ACK告诉服务的确认有效。

  • 初始化:客户端处于Closed状态,服务端处于 Listen 状态

  • 第一次握手:客户端给服务器发送一个TCP报文【向服务器请求连接】

    • SYN = 1 建立一个新链接
    • seq = x 随机序列号
    • 此时客户端处理SYN-SEND状态
  • 第二次握手:服务器接收到 SYN 报文后,回复浏览器 【同意连接】

    • SYN = 1 同意建立一个新链接
    • ACK = 1 确认收到序列号
    • seq = y 随机序列号
    • ack = x + 1 确认收到序列号是 x
    • 服务端进入 SYN-REVD阶段
  • 第三次握手:浏览器收到报文后回复服务器 【收到回复】

    • ACK = 1 确认收到序列号

    • seq = x + 1 上一次浏览器发送的 seq = x 基础上 + 1

    • ack = y + 1 确认收到的序列号是服务器回复的 y

    • 服务器和浏览器同时进入 ESTABLISHED 状态

    • 此时双方连接已建立,开始传送数据

四次挥手

为什么是四次:客户端发送FIN报文后,表示客户端当前没有数据需要处理,而不代表服务端没有数据需要处理。此时需要服务端回复ACK确认收到报文后,开始处理内部数据。当内部数据处理完后,再回复FIN可以关闭连接。

  • 刚开始双方都处于 ESTABLISHED 状态
  • 第一次挥手:向服务器发送报文
    • FIN = 1 关闭连接
    • seq = u 随机序列号
    • 浏览器进入 FIN-WAIT-1 半关闭阶段
  • 第二次挥手:服务器收到报文后,知道浏览器要断开链接,开始处理内部操作
    • ACK = 1 确认收到序列号
    • ack = u + 1 确认收到序列号为 u
    • seq = v 随机序列号
    • 服务器进入 COLSE-WAIT 处理阶段
    • 浏览器进入 FIN-WAIT-2 阶段 等待服务器处理
  • 第三次挥手:服务器处理完毕 回复浏览器
    • FIN = 1 关闭连接
    • ACK = 1 确认收到序列号
    • ack = u + 1 确认收到序列号为u
    • seq = w 随机序列号
    • 服务器进入 LAST-ACK 阶段 等待浏览器确认收到
  • 第四次挥手:浏览器收到服务器报文 回复服务器
    • ACK = 1
    • seq = u + 1
    • acl = w + 1
    • 浏览器进入 TIME-WAIT 阶段,此时TCP未释放掉,等待 2MSL(毫秒),等待服务器收到自己的报文,然后进入 COLSE 阶段

7. 在浏览器输入URL并按下回车会发生什么

  • URL解析:判断URL是否符合规范
  • 浏览器判断缓存:判断请求的资源是否有缓存
    • 有就不需要向服务器发送新的请求
  • DNS解析:获取目标服务器ip
  • 建立TCP连接(三次握手)
  • 发送HTTP请求
  • 服务器处理,返回数据
  • 浏览器解析渲染页面
  • TCP连接关闭(四次挥手)

8. 什么是HTTPS协议?如何加密的?

  • HTTPS是在HTTP层和TCP层中间加了一个SSL/TLS安全层进行加密,避免HTTP协议存在的信息窃听、信息劫持等风险
    • HTTP协议采用明文传输信息,很容易被窃听、篡改、劫持
  • SSL/TLS安全层可以对身份进行验证、信息加密解密
  • 安全层依赖于三个算法:
    • 对称加密:用一个密钥加密数据,加密后也可以对其解密。存在安全风险,容易被劫持
    • 非对称加密:一个公钥一个私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开
    • CA证书:向机构申请一份CA证书,里面包含网站信息和公钥,服务端把证书传给浏览器,浏览器验证证书,拿到公钥
  • 加密过程:安全层采用混合加密(对称加密 + 非对称加密)

9. TLS/SSL的工作原理

  • LS/SSL的功能实现主要依赖三类基本算法:散列函数hash对称加密非对称加密
  • 客户端使用非对称加密与服务器进行通信,实现身份的验证并协商对称加密使用的秘钥

10. HTTP状态码

  • 1XX: 请求正在处理

  • 2XX:正常状态码

    • 200:请求处理成功
    • 201:请求成功并且服务器创建了新资源
    • 202:服务器已经接收请求,但尚未处理
  • 3XXX:重定向状态

    • 301:请求重定向
    • 302:临时重定向
    • 303:临时重定向,使用get请求新的url
    • 304:浏览器缓存相关
  • 4XX:错误状态码

    • 400:服务器无法理解请求格式,需要修改请求内容后再次发起请求
    • 401:请求未授权
    • 403:禁止访问
    • 404:服务器上无法找到请求资源
  • 5XX:服务器错误

    • 500:服务端错误
    • 503:服务器暂时无法处理请求

11. DNS完整的查询过程

DNS域名解析过程:

  • 查看浏览器缓存是否有对应IP,有则直接返回,没有下一步
  • 发送请求到本地DNS服务器,缓存中有则返回,没有就向上级服务器迭代查询
  • 本地DNS服务器向根域名服务器发送请求,根域名服务器会返回一个顶级域名服务器地址
  • 本地DNS服务器向顶级域名服务器发送请求,顶级域名服务器查询自己的缓存,如果就返回,没有就返回下一级权威域名服务器地址
  • 本地DNS服务器向权威域名服务器发送请求,服务器返回域名对应的ip
  • 本地DNS服务器将返回结果保存,方便下次查询
  • 本地DNS服务器将IP返回给浏览器

12. OSI七层模型

  • 物理层:负责传输原始的比特流(0和1),通过物理媒介(如光纤、电缆、无线等)将数据从一个节点传输到另一个节点
  • 数据链路层:在物理连接上传输数据帧,并处理帧的传输错误,它还负责物理地址(MAC地址)的寻址和数据帧的识别
  • 网络层:处理数据包的路由和转发,负责将数据从源主机发送到目标主机,包括寻找最佳路径和实现路由选择
  • 传输层:提供端到端的数据传输服务,包括数据的分段、重组和错误恢复,确保数据可靠地传输
  • 会话层:负责建立、管理和终止会话(会话是两个应用程序之间的通信会话),并提供会话恢复功能
  • 表示层:处理数据的表示和编码,确保数据格式在不同系统之间的交换和解释
  • 应用层:为用户提供应用服务,包括网络服务和应用程序之间的交互,例如电子邮件、文件传输、远程登录等
    在这里插入图片描述

13. TCP/IP五层协议

  • 应用层HTTP协议 FTP协议 DNS查询
  • 传输层:提供通信
    • UPD无连接 最大努力传输服务 不安全
    • TCP 面向连接 数据可靠
  • 网络层:路由器 交换机
  • 数据链条层: IP数据封装成帧 在两个相邻节点间传送
  • 物理层: 确保数据在物理媒介上传输
    在这里插入图片描述

14. TCP和UDP的区别

TCP和UDP都是传输层协议,都属于TCP/IP协议族

TCP:

  • 面向连接
  • 一对一,不支持广播和多播
  • 面向字节流
  • 可靠传输
  • 提供拥塞控制
  • 提供全双工通信

UDP:

  • 面向无连接,不需要建立三次握手
  • 支持一对一、一对多、多对多方式
  • 面向报文
  • 不可靠

15. UDP为什么不可靠

  • 传输数据之前不需要先建立连接
  • 不需要确认
  • 不跟踪连接

16. TCP和UDP的应用

TCP应用层协议:

  • HTTP:用于在Web浏览器和Web服务器之间传输超文本数据

  • SMTP:用于电子邮件的发送

  • POP3IMAP:用于从电子邮件服务器接收邮件

  • FTP:用于在客户端和服务器之间传输文件

  • SSH:用于远程登录和安全传输数据

  • HTTPS:是安全的HTTP,使用SSL/TLS进行加密,它在TCP上运行,用于安全的网页浏览。

UDP应用协议:

  • DNS:用于将域名映射到IP地址,DNS使用UDP进行快速的查询和响应

  • DHCP:用于为设备分配IP地址和其他网络配置

  • SNMP:用于网络设备的监控和管理

  • TFTP:类似于FTP,但更简单,用于快速传输文件

  • VoIP:用于实时语音通话,VoIP应用程序使用UDP来传输音频数据,因为它对延迟比数据丢失更敏感

  • NTP:用于同步计算机的时间,NTP使用UDP来获取时间信息

17. WebSocket的理解

  • WebSocket 是一种在单个TCP 连接上实现全双工通信的网络协议,与传统的 HTTP 协议不同
  • HTTP是基于请求 – 响应模式,即客户端发送请求,服务器返回响应,然后连接关闭
  • WebSocket 允许客户端和服务器之间保持持久性的连接,双方可以随时互相发送数据,而不需要每次通信都建立新的连接
  • 服务器可以向客户端主动推送消息,客户端也可以主动向服务器推送消息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741531.shtml

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

相关文章

蓝牙耳机哪个好?2024年蓝牙耳机推荐榜单,新手上路!

​面对市场上种类繁多的蓝牙耳机,许多用户感到困惑不解。作为一个耳机爱好者,我根据自己的使用经验,整理了一些我认为值得推荐的蓝牙耳机,希望能为大家在选购时提供一些参考。 一、蓝牙耳机选购指南 1. 佩戴舒适度排名——开放式…

单元测试,写起来到底有多痛?

到底什么是单元测试 这个问题看似非常简单,单元测试嘛,不就是咱们开发自己写些测试类,来测试自己写的代码逻辑对不对。 这句话没有问题,但是不够准确。 首先我们要明白,这个测试二字前面还有两个字: 单元 。…

Windows-WSL2-VSCode+Docker配置C++开发环境

Windows-WSL2-VSCodeDocker配置C开发环境 写在前面 因为在学习工作中,需要不同的编码环境,若将这些不同的开发环境都状态一台设备上,很容易出问题,而且迁移性差,于是计划把不同的开发环境用docker隔离开来&#xff0…

面向对象编程第一式:封装 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

PMP考试心得,与大家共勉

本人刚刚通过PMP考试,有一些自己的经历,写出来欢迎已经是PMP的兄弟们指正,希望能给正在PMP之路上奔跑的人们一些帮助。 其实很早就听说过PMP认证考试了,但是一直工作很忙没有时间来投入学习考试。因此一直拖到今年夏天才有时间参加…

耐腐蚀PFA气体洗涤瓶可多级串联透明特氟龙塑料氢气吸收装置

洗气瓶是一种常用于净化和干燥各种气体的实验室器皿,以去除其中的水分、油脂、颗粒物等杂质,从而使需要用到的气体满足实验要求。 PFA洗气瓶的工作原理: 主要是通过液体吸收、溶解或发生化学反应来去除气体中的杂质。在洗气过程中&#xff…

加速布局Wi-Fi及蓝牙市场!移远通信再推四款高性能模组新品

3月12日,全球领先的物联网整体解决方案供应商移远通信宣布,其已正式推出四款新型Wi-Fi和蓝牙模组新品,旨在继续致力于满足物联网行业不断升级的应用需求,为智慧家居、工业互联、储能、充电桩等各种场景提供一站式创新解决方案。 此…

Kotlin 空类型,区间,数组

目录 1. 空类型 2. 区间 3. 数组 1. 空类型 我们知道任何一种数据类型都有为空或不为空两种状态,在 Kotlin 中,若允许一个数据为空,则需要使用 "?",默认都不能为空。 代码举例说明 // 给 notNull赋值为空&#x…

2023.5.9工作问题记录————安卓GKI检测abi-check

GKI ABI-check SOP ABI check是用于校验生成的kernel中ko与google释放的ko所计算出来的CRC是否相等。 在GKI版本中,很多kernel中的配置有y变成了m,编译成了ko,XTS测试时,会替换boot镜像, 替换成google释放的boot.img&…

Vue3组件详情

Vue3组件详情 一、父组件向子组件传值 ref、props二、子组件向父组件传值 emit三、子组件向父组件传值 v-model四、setup语法糖1、基本用法2、data和methods3、计算属性 computed4、监听器 watch、watchEffect5、自定义指令 directive6、import导入的内容可以直接使用7、声明pr…

Flume集成Kafka

之前提到Flume可以直接采集数据存储到HDFS中,那为什么还要引入Kafka这个中间件呢,这个是因为在实际应用场景中,我们既需要实时计算也需要离线计算。 Kfka to HDFS配置 # Name the components on this agent a1.sources r1 a1.sinks k1 a1.…

动态规划7,等差数列划分,湍流子数组,唯一的子字符串,最长递增子序列

等差数列划分 思路: 经验题目要求 dp[i]表示:以 i 位置为结尾的所有子数组中有多少个等差数列 状态转移方程 对 dp[i] 位置,数列至少有三个元素,如果相邻三个为等差数列,dp[i] dp[i-1] 1; 如果相邻三个不为等差数…

windows批处理脚本(cmd指令)

一、简介 最早期的电脑系统是DOS系统,DOS系统只有一个黑漆漆的窗口,需要自己输入命令,所以学习命令是很有必要的,那么CMD命令大全是什么?直到今天的Windows系统,还是离不开DOS命令的操作。如今懂得使用windows批处理脚…

【AI绘画教程】AI绘画图生图怎么用?

AI绘画技术已经越来越成熟,越来越多的人开始尝试利用AI进行创作。而AI绘画图生图作为一款优秀的AI绘画工具,正是帮助许多人创作的好帮手。 AI绘画图生图功能可以通过多种软件实现,具体的操作步骤可能因软件而异,但大体流程相似。以…

基于springboot+vue的会议室预约系统(源码+论文)

目录 前言 一、功能设计 二、功能实现 三、库表设计 四、论文 前言 随着互联网技术的发展,各行各业乃至人们的衣食住行都离不开网络。就拿最普普通通的衣食住行来说吧,穿衣服、买衣服我们现在基本都是在网络上进行购买,线下商场基本不去。…

1688商品详情数据采集(商品属性,规格,价格,详情图等)

京东商品详情数据采集是一个复杂但重要的过程,它涉及获取商品的详细信息,包括商品属性、规格、价格以及详情图等。以下是关于如何进行京东商品详情数据采集的基本步骤: 确定采集目标:首先,你需要明确需要采集的商品信…

ARM 汇编指令:(五)CMP指令

目录 1.CMP比较指令 2.指令条件码 cond 1.CMP比较指令 CMP指令是计算机指令集中的一种比较指令,用于比较两个操作数的大小关系或相等性,并根据比较结果设置或更新条件码寄存器(或程序状态字)的标志位。 指令格式:C…

VUE内盘期货配资软件源码国际外盘二合一

开发一个Vue内盘期货配资软件源码,同时兼容国际外盘二合一的功能,是一个复杂且专业的任务,涉及前端Vue.js框架的使用、后端服务器处理、数据库管理、实时交易接口对接等多个方面。下面是一些关于开发此类软件的基本指导和考虑因素&#xff1a…

什么是同城上门预约按摩系统,上门预约平台有哪些功能?

随着互联网技术的发展,人们的生活方式发生了很大的变化。在日常生活中,大家都习惯使用手机来订餐、购物、家政服务等,这也为我们的生活带来了很大的便利。而同城按摩小程序作为一种新兴的按摩预约方式,受到了越来越多人的欢迎。下…

机器视觉检测设备的组成要素

机器视觉检测设备是一种先进的自动化检测技术工具,它利用光学、图像处理和计算机硬件及软件技术模拟并扩展人类的视觉功能,以实现对产品或目标物体进行自动化的尺寸测量、缺陷检测、表面质量评估、颜色识别、形状匹配以及位置判断等功能。这种设备通常包…