面试之HTTP

这篇具有很好参考价值的文章主要介绍了面试之HTTP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.HTTP与HTTPS的区别

  • HTTP运行在TCP之上;HTTPS是运行在SSL之上,SSL运行在TCP之上
  • 两者使用的端口不同:HTTP使用的是80端口,HTTPS使用的是443端口
  • 安全性不同:HTTP没有加密,安全性较差;HTTPS有加密机制,安全性较好
  • 两者消耗资源大小不一:HTTP消耗的资源较少,HTTPS由于需要加密处理,所以消耗的资源更多

2.HTTP中POST和GET方法的区别

相同点:两者都是HTTP协议中的方法

不同点:

  • get方法是用来从服务器上获取资源;post是用来向服务器提交数据的
  • get方法的参数是通过URL进行传递的;post方法的参数存放在请求头或者消息体中进行传递的
  • get方法相比于post方法更不安全,因为请求参数存在于url中,暴露在外
  • get方法在url中传递的参数是有长度限制的(实际上HTTP协议本身对长度没有限制,限制是特定的浏览器以及服务器对他的限制,不同浏览器限制的长度不同。),POST对长度没有限制。

3.Cookie和Session的区别

  • 用范围不同:cookie保存在客户端浏览器;session保存在服务器
  • 存取方式不同:cookie只能保存ASCII,session可以存储任意类型的数据
  • 有效期不同:cookie可设置为长时间保存,比如我们使用的默认登录功能;session一般有时间限制,客户端关闭或者session超时都会失效
  • 存储大小不同:单个cookie保存数据大小不能超过4k;session存储数据可远远高于cookie
  • 安全性不同:cookie将信息存储在客户端,容易遭到非法获取;session信息存储在服务器,安全新相对来说高一些。

4.HTTP常见的状态码

常见的状态码:

  • 200:服务器处理请求成功。
  • 301(永久重定向):浏览器请求的资源已经永久移动到了一个新的URL地址,浏览器会自动将请求重定向到新的URL地址
  • 302(临时重定向):请求的资源只是暂时移动到了一个新的URL地址,浏览器会在下一次请求时再次访问原始URL地址。
  • 400:客户端请求有语法错误,不能被服务器理解
  • 403:服务器收到请求,但是没有权限,服务器拒绝提供服务
  • 404(未找到):服务器找不到请求的资源
  • 500(服务器内部错误):服务器错误,无法完成请求

状态码开头代表的类型:

面试之HTTP,面试,面试,http

5.对称加密和非对称加密

对称加密:对称加密指的是加密和解密都是同一个密钥。但是这种加密方式,如果被别人获取密钥,就可以直接获取解密内容,安全性有待提升。

非对称加密:非对称加密用到两个密钥,一个公钥一个私钥。每个客户都拿着一把公钥,服务器拿着一把私钥。公钥加密私钥可以解密;私钥加密公钥可以解密,但是公钥加密公钥不能解密。

区别:对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.。

6.HTTPS的工作原理

面试之HTTP,面试,面试,http

  1. 客户端请求HTTPS 网址,然后连接到服务器的443端口(HTTPS的默认端口)
  2. 采用HTTPS的服务器必须要有一套数字CA证书,颁发证书的时候会产生一个公钥和私钥。私钥由服务端自己保存,不可泄漏,公钥则是附带在证书的信息中,可以公开的。证书本身也附带了一个电子签名,这个签名来验证证书的真实性和完整性,可以防止证书被篡改
  3. 服务器响应客户端请求,将证书传递给客户端,证书包含公钥和大量信息,比如证书颁发机构信息,公司信息和证书有效期等
  4. 客户端解析证书并对其进行验证,如果证书是不可信机构颁发的,或者证书中的域名与实际域名不一致的,或者证书已经过期,就会像访问者显示一个警告,与其选择是否继续通信         如果证书没有问题,客户端会从服务器证书中取出服务器的公钥A,然后客户端会生成一个随机码KEY,并使用公钥A将其加密
  5. 客户端把加密后的随机码KEY发送给服务器,最为后面对称加密的密钥
  6. 服务器在收到随机码KEY之后会使用是私钥B进行解密,经过以上步骤,客户端和服务器终于建立了安全的连接,完美解决了对称加密密钥泄露的问题,后续可以使用对称加密进行通信了
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并且发送给客户端,客户端使用相同的密钥(随机码KEY)进行解密
  8. 双方使用对称加密的方式传输数据

