HTTP协议的详细介绍

article/2025/9/12 14:44:05

目录

一、何为HTTP协议

1.HTTP协议详细信息

2.HTTPS协议:

3.HTTP协议的特点

二、HTTP协议 请求方式

HTTP1. 0定义了三种请求方法:

1.GET

2.POST

3.HEAD

HTTP1. 1 新增了五种请求方法:

1.OPTIONS

2.PUT

3.DELETE

4.TRACE

5.CONNECT 

三、HTTP协议状态码


一、何为HTTP协议

所谓协议,就是指双方遵循的规范。

1.HTTP协议详细信息

  • HTTP协议,就是浏览器和服务器之间进行“沟通"的一种规范。我们在看空间,刷 微博...都是在使用http协议,当然,远远不止这些应用。
  • HTTP协议是基于TCP/IP的应用层协议
  • HTTP协议,即 超文本传输协议(Hypertext transfer protocol) 。是一种详细规定了浏览器和万维网(WWW =World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
  • HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无 状态的协议。

  • HTTP默认的端口号为80, HTTPS的端口号为443

  • 浏览网页是HTTP的主要应用,但是这并不代表HTTP就只能应用于网页的浏览。 HTTP是一种协议, 只要通信的双方都遵守这个协议,HTTP就能有用武之地。比如咱们常用的QQ,迅雷这些软件,都会使用HTTP协议(还包括其他的协议)。

2.HTTPS协议:

        HTTPS协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL 协议层之上,这个时候,就成了我们常说的HTTPS。如下图:http是属于“应用层的协议",而且是基于TCP/IP协议的。

 

3.HTTP协议的特点

• 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得 HTTP服务器的程序规模小,因而通信速度很快。

• 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

• HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连 接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。

• 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

•支持B/S及C/S模式。

4.HTTP协议的工作流程

  • 首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
  • 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  • 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、 一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  • 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

二、HTTP协议 请求方式

根据HTTP标准,HTTP请求可以使用多种请求方法。

HTTP1. 0定义了三种请求方法:

1.GET

  • GET方法的作用在于获取资源。

2.POST

  • POST方法的主要作用是执行操作。

3.HEAD

  • HEAD这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返 回消息主体。服务器返回的消息头应与对应GET请求返回的消息头相同。因此, 这种方法可用于检查某一资源在向其提交GET请求前是否存在

HTTP1. 1 新增了五种请求方法:

1.OPTIONS

  • 这种方法要求服务器报告对某一特殊资源有效的HTTP方法。服务器通常返回一个包含 Allow消息头的响应,并在其中列出所有有效的方法。

2.PUT

  • 这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源。如果激活这个方法,渗透测试员就可以利用它来攻击应用程序。例如,通过上传任意一段脚本并在服务器上执行 该脚本来攻击应用程序。

3.DELETE

  • 请求服务器删除指定的页面。

4.TRACE

  • 这种方法主要用于诊断。服务器应在响应主体中返回其收到的请求消息的具体内容。这种 方法可用于检测客户端与服务器之间是否存在任何操纵请求的代理服务器。

5.CONNECT 

  • HTTP/1. 1协议中预留给能够将连接改为管道方式的代理服务器。

三、HTTP协议状态码

每条HTTP响应消息都必须在第一行中包含一个状态码,说明请求的结果。根据代码的第一位数字,可将状态码分为以下5类。

1xx —提供信息。

2xx —请求被成功提交。

3xx —客户端被重定向到其他资源。

4xx —请求包含某种错误。

5xx —服务器执行请求时遇到错误。

        有大量特殊状态码,其中许多状态码仅用在特殊情况下。下面列出渗透测试员在攻击Web 应用程序时最有可能遇到的状态码及其相关的原因短语。

100 Continue当客户端提交一个包含主体的请求时.将发送这个响应。该响应表示已收到请求消息头.客户端应继续发送主体。请求完成后,再由服务器返回另一个响应。

200 OK本状态码表示已成功提交请求,且响应主体中包含请求结果。

201 Created. PUT请求的响应返回这个状态码,表示请求已成功提交。

301 Moved Permanently本状态码将浏览器永久重定向到另外一个在Location消息头中指定 的URL。以后客户端应使用新URL替换原始URL。

302 Found本状态码将浏览器暂时重定向到另外一个在Location消息头中指定的URL.客户端 应在随后的请求中恢复使用原始URL.

304 Not Modified本状态码指示浏览器使用缓存中保存的所请求资源的副本。服务器使用 If-Modified-Since与工f-None-Match消息头确定客户端是否拥有最新版本的资源。

400 Bad Request本状态码表示客户端提交了一个无效的HTTP请求。当以某种无效的方式修 改请求时(例如在URL中插人一个空格符),可能会遇到这个状态码。

401 Unauthorized.服务器在许可请求前要求HTTP进行身份验证。WWW-Authenticate消息头详 细说明所支持的身份验证类型。

403 Forbidden本状态码指出,不管是否通过身份验证,禁止任何人访问被请求的资源。

404 Not Found本状态码表示所请求的资源并不存在。

405 Method Not Allowed本状态码表示指定的URL不支持请求中使用的方法。例如,如果试 图在不支持PUT方法的地方使用该方法,就会收到本状态码。

413 Request Entity Too Large 则本状态码表示请求主体过长,服务器无法处理。

414 Request URL Too Longo与前一个响应类似,本状态码表示请求中的URL过长,服务器无法处理。

500 Internal Server Erroro本状态码表示服务器在执行请求时遇到错误。当提交无法预料的 输人、在应用程序处理过程中造成无法处理的错误时,通常会收到本状态码。应该仔细检查服务器响应的所有内容,了解与错误性质有关的详情。

503 Service Unavailableo通常,本状态码表示尽管Web服务器运转正常.并且能够响应请求,但服务器访问的应用程序还是无法作出响应。应该进行核实,是否因为执行了某种行为而造成这个结果。

这是http协议的基本知识,以后我会一直更新网络安全的有关知识,加油


http://chatgpt.dhexx.cn/article/B015lknF.shtml

相关文章

看完这篇HTTP,跟面试官扯皮就没问题了

我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电…

Python挑战游戏( PythonChallenge)闯关之路Level- 5

时隔两个月, 又重新回来写博客了 今天重新来做这个挑战题目 首先入口地址:http://www.pythonchallenge.com/pc/def/peak.html 打开来看, 没错,你没有看错,只有一副画 然后画的下面 有一句话 "pronounce it&quo…

pythonchallenge第0关

pythonchallenge第0关 点击打开链接 仔细观察第0关的图片:数字以英语提示(Hint:try to change the URL address 尝试改变 统一资源定位符的地址) 这就很简单了。 >>> 2 ** 38 274877906944L >>> 也即:http…

Python挑战游戏( PythonChallenge)闯关之路Level- 6

来来来,难得今天有点时间,闯关继续 照旧,先进入闯关入口,看一看这一关是怎么回事:http://www.pythonchallenge.com/pc/def/channel.html 单纯的从网页页面上来看, 一个有拉锁的图片, 下面一个写…

Python菜鸟快乐游戏编程_pygame

曾经我也沉迷游戏,连续玩十几个小时竞技游戏可以不吃饭。游戏只是别人写好程序,与其沉迷于他人设计好程序,为何不自己设计游戏,至少学会编程后,我们的月收入上万不是问题。于是便有了录制这部pygame菜鸟游戏编程教程动…

【pythonchallenge】【问题1】

网页标题:What about making trans?问题网址:http://www.pythonchallenge.com/pc/def/map.html问题描述:问题给了个图片,是map的对应关系, everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc…

Python挑战游戏( PythonChallenge)闯关之路Level- 1

闯关过程 关卡入口地址: http://www.pythonchallenge.com/pc/def/map.html 打开页面是这样的: 在图中的你内容,可以看到 K->MO->QE->G 直观上感受是,字符串对应解析 也就是说,26个英文字符依次和图片下面的…

chatgpt赋能Python-pythonchallenge

Python Challenge: 挑战你的Python技能 如果你正在寻找一种提高Python编程技能的有趣方法,那么Python Challenge是一个不错的选择。Python Challenge是一个在线的puzzle游戏,每个挑战都需要使用Python编写程序来解决。这些挑战是由一个名叫Nadav Samet的…

Python Challenge 第2关

http://www.pythonchallenge.com/pc/def/ocr.html recognize the characters. maybe they are in the book, but MAYBE they are in the page source. 第2关:从现在开始,要从页面中寻找答案了。其实是在注释中。从页面源码中可以发现其有一段注释&#x…

pythonchallenge(0-4)

pythonchallenge 0:网址:http://www.pythonchallenge.com/pc/def/0.html 网页提示:try to change the URL addres。网站的图片提示如下: 图片的意思是网址为2的38次方 print(2**38)得到下一关的网址:http://www.pyt…

Python Challenge

Level 0 [1] Hint: try to change the URL address. 第零关主要让人熟悉游戏规则和形式。首先观察标签栏主题显示的是warming up,表明这关的主题是热身。页面图片下标注一行小提示尝试改变url的地址。在没有别的提示下,明显是改成图片内的内容&#xff0…

pythonchallenge(5-9)

pythonchallenge 5:网址:http://www.pythonchallenge.com/pc/def/peak.html 查看页面源代码有提示.peak hell sounds familiar.考察的是标准库pickle的。pickle模块用来实现python对象的序列化,反序列化。构建payload: import urllib.request as urt i…

Python Challenge 题解 [0-4]

Challenge 0 转到 Python Challenge 题目0 分析 从图片中可看出,该题的答案应为2的38次方 完整程序 2**38Challenge 2 转到 Python Challenge 题目 everybody thinks twice before solving this. g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dm…

pythonchallenge闯关——第一弹

说在前面 pythonchallenge是一个很古老的很优秀的一款python学习路径,我也是知乎搜到后,这里安利给大家,网址是: pythonchallenge 界面是介样子的 : P.S. 本人也是python小白,在这里记录自己的学习路径&…

PythonChallenge闯关详解

前言 PythonChallenge是国外的一位工程师设计的一套编程闯关游戏,网址:PythonChallenge,每一关都可以用一段Python程序解决问题得到下一关的入口,本博文作为一个学习笔记,通过边学边记的方式分享我的闯关经验。 0 图片…

scanf返回值被忽略问题

解决Visual Studio中scanf返回值被忽略问题 最近在使用Visual Studio编写c语言时遇到了scanf返回值被忽略问题 总结了如下几种解决方法: 方法一(不建议) scanf修改成 scanf_s 可以说scanf_s是vs编译器特有的,它认为scanf不安全&…

scanf库函数的返回值

目录 一背景: 二 scanf返回值规则 1.在格式字符串为用%d的情况下 (1)输入5 6此时scanf能正确读入的数据为两个,返回值为2 scanf正确读入概念补充 (2)如果输入5 t此时能正确读入的数据为1个,返回值为1。 (3)如果输入1 2.5 (4)输入t 5&a…

scanf的返回值被忽略

scanf的返回值被忽略 在编译器VS2019和VS2022中,在使用scanf函数时会报错,具体错误scanf的返回值被忽略。 解决办法 方法一 可以直接将scanf改成scanf_s,因为编译器觉得scanf_s这是比较安全的函数。 方法二 我们可以关闭VS2019和VS2022编译器的安全检查…

scanf返回值被忽略的办法

1、右击项目,点击属性 2、在预处理定义中输入_CRT_SECURE_NO_WARNINGS,点击确认 需要注意的是如果再创建了一个项目需要重新再设置一次哦!或者把sanf改为scanf_s也可以哦。

为什么VS/VsStudio当中警告返回值被忽略“scanf” ?VsStudio中scanf返回值被忽略的原因及其解决方法

警告原因:Vs 认为 scanf 函数不安全 所以提示警告⚠ 解决方案一: 只需将 scanf() 替换为 scanf_s() 原因:scanf_s 是 VsStudio自己定义的函数 功能和 scanf() 类似, 所以不会有警告 优点: 正常运行不会再有警告 …