Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >HTTP最基础的内容,面试还不会?

HTTP最基础的内容,面试还不会?

作者头像
Java极客技术
发布于 2023-09-02 07:35:37
发布于 2023-09-02 07:35:37
1400
举报
文章被收录于专栏:Java极客技术Java极客技术

我们都知道关于 HTTP 一直都是面试里面经常被问到的内容,也是在开发的时候遇到的一些关于 HTTP 的状态码的问题,从而来定位解决问题。今天了不起就来说一下这个关于 HTTP 的相关知识。

HTTP

什么是 HTTP 呢?

HTTP 称为 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP 的迭代:

  • 0.9

0.9协议是适用于各种数据信息的简洁快速协议,但是远不能满足日益发展的各种应用的需要。0.9协议就是一个交换信息的无序协议,仅仅限于文字。由于无法进行内容的协商,在双发的握手和协议中,并有规定双发的内容是什么,也就是图片是无法显示和处理的。

  • 1.0

到了1.0协议阶段,也就是在1982年,Tim Berners-Lee提出了HTTP/1.0。在此后的不断丰富和发展中,HTTP/1.0成为最重要的面向事务的应用层协议。该协议对每一次请求/响应建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。

  • 1.1

在1.0协议中,双方规定了连接方式和连接类型,这已经极大扩展了HTTP的领域,但对于互联网最重要的速度和效率,并没有太多的考虑。毕竟,作为协议的制定者,当时也没有想到HTTP会有那么快的普及速度。

  • 2.0

HTTP2.0的前身是HTTP1.0和HTTP1.1。虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范之庞大,足以让任何一个有经验的工程师为之头疼。网络协议新版本并不会马上取代旧版本。实际上,1.0和1.1在之后很长的一段时间内一直并存,这是由于网络基础设施更新缓慢所决定的。

HTTP 工作原理

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

  • 客户与服务器建立连接;
  • 客户向服务器提出请求;
  • 服务器接受请求,并根据请求返回相应的文件作为应答;
  • 客户与服务器关闭连接。

其实也可以理解为下面的五个步骤

1、客户端向服务器发送请求消息,请求消息中包含请求方法、URL、协议版本以及请求头等信息。

2、服务器接收到请求消息后,根据请求消息的URL和相应的处理逻辑,生成服务器响应消息,并将其发送给客户端。

3、响应消息中包含协议版本、状态码、响应头和响应体等信息。

4、客户端接收到响应消息之后,会根据自身的处理方式进行处理,例如如果是网页,客户端会解析响应体中的HTML代码并渲染出网页。

5、如果需要继续与服务器通信,客户端可以发起新的请求,并重复上述步骤。

而且 在HTTP协议中,客户端和服务器之间不会保持持久连接,每次请求需要重新与服务器建立连接。

又因为 HTTP 是一种无状态协议,也就是说服务器并不会维护客户端的状态信息。所以就有了 Cookie 和 Session 的出现了。而 Cookie 和 Session 就是用来维持状态的。

说到状态,我们就又想到了状态码,那么 HTTP 的状态码都有哪些呢?

了不起直接就想到了 200,404 ,500 这些状态码,那么我们再来看一下 HTTP 的状态码有多少吧。

HTTP状态码

不得不说,还真挺多,不看不知道,一看吓一跳那种。

1xx(信息性状态码)

  • 100 Continue
  • 101 Switching Protocols
  • 102 Processing

2xx(成功状态码)

  • 200 OK
  • 201 Created
  • 202 Accepted

204 No Content

  • 207 Multi-Status

3xx(重定向状态码)

  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect

4xx(客户端错误状态码)

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowable
  • 408 Request Time-Out

5xx(服务器错误状态码)

  • 500 Internal Server Error
  • 501 NotImplemented
  • 502 Bad Gateway
  • 503 Service Unavailable

既然都了解了 HTTP 那么必然就引出了 HTTPS 为什么呢?因为你在开发的过程中有没有遇到过的那种,有些页面访问地址是 HTTP 也有些页面是 HTTPS 的,那么 HTTP 和 HTTPS 有什么区别和联系呢?

