HTTP相关面试题

1. HTPP基本概念

HTTP是超文本传输协议。本质上就是一个可以传输图片、视频、文字的计算机与计算机之间的协议

1.1. HTTP常见的状态码

2XX状态码: 主要用于表示已经服务器已经成功的处理了请求

[200 ok ]: 是最常见的状态码,表示我们请求成功且响应内容(响应头body)已经收到,表示一切正常

[204 No Content] : 表示请求成功,但是没有返回响应内容

[206 Partial Content ]: 主要是用于表示HTTP分块下载和断点续传,表示响应的数据只返回了一部分,也是服务器处理成功的一个状态

3xx状态码: 表示资源临时或者永久不存在当前URL上了,需要客户用返回的URL(返回的Location)来跳转新的URL

[301 Monved Permanently] : 表示永久重定向,请求资源已经转移或者不存在了,需要改用新的URL

[302 Monved Permanently] : 表示临时重定向,请求资源还在,但是需要用另一个URL来访问

301和302都会在表头返回一个Location来指明要跳转的URL,浏览器会自动重定向新的URL

[304 Not Modified] : 不具有跳转的含义,表示资源未修改,重定向已存在的资源,也称作缓存重定向,主要用于做缓存控制

4xx状态码: 表示客户端发送的请求有误,服务器无法处理,这就是错误码的含义

[400 Bad Request] : 表示客户端的请求报文错误,但是只是个模糊的错误,无法具体分析

[403 Forbidden]: 表示服务器禁止访问资源,并不是客户端请求错误

[404 Not Found] : 表示请求的资源在服务器上找不到或不存在,所以无法提供给客户端,通常见于请求接口不存在或者代理没有配置成功

5xx状态码: 表示服务器连接错误或者nginx之类的配置错误,通常与客户端无关

[500 internal Server Error]: 与400类型相同都是模糊的错误码,只知道发生了错误,但是具体是什么错误不知道,但是是属于服务端的错误码

[501 Not Implemented] : 表示客户端请求的功能还不支持,类似于接口还没做完之类的

[502 Bad Geteway]: 通常用于表示服务器作为网关或代理时发生的错误码,一般情况是服务器正常,但是后端服务报错了,进程被打断了

[503 Service Unavailable]: 表示服务器很忙,暂时无法响应客户端请求,类似"网络服务很忙,请稍后重试"的意思

1.2. 三次握手(TCP建立)

  • 客户端发报文:SYN=1,seq=x;
  • 服务端响应报文:SYN=1,ACK=1,seq=y,ack=x+1;
  • 客户端回应报文:ACK=1,,seq=x+1,ack=y+1;

前面两次握手很好理解,第三次握手的意义在于网络延迟的时候,客户端发生了第一个请求连接,由于网络原因,客户端没有收到确认报文,所以会再次先服务端发送报文,然后此时网络通畅服务端收到请求并回应了此次报文关闭了连接,但是之前的那次报文因为网络通畅了也发送到了服务端,此时由于没有第三次握手确认,服务端又会重新与客户端建立连接,造成不必要的性能浪费

1.3. 四次挥手(TCP的释放)

  • 客户端发送报文:FIN=1,seq=a;
  • 服务器响应报文:ACK=1,seq=b,ack=a+1;
  • 服务器发送报文:FIN=1,ACK=1,seq=c,ack=a+1;
  • 客户端响应报文:ACK=1,seq=a+1,ack=c+1

1.3.1. 第一次挥手:

客户端发送FIN报文,并且立即停止发送数据,释放报文首部,此时客户端进入FIN-WAIT-1(终止等待1)状态

1.3.2. 第二次挥手

服务端收到连接释放报文,发出响应报文ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时服务端进入CLOSE-WAIT(关闭等待状态),客户端收到响应报文之后进入半关闭状态,此时客户端已经不需要向服务端发送数据了,如果服务端发送数据,仍然可以接收

