http是什么?http的基础知识教程详解(2024-04-24)

1、http的概念

HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。

HTTP 是万维网(WWW)的数据通信的基础,设计目的是确保客户端与服务器之间的通信,是互联网上最常用的协议之一。

HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法,通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。

2、http的请求-响应

HTTP 的基本工作原理是客户端(通常是 web 浏览器)向服务器发送请求,服务器接收到请求后,返回相应的资源。这些资源可以是文本,网页、图像、音频文件、视频文件,流等。

HTTP 使用了客户端-服务器模型,其中客户端发送请求,服务器返回响应。

http的请求-响应模型

通常的步骤

  • 建立连接:客户端与服务器之间建立连接。在传统的 HTTP 中,这是基于 TCP/IP 协议的。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于 UDP 的 QUIC 协议(HTTP/3)。

  • 发送请求:客户端向服务器发送请求,请求中包含要访问的资源的 URL、请求方法(GET、POST、PUT、DELETE 等)、请求头(例如,Accept、User-Agent)以及可选的请求体(对于 POST 或 PUT 请求)。

  • 处理请求:服务器接收到请求后,根据请求中的信息找到相应的资源,执行相应的处理操作。这可能涉及从数据库中检索数据、生成动态内容或者简单地返回静态文件。

  • 发送响应:服务器将处理后的结果封装在响应中,并将其发送回客户端。响应包含状态码(用于指示请求的成功或失败)、响应头(例如,Content-Type、Content-Length)以及可选的响应体(例如,HTML 页面、图像数据)。

  • 关闭连接:在完成请求-响应周期后,客户端和服务器之间的连接可以被关闭,除非使用了持久连接(如 HTTP/1.1 中的 keep-alive)。

3、http的方法

HTTP 方法指定了客户端可以对服务器上的资源执行哪些动作。

主要的HTTP方法有:

  • GET:请求从服务器获取指定资源。这是最常用的方法,用于访问页面。
  • POST:请求服务器接受并处理请求体中的数据,通常用于表单提交。
  • PUT:请求服务器存储一个资源,并用请求体中的内容替换目标资源的所有内容。
  • DELETE:请求服务器删除指定的资源。
  • HEAD:与 GET 类似,但不获取资源的内容,只获取响应头信息。

4、http的状态码

HTTP状态码是服务器对客户端请求的响应。

状态码分为五类:

  • 1xx(信息性状态码):表示接收的请求正在处理。
  • 2xx(成功状态码):表示请求正常处理完毕。
  • 3xx(重定向状态码):需要后续操作才能完成这一请求。
  • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
  • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

常见状态代码、状态描述、说明:

        200 OK //客户端请求成功
        400 Bad Request //客户端请求有语法错误,不能被服务器所理解
        401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
        403 Forbidden //服务器收到请求,但是拒绝提供服务
        404 Not Found //请求资源不存在,eg:输入了错误的URL
        500 Internal Server Error //服务器发生不可预期的错误(服务器内部错误)
        503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5、http的版本

HTTP 有多个版本,目前广泛使用的是 HTTP/1.1 和 HTTP/2,以及正在逐步推广的 HTTP/3。

  • HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个 TCP 连接传输,减少了建立和关闭连接的消耗。
  • HTTP/2:基于二进制分帧,支持多路复用,允许同时通过单一的 HTTP/2 连接发起多重的、独立的、双向的交流。
  • HTTP/3:基于 QUIC 协议,旨在减少网络延迟,提高传输速度和安全性。

5、http的安全性

HTTP 本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改。为了解决这个问题,引入了 HTTPS(下一章节会详细说明),即在 HTTP 上加入 SSL/TLS 协议,为数据传输提供了加密和身份验证。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭开六西格玛培训真实面貌,为何它仍是企业优选

近年来,网络上时常有声音称六西格玛培训已经过时,不再适应当今快速变化的商业环境。然而,这种观点并不全面,也未能深入理解六西格玛管理的核心价值和现代应用。事实上,六西格玛作为一种以数据为驱动、旨在减少缺陷和提…

CQ 社区版 2.11.1|新增主体授权、操作向导等

四月,正是踏青时节~ 不知道大家有没有约上三五好友一起去踏青露营 但 CQ 与大家的一月一见,不会失约! 让我们一起来看看本月的社区版有哪些更新吧~ 「手动授权」模块划分为主体授权和客体授权 |新增用户维…

【动态规划】C++ 子序列问题(递增子序列、数对链、定差子序列、斐波那契子序列...)

文章目录 1. 前言2. 例题最长递增子序列 3. 算法题3.1_摆动序列3.2_最长递增子序列的个数3.3_最长数对链[3.4_ 最长定差子序列](https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/description/)3.5_最长的斐波那契子序列的长度3.6_最长等差数…

python-flask结合bootstrap实现网页小工具实例-半小时速通版

参考: Python之flask结合Bootstrap框架快速搭建Web应用_支持bootstrap的python软件-CSDN博客 https://blog.csdn.net/lovedingd/article/details/106696832 Bootstrap 警告框 | 菜鸟教程 https://www.runoob.com/bootstrap/bootstrap-alert-plugin.html flask框架…

用C#写一个读取pdf文档内容的库

