渗透测试(14)- HTTP协议解析

        HTTP(HyperText Transfer Protocol)即 超文本传输协议 ,是一种详细规定了浏览器和 服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将 HTML( 超文本标 记语言 ) 文档从 Web 服务器传送到Web 浏览器,用于客户端和服务器之间的通信。
1、发起http请求
        当在浏览器输入一个网址回车后,就是发起了一次http请求。 URL( 统一资源定位符 ) 也被称为网页地址 ,是互联网标准的地址。
URL 的标准格式如下 :
http[s]:// 服务器 IP:端口号/ 路径 [? 查询参数]
        借助浏览器可以快速发起一次HTTIP 请求,除了借助浏览器,在 Linux 系统中的 curl 命令也可以发起http请求(当然还有其他方法)。所以说,浏览器是属于 HTTP 工具的一种。
2、HTTP 协议详解
        
        http协议是一种无状态的协议。无状态是指Web 浏览 器与 Web 服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求, 然后 Web 服务器返回响应 (Response), 连接就被关闭了在服务器端不保留连接的有关信息。 也就是说, HTTP 请求只能由客户端发起而服务器不能主动向客户端发送数据。 HTTP 遵循请求 (Request)/ 应答 (Response) 模型 Web 浏览器向 Web 服务器发送请求时, Web 服务器处理请求并返回适当的应答。
2.1 http请求
        HTTP 请求包括三部分,分别是请求行 ( 请求方法 ) 、请求头 ( 消息报头 ) 和请求正文(也叫请求体):
(1) 请求行 : HTTP 请求行的第一行即为请求行,请求行由三部分组成,第一部分 说明了该请求的请求方法 ; 该行的第二部分是一个斜杠 (/login.php), 用来说明请求路径 ; 该行的最后一部分说明使用的是 HTTP1.1 版本 ( 另一个可选项是 1.0)
(2) 第二行至空白行为 HTTP 中的请求头 ( 也被称为消息头 ) 。其中, HOST 代表请求的主机地址, User-Agent 代表浏览器的标识。
(3) HTTP 请求的最后一行为请求正文,请求正文是可选的,一般出现在 POST 请求方法中。
2.2 http响应
         HTTP 响应也由三部分内容组成,分别是响应行、响应头(消息报头)和响应正文(消息主题)

 

(1)HTTP 响应的第一行为响应行,其中有 HTTP 版本 (HTTP/1.1) 、状态码 (200) 以及消息
(2)第二行至末尾的空白行为响应头,由服务器向客户端发送消息
(3)报头之后是响应正文,是服务器向客户端发送的 HTML 数据
2.3 http请求方法
         HTTP 请求的方法非常多,其中最常见的是 GET 、POST 。 GET 方法用于获取请求页面的指定信息 ( 以实体的格式 ) 。如果请求资源为动态脚本 ( HTML), 那么返回文本是 Web 容器解析后的 HTML 源代码,而不是源文件。比如请求的是php网页,但返回的是html格式的文件。 POST 方法也与 GET 方法相似,但 GET 方法没有请求内容而 POST 有请求内容的 POST 请求最多用于向服务器发送大量的数据。 GET 虽然也能发送数据, 但是有大小 ( 长度 ) 的限制,并且 GET 请求会将发送的数据显示在浏览器端,而 POST 则不 会,所以安全性相对来说高一点。
2.3 http响应的状态码
1xx: 信息提示,表示请求已被成功接收,继续处理。其范围为 100~101
2xx: 成功,服务器成功地处理了请求。其范围为 20 ~206
3xx: 重定向,重定向状态码用于告诉浏览器客户端,它们访问的资源已被移动,并告 诉客户端新的资源地址位置。或者是页面的跳转,比如从一个登录页面输入用户和密码后跳转到网站的主页面,这时,浏览器将重新对新资源发起请求。其范围 300~ 305
4xx: 客户端错误状态码,有时客户端会发送一些服务器无法处理的东西,比如格式错误的 请求,或者最常见的是,请求一个不存在的 URL 。其范围为 400~415
5xx: 有时候客户端发送了一条有效请求,但 web 服务器自身却出错了,可能是 web 服务器 运行出错了,或者网站都挂了。 5xX 就是用来描述服务器内部错误步其范围为 500 ~505
以下为常见的状态码,必须熟记:
  • 200:客户端请求成功,是最常见的状态。
  • 302:重定向。
  • 404:请求资源不存在,是最常见的状态。
  • 400:客户端请求有语法错误,不能被服务器所理解。
  • 401:请求未经授权
  • 403:服务器收到请求,但是拒绝提供服务
  • 500:服务器内部错误,是最常见的状态。
  • 503:服务器当前不能处理客户端的请求一段时间后可能恢复正常。