1.3.3. 第三次挥手

服务器将最后的数据发送完毕,就发送连接释放报文,FIN=1,ack=u+1,由于处于关闭等待状态,服务端发生的数据客户端是否接收完成,服务端并不清楚,所以需要等客户端做出回应

1.3.4. 第四次挥手

客户端收到服务端发送的连接释放报文,做出确认,ACK=1,ack=w+1,此时客户端进入TIME-WAIT(时间等待)状态,此时TCP还没有释放,需要等2*MSL(最长报文寿命时间)之后客户端撤销相应的TCB之后才进入CLOSED状态。服务端收到客户端的确认报文立即进入CLOSED状态,此次TCP连接就结束了

2. GET 和POST 的区别

GET

  • 主要用于向服务器请求资源,这个资源可以是视频、图片和文字等
  • 对于服务器来说相对于POST请求,GET请求更安全,因为不会破坏服务器资源,多次请求都是返回一样的结果

POST

  • 主要用于向服务器发送数据,比如修改数据,进行一些服务器的操作等等
  • 对于服务器来说,POST请求是有风险的,因为他是增删改查的操作,会修改和删除服务器资源,所以是不安全的

3. HTTP特性

3.1. HTTP1.1的优点

简单

HTTP报文采用header + body的格式,头部信息也都是由key=value对组成,便于理解,减低了学习成本和使用门槛

灵活和易于扩展

HTTP的各类请求方法和头部字段都没用固定死,可以允许开发人员自定义和扩充

应用广泛和跨平台

互联网发展以来,HTTP的应用从PC端到各种APP、小程序,从看新闻到看电视、小说等等都具有跨平台的优越性

3.2. HTTP1.1缺点

无状态和明文传输

无状态指的是每次发送HTTP请求,服务器都不知道是哪个客户,所以每次都需要验证,但是可以使用cookie来解决。明文传输最开始的目的是为了方便调试,一眼就可以看到传输过程的信息,但是这也带来了极大的安全隐患,账号信息随时有可能被窃听、拦截,数据等于是在裸奔,非常的不安全。

4. HTTP与HTTPS的区别

  • HTTP是超文本传输协议,信息是明文传输的,存在安全隐患。HTTPS则是在TCP和HTTP网络层之间加入了SSL/TSL安全协议进行加密传输,解决了HTTP的安全隐患问题。SSL就是我们建设网站通常用到的域名解析SSL证书
  • HTTP建立连接简单,TCP三次握手就可以进行报文传输。而HTTPS的话需要再三次握手之后还要进行SLL/TSL握手,进行加密以后才能报文传输
  • HTTP端口默认为80端口,HTTPS默认为443端口
  • HTTPS协议需要通过权威机构申请证书,来保证服务器的身份是可信的

5. HTTP1.1/HTTP2/HTTP3过程是如何变化的

5.1. HTTP1.1相比HTTP1.0:
  • 使用了TCP长连接改善了HTTP/1.0的短连接造成的额外性能开销,HTTP/1.0每次连接都需要发起TCP连接(三次握手),而且是串行请求,多次TCP连接和断开会造成性能浪费
  • 支持管道网络传输,只要首次请求发送出去,就可以进行第二个请求发送,不需要等起回来,减少整体响应时间

HTTP1.1缺陷:

  • 多次请求时同样的头部都要发送一次,当头部报文冗长时会造成不必要的性能浪费
  • 请求/响应头没有压缩就直接发送,头部越大延迟越大,能压缩的只有body部分
  • 服务器是按照请求顺序响应的,如果其中一个请求很慢,那么后续的请求都会被阻塞,这也就是队头阻塞效应