7.在浏览器中输入www.baidu.com后执行的全过程

  1. 域名解析(将域名www.baidu.com变为ip地址):浏览器首先搜索自己的DNS缓存(维护一张域名与IP的对应表),若没有则搜索操作系统的DNS缓存,若没有则搜索操作系统的hosts文件。若都没有找到,则找TCP/IP参数设置中的首选DNS服务器,即本地的DNS服务器(递归查询),本地域名服务器查找自己的DNS缓存,如果没有,则进行迭代查询。将本地服务器的IP返回给操作系统,同时缓存IP
  2. 使用三次握手机制建立TCP连接,浏览器会以一个随机端口(1024-65535)向服务端的web程序80端口发起TCP连接
  3. 建立TCP连接之后发起HTTP请求
  4. 服务器响应HTTP请求,客户端得到HTML代码。服务器web应用程序收到HTTP请求之后,就开始处理请求,处理完成之后就返回给浏览器HTML文件
  5. 浏览器解析HTML代码,并请求HTML中的资源
  6. 浏览器对页面进行渲染,呈现给用户 

8.HTTP/1.0和HTTP/1.1有什么区别

面试之HTTP,面试,面试,http

  • 连接方式:HTTP/1.0为短连接,HTTP/1.1支持长连接
  • 状态响应码:HTTP/1.1中新加入了大量的状态码,光是错误码就新增了24种。比如100——在请求大资源时预热,206——范围请求的标识码,409——请求与当前资源规定冲突。
  • 缓存机制:在HTTP/1.0中主要使用Hearder里的If-Modified-Since,Expires 来做为缓存判断的标准,HTTP/1.1则引入了更多的缓存控制策略例如 Entity tag,If-Unmodified-Since, If-Match, If-None-Match 等更多可供选择的缓存头来控制缓存策略。
  • 带宽:HTTP/1.0中存在一些浪费带宽的现象,例如客户端某个对象的一部分,而服务器却将整个对象都送过来,并且不支持断点续传功能;HTTP/1.1则在请求头引入了range头域,它允许请求资源的某个部分,返回码为206,这样就方便开发者自由的选择以便于充分利用带宽和连接
  • Host头处理:HTTP/1.1引入了Host头字段,允许在统一IP地址上托管多个域名,从而支持虚拟主机的功能。而HTTP/1.0没有Host字段,无法实现虚拟主机

9.HTTP/1.1和HTTP/2.0有什么区别

面试之HTTP,面试,面试,http

  •  IO多路复用:HTTP/2.0在同一连接上可以同时传输多个请求和响应。这使得HTTP/2.0在处理多个请求时更加高效,减少了网络延迟和提高了性能。HTTP/1.1则使用串行的方式,每个请求和响应都需要独立的连接。
  • 二进制帧:HTTP/2.0使用二进制帧进行数据传输,二进制帧更加紧凑和高效,减少了数据的传输量和带宽消耗。HTTP/1.1则使用文本格式的报文
  • 头部压缩:HTTP/1.1支持body压缩,不支持Header压缩;HTTP/2.0支持对Header压缩,减少了网络开销
  • 服务器推送:HTTP/2.0支持服务器推送,可以在客户端请求一个资源时,将其他相关资源一并推送给客户端,从而减少客户端的请求次数和延迟。HTTP/1.1需要客户端自己发送请求来获取相关资源

10.HTTP/2.0和HTTP/3.0有什么区别

面试之HTTP,面试,面试,http

  • 传输协议:HTTP/2.0是基于TCP协议实现的,HTTP/3.0 新增了 QUIC(Quick UDP Internet Connections) 协议来实现可靠的传输,提供与TLS/SSL相当的安全性,具有较低的连接和传输延迟(可以将QUIC看作是UDP 的升级版本,在其基础上新增了很多功能比如加密,重传等)
  • 连接建立:HTTP/2.0需要经过经典的TCP三次握手过程。HTTP/3.0由于QUIC特性,建立连接的时间远远小于HTTP/2.0建立的时间
  • 队头阻塞:HTTP/2.0多请求复用一个TCP连接,一旦发生丢包,就会阻塞所有的HTTP请求;由于QUIC的特性,HTTP/3.0在一定程度上解决了队头阻塞问题,一个连接建立多个不同的数据流,这些数据流之间互不影响,某个数据流发生丢包了,其数据流不影响
  • 错误恢复:HTTP/3.0具有更好的错误恢复机制,当出现丢包,延迟等网络问题时,可以更快的进行恢复和重传。HTTP/2.0还是依赖于TCP的错误恢复和重传
  • 安全性:HTTP/2.0和HTTP/3.0对于安全都有很高的要求,支持加密通信,但是实现方式不同。HTTP/2.0使用TLS协议进行加密,而HTTP/3.0基于QUIC协议,包含了内置的加密和验证身份机制,可以提供更强的安全性。

11.DNS域名系统

DNS域名系统,是当用户使用浏览器访问网址之后,使用的第一个重要协议,DNS解决的是域名和IP地址映射问题

面试之HTTP,面试,面试,http

 在实际的应用中,有一种情况可以不必动用DNS就可以获知域名和IP地址的映射。浏览器会在本地维护一个hosts列表,一般来说浏览器要查看访问的域名是否在hosts表中,如果有的话,直接提取对应的IP地址即可,如果本地hosts列表不存在,此时DNS就开始工作了。