安装这两个库,第二个库一定要安装否则有些pdf文件读取会出现异常 读取 using iText.Kernel.Pdf; using iText.Kernel.Pdf.Canvas.Parser; using iText.Kernel.Pdf.Canvas.Parser.Listener;namespace TestReadPdf {public static class PdfHelper{public static IE…

算法刷题day46

目录 引言一、树的重心二、毕业旅行问题三、高精度乘法 引言 今天复习了一下高精度的所有模板,包括加法、减法、乘法、除法,因为自己当时在蓝桥杯的时候没有看出来那个题使用高精度,因为对于一个数的大小和一个数的长度,自己有时…

关于卡尔曼滤波进行状态预测的方法

卡尔曼滤波是一种有效的线性动态系统状态估计方法。它通过递归地处理测量数据,结合系统动力学模型和测量模型,来预测和估计系统的状态。卡尔曼滤波特别适用于系统状态在时间上演化,而且测量数据存在噪声的情况。以下是卡尔曼滤波对于状态预测…

编译器的学习

常用的编译器: GCCVisual CClang(LLVM): Clang 可以被看作是建立在 LLVM 之上的一个项目, 实际上LLVM是clang的后端,clang作为前端前端生成LLVM IR,https://zhuanlan.zhihu.com/p/656699711MSVC &#xff…

[C++][算法基础]能被整除的数(容斥原理)

给定一个整数 𝑛 和 𝑚 个不同的质数 𝑝1,𝑝2,…,𝑝𝑚。 请你求出 1∼𝑛 中能被 𝑝1,𝑝2,…,𝑝𝑚 中的至少一个数整除的整数有多少个。 输入格式…

【Java Spring MVC项目异常解决】HTTP 500

HTTP 500状态码表示“内部服务器错误”(Internal Server Error)。这是一个通用的错误响应,表明服务器在处理请求时遇到了预料之外的情况,导致无法完成请求。500错误是服务器端错误的一种,与客户端无关。在Web开发中&am…

初识《list》及手搓模拟《list》

目录 前言: 1. list的介绍及使用 list的介绍: list的使用: 1、list的构造​编辑 2、list iterator的使用 3、list capacity 4、list element access 5、list modifiers 2.list的模拟实现 1、关于迭代器: 2、迭代器类的…

代码质量与可维护性的重要性都有哪些?

目录 一、为了提高代码质量,可以采取以下几种方法: 二、如何制定和执行有效的代码编写规范? 三、设计模式和设计原则在提高代码质量中的具体应用案例有哪些? 四、代码审查的最佳实践和技巧是什么? 五、如何有效地…

CV每日论文--2024.4.24

1、Guess The Unseen: Dynamic 3D Scene Reconstruction from Partial 2D Glimpses 中文标题:猜测未见之景:从部分二维片段进行动态三维场景重建 简介:这篇论文提出了一种方法,可以从单目视频输入中重建世界和多个动态人物的3D模…

猫主食罐要怎么挑?注意这些含胶的罐头!

我曾与专业的宠物医生深入交流,得知猫罐头的种类与选择不可一概而论。主食罐头营养搭配精细,旨在全面满足猫咪健康需求,常添加矿物质和维生素,并针对不同猫咪有特定配方。而零食罐头更重口感与美味,钠含量高&#xff0…

如何提取单片机片内程序的值进行拷贝?

对于许多单片机,其固件是由制造商保护的,并且未经授权的访问、拷贝或修改可能侵犯法律。我这里有一套嵌入式入门教程,不仅包含了详细的视频 讲解,项目实战。如果你渴望学习嵌入式,不妨点个关注,给个评论222…

跨部门协作中的沟通困境与平台建设策略——以软硬件研发为例

一、背景 在科技行业,跨部门合作的重要性不言而喻,然而实际工作中,经常会遭遇沟通不畅的现象。以软件与硬件研发部门为例,两者在产品研发过程中经常需要紧密协作,但却时常出现信息传递障碍。当你试图阐述观点时&#…

LangSmith帮助测试大模型系统

LangSmith是评估大模型能力好坏的评估工具,能够量化评估基于大模型的系统的效果。LangSmith通过记录langchain构建的大模型应用的中间过程,从而能够更好的调整提示词等中间过程做优化。想要使用LangSmith首先进入他的设置页面,https://smith.langchain.com/settings注册一个…

多商家AI智能名片商城系统(开源版)——构建高效数字化商业新生态

一、项目概述 1、项目背景 1)起源 随着数字化时代的快速发展,传统名片和商城系统已经难以满足企业日益增长的需求。商家需要更高效、更智能的方式来展示自己的产品和服务,与消费者进行互动和交易。同时,开源技术的普及也为开发…

安卓玩机工具推荐----MTK芯片 简单制作线刷包 备份分区 备份基带 去除锁类 推荐工具操作解析

工具说明 在前面几期mtk芯片类玩机工具中解析过如何无官方固件从手机抽包 制作线刷包的步骤,类似的工具与操作有很多种。演示的只是本人片面的理解与一些步骤解析。mtk芯片机型抽包关键点在于..mt*****txt的分区地址段引导和 perloader临时分区引导。前面几期都是需…

在控制台实现贪吃蛇

在控制台实现贪吃蛇 前备知识Win32APICOORD这个结构体的声明如下:GetStdHandle 函数GetConsoleCursorInfo 函数SetConsoleCursorInfo 函数 SetConsoleCursorPosition 函数getAsyncKeyState 函数 控制台窗口的大小以及字符打印介绍控制台中的坐标宽字符及本地化介绍s…