5.2. HTTP2 相比HTTP1.1
  • 进行头部压缩,如果多个请求头一致则消除相同的部分
  • 采用二进制的传输格式,服务器收到请求不需要将报文转为二进制而是直接解析,提高了传输的效率
  • HTTP2的数据包采用数据流的形式发送,同一个连接里面连续的数据包可能属于不同的回应,所以需要对每一个数据包做标记,标记它归属于那个回应,每个请求/回应的所有数据包被称为数据流
  • HTTP2是可以在同一个连接中并发多个请求,而不需要排队等候,移除了HTTP1.1的串行请求,因为是并发请求所以不会有队头阻塞问题

HTPP2缺陷:

当其中一个请求丢包的时候其他的请求都需要等待它完成,造成阻塞效果

5.3. HTTP3相对于HTTP2:

用UDP协议替换了TCP协议,在UDP协议里面不管哪个请求丢包都不会影响其他的请求,解决了阻塞问题。

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

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

相关文章

c# 开发的wpf程序闪退,无法用try catch捕获异常

之前开发的一个程序是c#wpf开发,基于.net framework 4.6.1的,一切都是正常的,但是在我重新装了win11后在程序logo出现后直接闪退,报错 返回值为 -1073740791 (0xc0000409),而且定位到代码时发现是, publi…

【遂愿赠书 - 2期】:618火热来袭,网络安全书单推荐

文章目录 一、网络安全书单背景二、网络安全与编程实践书单2.1 🏰《内网渗透实战攻略》2.2 🛡️《Kali Linux高级渗透测试(原书第4版)》2.3 🎖️《CTF那些事儿》2.4 🚀《权限提升技术:攻防实战与…

惠海H6212L 48V转12V 36V转12V 24V转5V DCDC降压恒压模块供电芯片方案

内置60V高压MOS:H6212L内置了60V耐压的MOS,这使得它能够承受48V的输入电压,从而适应更多的电源环境。 宽电压输入范围:支持8V至48V的宽压输入范围,满足了不同应用场景的电源需求。 输出电压可调:支持输出…

旺店通·企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口

旺店通企业奇门对接打通金蝶云星空查询盘点盈亏统计接口与其他入库新增接口 对接系统旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量获取、会员管理、仓库管理等其他重要经营模…

重庆耶非凡科技人力rpo蓝海项目能不能做?

随着市场经济的不断发展和企业对人才需求的日益增长,人力资源外包(HRO)已成为众多企业优化资源配置、提升管理效率的重要手段。其中,招聘流程外包(RPO)作为HRO的重要组成部分,更是凭借其专业性和高效性受到了广泛关注。在此背景下&#xff0c…

linux业务代码性能优化点

planning优化的一些改动----------> 减少值传递&#xff0c;多用引用来传递 <---------- // ----------> 减少值传递&#xff0c;多用引用来传递 <---------- // 例1&#xff1a; class A{}; std::vector<A> v; // for(auto elem : v) {} // 不建议&#xff…

HiWoo Cloud物联网云平台

在科技日新月异的今天&#xff0c;物联网&#xff08;IoT&#xff09;已经成为推动社会进步的重要力量。而物联网云平台&#xff0c;作为连接万物、实现智能交互的核心&#xff0c;更是备受瞩目。今天&#xff0c;就让我们一起走进HiWoo Cloud的世界&#xff0c;探寻这款物联网…

学习axios拦截器

axios拦截器的作用&#xff1a;用于在请求发送前和响应返回后对请求和响应进行统一处理&#xff0c;例如添加公共请求头、处理请求参数、统一处理错误信息等。拦截器提供了一种灵活、高效的方式来管理HTTP请求和响应&#xff0c;帮助在前端开发中更好地处理数据交互。 这是一个…

揭秘业务系统数据安全三大核心问题:“谁在用”、“用什么”和“怎么用”

数据库宛如一座坚固的宝库&#xff0c;守护着无尽的智慧与财富—数据&#xff0c;如同熠熠生辉的金币。当宝库的门紧闭时&#xff0c;金币得以安然无恙。 然而&#xff0c;在业务系统的广阔天地中&#xff0c;这些数据金币被精心挑选、流通使用&#xff0c;每一枚都承载着无尽…