目前 DNS 的设计采用的是分布式、层次数据库结构,DNS 是应用层协议,基于 UDP 协议之上,端口为 53 。

DNS服务器自底向上可以一次分为以下几个层级(所有DNS服务器都属于以下四个类别别):

  • 根DNS服务器:根DNS服务器提供TLD服务器的IP地址。目前世界上只有13组根服务器,我国境内目前没有
  • 顶级域DNS服务器(TLD服务器):顶级域是指域名的后缀,如com,org,net,edu等,国家也有自己的顶级域,如uk,fr,ca等,TLD服务器提供了权威DNS服务器的IP地址
  • 权威DNS服务器:在因特网上具有公共可访问主机的每个组织机构必须提供公共可访问的 DNS 记录,这些记录将这些主机的名字映射为 IP 地址
  • 本地DNS服务器:每个ISP(互联网服务供应商)都有一个自己的本地DNS服务器。当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS层次结构中

各域名的层级关系类似于一个树状结构:

面试之HTTP,面试,面试,http

DNS的工作流程

面试之HTTP,面试,面试,http

  1. 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
  2. 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
  3. 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”
  4. 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”
  5. 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
  6. 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
  7. 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
  8. 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。

至此DNS域名系统的一次完整的工作流程结束。

 文章来源地址https://www.toymoban.com/news/detail-672676.html

到了这里,关于面试之HTTP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端面试常考 HTTP/计算机网络面试题

    HTTP协议是基于TCP/IP通信协议来传输数据,如HTML文件,图像等,即是一个客户端和服务端进行请求和响应的协议 无连接,限制每次连接只处理一个请求,服务端完成客户端请求就断开连接 无状态,没有记忆能力,每次请求都是独立的,不记录客户端的任何行为。优点是解放服

    2024年02月21日
    浏览(45)
  • Tomcat面试题+http面试题+Nginx面试题+常见面试题

    1、Tomcat的缺省端口是多少?怎么修改? 答:缺省端口是8080,若要修改,可以进入Tomcat的安装目录下找到conf目录下的server.xml文件,找到该文件中的Connector字段中的port。 2、Tomcat有哪几种connector运行模式(服务的请求方式)? 答:三种。修改它的运行模式需要在主配置文件中

    2023年04月10日
    浏览(44)
  • 前端面试题(计算机网络):HTTP 1.0 和 HTTP 1.1 之间有哪些区别?

    http1.0默认是使用非持久连接,而http1.1默认使用持久连接,持久连接来使请求复用同一个TCP连接,以此来避免使用非持久连接时需要每次建立连接延迟(所花费的时间) http1.0中存在资源浪费现象,客户端如果只需要某个对象的一个部分,而服务器却会将整个对象资源全部发送

    2024年01月21日
    浏览(50)
  • 30 张图解 HTTP 常见的面试题

    在面试过程中,HTTP 被提问的概率还是比较高的 我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。 HTTP 基本概念 Get 与 Post HTTP 特性 HTTPS 与 HTTP HTTP/1.

    2024年02月04日
    浏览(88)
  • http和https的区别(面试题)

    Http:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。也是互联网上应用最为广泛

    2024年02月16日
    浏览(56)
  • 面试题http和https的区别

    一、HTTP和HTTPS的基本概念         HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。         HTTPS:是以安全为目标的

    2024年03月20日
    浏览(59)
  • 前端面试集锦(DOM HTTP 框架(Vue))

    事件委托 参考答案 : 简易版 (有缺陷 没有考虑子元素 ): bug 在于,如果用户点击的是 li 里面的 span,就没法触发 fn,这显然不对 ul.addEventListener(‘click’,function(e){ if(e.target.tagName.toLowerCase() === ‘li’){ fn() // 执行某个函数 //console.log(‘您点击了li’) } }) 。 高级版 :思路是点

    2024年02月01日
    浏览(42)
  • 面试之快速学习计算机网络-http

    2. 3开头重定向,4开头客户端错误,5开头服务端错误 1. start-line:请求行,可以为以下两者之一: 请求行: GET /hello-world2.html HTTP/1.1 状态行:HTTP/1.1 200 OK 请求行由 方法字段 、 URL字段 和 HTTP协议版本字段 。其中,方法字段严格区分大小写,当前HTTP协议中的方法都是大写 状态

    2024年02月11日
    浏览(49)
  • 【跳槽面试】一份tcp、http面试指南,常考点都给你了

    要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。 TCP/IP 协议分层模型 物理层将二进制的0和1和电压高低,光的闪灭和电波的强弱信号进行转换 链路层代表驱动 网络层 使用 IP 协议,IP 协议基于

    2024年01月23日
    浏览(65)
  • 面试题:HTTP Code码及应用场景分析

    1xx 消息(临时响应) 属于临时相应,代表所发出的请求已经被接受,需要继续进行处理。只包含状态行和某些可选的响应头信息,并以空行结束。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。 1、“100 Contin

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包