2.4 HTTP协议与HTTPS 协议的区别

        HTTPS其实就是HTTP 的“升级”版本,只是它比单纯的HTTP 协议更加安全。即在HTTP 下加入SSL层。也就是HTTPS 通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性与完整性,可以降低非侵入性拦截攻击的可能性。既然是在HTTP的基础上进行构建HTTPS 协议,所以,无论怎么样HTTP 请求与响应都是以相同的方式进行工作的。

HTTP 协议与 HTTPS 协议的主要区别如下
1 HTTP 是传输信息是明文传输, HTTPS 则是有安全性的 SSL 加密 传输
2 HTTP 采用 80 端口, HTTP S 443 端口。
3 HTTPS 协议需要到 ca 申请证书,一般免费证书很少,需要交费,也有些 Web 容器提供, HTTP 协议却不需要。
4 HTTP 连接相对简单,是无状态的 HTTPS 协议是由 SSL+HTTP 协议构建的可进行加 密传输、身份认证的网络协议,相对来说,要比 HTTP 协议更安全。

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

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

相关文章

目标检测--01

基本概念 什么是目标检测? ​ 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状…

【openwrt】【overlayfs】Openwrt系统overlayfs挂载流程

overlayfs是一种叠加文件系统,在openwrt和安卓系统中都有很广泛的应用,overlayfs通常用于将只读根文件系统(rootfs)和可写文件系统(jffs2)进行叠加后形成一个新的文件系统,这个新的文件系统“看起来”是可读写的,这种做法的好处是…

软件设计师6--流水线技术

软件设计师6--流水线技术 考点1:流水线--概念考点2:流水线--流水线计算考点3:流水线--流水线吞吐率计算例题: 考点1:流水线–概念 相关参数计算: 流水线执行时间计算、流水线吞吐率、流水线加速比、流水线…

如何使用视频下载助手获取公众号视频链接

微信公众号视频链接如何提取呢?今天就来说视频下载助手提取微信公众号的视频链接! 1:公众号获取视频下载助手二维码,并长按添加 2:找到需要下载的公众号带有视频的文章并转发给视频下载助手 3:提取完成后用户可以在视频下载助手中点击返回提取好的视频并…

IO网络5.0

思维导图 使用select实现TCP客户端的并发 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "192.168.122.61" //服务器客户端//客户端TCP int ma…

解决Microsoft outlook新版本无法支持部分邮件模式问题

问题原因&#xff1a;Outlook16.60及以上 for Mac和Outlook微软商店新版均启用了新界面&#xff0c;暂时不支持POP、Exchange等电子邮件协议。Office里的Outlook客户端不受影响。 注意事项&#xff1a;千万不要使用360软件管家或者腾讯软件管家等卸载微软商店的Outlook应用&am…

Python学习之路——异常捕获

一、什么是异常 当检测到一个错误时&#xff0c;Python解释器就无法继续执行了&#xff0c;反而出现了一些错误的提示&#xff0c;这就是所谓的“异常”&#xff0c;也就是bug 二、异常的捕获方法 当我们的程序遇到bug&#xff0c;那么就下来有两种情况 ①整个程序因为一个…

cpp多线程(二)——对线程的控制和锁的概念

这篇文章是笔者学习cpp多线程操作的第二篇笔记&#xff0c;没有阅读过第一篇的读者可以移步此处&#xff1a; Cpp多线程&#xff08;一&#xff09;-CSDN博客 如果读者发现我的文章里有问题&#xff0c;欢迎交流哈&#xff01; 一、如何控制线程呢&#xff1f; c11在std:…

PBR材质背光面太暗优化