Master-Worker 架构的灰度发布难题

作者&#xff1a;石超 一、前言 Master-Worker 架构是成熟的分布式系统设计模式&#xff0c;具有集中控制、资源利用率高、容错简单等优点。我们数据中心内的几乎所有分布式系统都采用了这样的架构。 &#xfeff; 我们曾经发生过级联故障&#xff0c;造成了整个集群范围的服…

个人课设---玩家血条(包括攻击掉血,复活重生功能)

血条UI操作 渲染模式改为世界空间 导入面板组件并通过画布调整大小 在面板上导入文本组件&#xff0c;显示玩家名称&#xff08;旧版&#xff09; 为了使血条填满&#xff0c;Fill Area 数值全部置为0 改变背景颜色和填充物颜色&#xff0c;并设置血条方向 改变数值方便计算 …

7 - 产品销售分析 I(高频 SQL 50 题基础版)

7- 产品销售分析 I select product_name,year,price from Sales left join Product on Sales.product_id Product.product_id;

窗口重叠之鼠标事件透传

目的 Qt webview在下层展示url&#xff0c;上层覆盖最小化等按钮&#xff0c;支持大小拖拽&#xff0c;窗口移动。 如下图&#xff0c;除红框部分&#xff0c;其余异形部分作为url展示区 构想 想要实现该效果&#xff0c;需要在webview窗口上方动态创建两个窗口&#xff0c;…

四川古力未来科技抖音小店创新经营,引领电商新潮流

在数字化浪潮的推动下&#xff0c;电商行业蓬勃发展&#xff0c;抖音小店作为新兴的电商平台&#xff0c;正以其独特的魅力和优势吸引着越来越多的消费者。四川古力未来科技&#xff0c;作为抖音小店的经营者之一&#xff0c;凭借其可靠的经营模式和创新的经营理念&#xff0c;…

医用腕带朔源用的条形码与二维码如何选择

在医疗环境中的医用腕带作为患者身份识别和管理的重要工具&#xff0c;做为条形码和二维码腕带上的溯源技术&#xff0c;更是为患者信息快速获取、准确传递的保障&#xff0c;实现更加高效和准确的患者身份识别和管理&#xff0c;这种技术可以大大提高医疗服务的效率和质量&…

React路由(React笔记之五)

本文是结合实践中和学习技术文章总结出来的笔记(个人使用),如有雷同纯属正常((✿◠‿◠)) 喜欢的话点个赞,谢谢! React路由介绍 现在前端的项目一般都是SPA单页面应用,不再是以前多个页面多套HTML代码项目了,应用内的跳转不需要刷新页面就能完成页面跳转靠的就是路由系统 R…

小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现方案 📒📝 操作步骤📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 小米设备的广告一直是用户头疼的问题,无论是开屏广告、应用内广告还是系统广告,都影响了用户体验。本文将详细介绍如何通过小米路由器实现去除广告…

阿里云 查询封禁原因并申请解封 违规网站屏蔽访问违规URL整改通知 抱歉!该站点已经被管理员停止运行,请联系管理员了解详情!

原因网站被挂马或入侵 特别是织梦项目&#xff0c;已经100%难以使用。必然会被入侵。 要完全消除漏洞或防止被挂马&#xff0c;目前要么买安全服务&#xff0c;还没有别的好办法。 备份 恢复 项目做完后&#xff0c;先备份一个。被挂马能直接恢复。 每次修改后把权限全改为…

使用Nginx正向代理让内网主机通过外网主机访问互联网

目录 环境概述 流程说明 在外网服务器上安装部署nginx 安装前准备 下载nginx 编译安装nginx 开始配置正向代理 创建systemd服务单元文件&#xff0c;用于管理Nginx服务的启动、停止和重新加载 启动nginx 代理服务器本地验证 内网服务器验证 将代理地址添加到环境变量中…