HTTPS

HTTPS :是以安全为目标的HTTP通道, 通俗说就是安全版本的HTTP

为啥叫做HTTPS , S的含义, SSL:加密,在HTTP下加入SSL层

那加入 SSL 层的意义在哪呢?

因为HTTP的请求信息是明文传输, 容易被窃取 HTTP不会验证对方的信息, 存在被冒充的风险 数据的完整性没有校验, 容易被中间人篡改,所以就会增加了 SSL 来保证安全。

SSL操作步骤:

  • 验证服务器端
  • 允许客户端和服务端选择加密算法和密码, 确保双方都支持
  • 验证客户端
  • 使用公钥加密技术来生成共享加密数据
  • 创建一个加密的SSL连接
  • 基于该SSL连接传递HTTP请求

**HTTP 和 HTTPS 的区别

  • https协议需要 ca申请证书,一般免费的证书较少,因而是需要一定费用的]
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议
  • http 和 https使用的是完全不同的连接方式,用的端口也是不一样的。前者是80端口 后者是443端口
  • http的连接很简单,是无状态的;https协议是由 SSL + HTTP协议构建的可进行加密传输,身份认证的网络协议,比http协议安全.
  • 在OSI模型中,HTTP工作在应用层,而HTTPS工作在传输层。

关于 HTTP 你了解了么?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java极客技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习。
Simon223
2018/10/09
6080
【RL-TCPnet网络教程】第41章    HTTP超文本传输协议基础知识
对HTTP与HTTPS学习的笔记
HTTP协议:Hypertext Transfer Protocol,超文本传输协议,现在普遍的版本为1.1版本
天钧
2020/02/17
4350
【黄啊码】什么是HTTP?HTTP是如何演变的?
超文本传输协议。HTTP是在计算机中用于两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
黄啊码
2022/06/10
1.5K0
HTTP协议详解
      http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