图形学中漫反射光照遵循兰伯特光照模型&#xff0c;它的公式如下 其中&#xff1a; &#xff1a;漫反射光颜色 &#xff1a;入射光颜色 &#xff1a;材质的漫反射系数 &#xff1a;法线方向 &#xff1a;光源方向 由于背光面的法线方向和光源方向的点积为负数&#xff0c;因此…

操作系统课程设计-Windows 线程的互斥和同步

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 创建生产者和消费者进程 3.2.2 生产者和消费者进程 4 实验结果与分析 5 代码 前言 本实验为课设内容&#xff0c;博客内容为部分报告内容&#xff0c;仅为大家提供参考&#xff0c;请勿直接抄…

python PyQt5的学习

一、安装与配置 1、环境&#xff1a; python3.7 2、相关模块 pip install pyqt5 pyqt5-tools pyqt5designer 可以加个镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple3、配置设计器 python的pyqt5提供了一个设计器&#xff0c;便于ui的设计 界面是这样的&#xff1a…

MySQL三大日志

1. redo log 1.1 特点 InnoDB存储引擎独有物理日志&#xff0c;记录在数据页上做的修改让MySQL拥有了崩溃恢复能力&#xff0c;保证事务的持久性 1.2 刷盘时机 事务提交时log buffer 空间使用大约一半时事务日志缓冲区满InnoDB 定期执行检查点Checkpoint后台刷新线程&#…

网工内推 | 运维工程师,最高10K*15薪,思科认证优先

01 乐歌股份 招聘岗位&#xff1a;服务器运维工程师 职责描述&#xff1a; 1、负责公司云上云下所有服务器的日常运维工作&#xff0c;包括应用部署、巡检、备份、日志、监控&#xff0c;故障处理&#xff0c;性能优化等&#xff0c;保障公司相关系统稳定运行。 2、为开发、测…

SMART PLC 模拟量批量转换功能块“Multi_ITR“

模拟量输入转换功能块S_ITR详细公式和代码介绍请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/121347697https://rxxw-control.blog.csdn.net/article/details/121347697Smart PLC指针和FOR循环组合应用 https://rxxw-control.blog.csdn.net/arti…

go实现判断20000数据范围内哪些是素数(只能被1和它本身整除的数),采用多协程和管道实现

实现一个并发程序&#xff0c;用于寻找 20000 以内的所有素数。使用了 Goroutines 和 Channels 来分发和处理任务&#xff0c;并通过 WaitGroup&#xff08;实现为 exitChan&#xff09;来同步 Goroutines 的退出。 一.GO代码 package mainimport ("fmt""time…

捍卫中华数学产权系列6.Σ1/n的分级通式与对应的求和公式

调和级数Σ1/n在欧系数学是极为重要的概念&#xff0c;它是纯粹数学的七寸、关乎欧系数学的存废。然而欧洲人对Σ1/n从来没有发现任意一个求和公式。本人以简单而充分的逻辑给Σ1/n进行了多种多样的分级、并给出了各自对应的求和公式&#xff0c;所以&#xff0c;一切关于调和级…

vue+elementui实现12个日历平铺,初始化工作日,并且可点击

<template><div class"app-container"><el-form :model"queryParams" ref"queryForm" size"small" :inline"true"><el-form-item label"年份" prop"holidayYear"><el-date-…

Verilog基础:强度建模(一)

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一、强度建模基础 Verilog HDL提供了针对线网信号0、1、x、z的精准强度建模方式&#xff0c;这样可以允许将两个线网信号进行线与操作从而更加精确地描述出硬件行…

string 模拟实现

string的数据结构 char* _str; size_t _size; size_t _capacity; _str 是用来存储字符串的数组&#xff0c;采用new在堆上开辟空间&#xff1b; _size 是用来表示字符串的长度&#xff0c;数组大小strlen(_str)&#xff1b; _capacity 是用来表示_str的空间大小, _capacity…

使用 Postman 发送 get 请求的简易教程

在API开发与测试的场景中&#xff0c;Postman 是一种普遍应用的工具&#xff0c;它极大地简化了发送和接收HTTP请求的流程。要发出GET请求&#xff0c;用户只需设定正确的参数并点击发送即可。 如何使用 Postman 发送一个GET请求 创建一个新请求并将类型设为 GET 首先&#…