大学里的混子
2019/03/04
7110
硬核!30 张图解 HTTP 常见的面试题
小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟 HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。
帅地
2020/03/11
7820
协议和协定有什么区别_协议和合同是一回事吗
1、https协议需要到CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(原来网易官网是http,而网易邮箱是https。)
全栈程序员站长
2022/11/07
4060
协议和协定有什么区别_协议和合同是一回事吗
http和https
http:超文本传输协议,是互联网上应用很广泛的一个网络协议。它负责完成客户端到服务端的一系列操作,专门用来传输HTML的超媒体文档等web内容。他是基于TCP协议的应用层协议。http协议是以明文方式发送信息的,所以安全层很低。
Cloud-Cloudys
2020/07/06
6040
面试系列之-http与https(JAVA基础)
GET:传递参数长度受限制,因为传递的参数是直接表示在地址栏中,而特定的浏览器和服务器对URL的长度是有限制的。因此GET请求不适合用来传递私密数据,也不太适合拿来传递大量数据;
用户4283147
2023/08/21
2880
面试系列之-http与https(JAVA基础)
告别 HTTP
当时这篇有些地方没有解释到位,然后我周末抽时间把一些没解释清楚的地方重写了,而且还增加 HTTP 缓存技术 方面的面试题,新文章的内容相比以前多了 5000 + 字和 10 +张图。
小林coding
2022/05/21
3680
告别 HTTP
接口测试基础知识HTTP和HTTPS的区别,8种HTTP请求方式:GET/POST/DELETE……
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
软测小生
2020/10/10
18.9K0
接口测试基础知识HTTP和HTTPS的区别,8种HTTP请求方式:GET/POST/DELETE……
iOS-网络编程(一)HTTP协议
一. 网络编程基础 在移动互联网时代,几乎所有应用都需要用到网络,只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力。一个好的移动网络应用不仅要有良好的UI和良好的用户体验也要具备实时更新数据的能力。网络编程便是一种实时更新应用数据的常用手段也是开发优秀网络应用的前提和基础。 1. 在网络编程中,有几个必须掌握的基本概念 客户端(Client):移动应用(iOS、android等应用) 服务器(Server):为客户端提供服务、提供数据、提供资源的机器 请求(Request):客户端向服务
xx_Cc
2018/05/10
1.7K0
HTTP 与 HTTPS 的区别
HTTP 超文本传输协议 ,应用层协议。主要用于 Web 上传输超媒体文本的底层协议,经常在浏览器和服务器之间传递数据。通信就是以纯文本的形式进行。
闻说社
2022/12/06
5380
HTTP 与 HTTPS 的区别
【面经】 HTTP 基础知识
大家好,我是图图。也有一个多月没有写文章了。由于各种原因,被迫提桶,真是艰难。经过几轮的面试之后,被面试官虐得惨惨的,其中许多原因是没有仔细的学过 HTTP 的知识,我对这块的知识相对来说比较薄弱,所以决定把数据结构和算法得先放一放了。所以把 HTTP 的知识学一遍,然后再补一下JS的基础。
后端码匠
2021/05/10
7250
【面经】 HTTP 基础知识
十分钟搞懂HTTP和HTTPS协议?(修订版)
网络协议,是计算机之间为了实现网络通信而达成的一种“约定”或者”规则“,有了这种”约定“,不同厂商的生产设备,以及不同操作系统组成的计算机之间,就可以实现通信。
吾非同
2020/10/23
7390
聊聊HTTP,越详细越好
从http四个字母来讲,它是Hypter transfer protocol超文本传输协议。
Maic
2022/07/28
5580
聊聊HTTP,越详细越好
HTTP协议简述
超文本传输协议(HyperText Transfer Protocol,HTTP),是互联网应用最广泛的网络协议。最初的HTTP协议设计用于发送和接收HTML。经过发展演变成为客户端和服务器进行请求(Request)和响应(Response)的标准协议。要了解HTTP的运行过程,需要了解大体OSI模型
BUG弄潮儿
2021/02/03
4250
HTTP协议简述
01网络面经:你每天都用的HTTP协议,到底是什么鬼?
作为开发人员,每天都在使用HTTP协议,但是否详细了解过一下该协议的构成及特性吗?本文就带大家全面的梳理一下。先来看一下本篇文章涉及到的知识点脑图。
程序新视界
2021/12/07
4110
01网络面经:你每天都用的HTTP协议,到底是什么鬼?
HTTP和HTTPS是什么 二者区别是什么
HTTP(超文本传输协议)是网络上最为广泛的传输协议,被用于在web浏览器和网站服务器之间的传输协议。HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
肥晨
2022/09/27
7660
HTTP和HTTPS是什么 二者区别是什么
详解:HTTP协议的演进与特性
来源:Linux云计算网络 HTTP的前世传奇 HTTP协议确定之前,伯纳斯-李已经提出了超文本构想,并最终实现了最早期的超文本系统。 1980年——超文本构想的诞生 1980年6月至12月间,伯纳斯-李在日内瓦的CERN(欧洲核子研究中心)担任独立承包人。在那段时间里,他提出了一个构想:创建一个以超文本系统为基础的项目,目的是为了方便研究人员分享及更新讯息。 同时他也开发出了最早的原型系统,并命名为ENQUIRE。这个系统允许一个存储信息片断,并以任何方式链接相关的部分。要找到信息,通过从一张纸到另一张
SDNLAB
2022/08/26
4730
详解:HTTP协议的演进与特性
跟我一起探索HTTP- HTTP 的发展
HTTP(HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。自 Tim Berners-Lee 博士和他的团队在 1989-1991 年间创造出它以来,HTTP 已经发生了太多的变化,在保持协议简单性的同时,不断扩展其灵活性。如今,HTTP 已经从一个只在实验室之间交换文件的早期协议进化到了可以传输图片,高分辨率视频和 3D 效果的现代复杂互联网协议。
用户1418987
2023/10/16
1580
相关推荐
【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档