HTTP协议格式详解

keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解 单片机的调试分为两种,一种是使用软件模拟调试,第二种是硬件调试,两种调试方式各有不同,软件模拟调试有误差,而硬件调试,借用仿真器调试是嵌入式开发中常用方法。 阅读详情

一、URI结构

HTTP使用统一资源标识符(URI)来传输数据和建立连接。URL(统一资源定位符)是一种特殊种类的URI,包含了用于查找的资源的足够的信息,我们一般常用的就是URL,而一个完整的URL包含下面几部分:

http://www.fishbay.cn:80/mix/76.html?name=kelvin&password=123456#first

1.协议部分

该URL的协议部分为http:,表示网页用的是HTTP协议,后面的//为分隔符

2.域名部分

域名是www.fishbay.cn,发送请求时,需要向DNS服务器解析IP。如果为了优化请求,可以直接用IP作为域名部分使用

3.端口部分

域名后面的80表示端口,和域名之间用:分隔,端口不是一个URL的必须的部分。如果端口是80,也可以省略不写

4.虚拟目录部分

从域名的第一个/开始到最后一个/为止,是虚拟目录的部分。其中,虚拟目录也不是URL必须的部分,本例中的虚拟目录是/mix/

5.文件名部分

从域名最后一个/开始到?为止,是文件名部分;如果没有?,则是从域名最后一个/开始到#为止,是文件名部分;如果没有?和#,那么就从域名的最后一个/从开始到结束,都是文件名部分。本例中的文件名是76.html,文件名也不是一个URL的必须部分,如果没有文件名,则使用默认文件名

6.锚部分

从#开始到最后,都是锚部分。本部分的锚部分是first,锚也不是一个URL必须的部分

7.参数部分

从?开始到#为止之间的部分是参数部分,又称为搜索部分、查询部分。本例中的参数是name=kelvin&password=123456,如果有多个参数,各个参数之间用&作为分隔符。

二、Request

HTTP的请求包括:请求行(request line)、请求头部(header)、空行 和 请求数据 四个部分组成。
在这里插入图片描述
Http请求消息结构
抓包的request结构如下:
在这里插入图片描述
GET /mix/76.html?name=kelvin&password=123456 HTTP/1.1
Host: www.fishbay.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
1.请求行

GET为请求类型,/mix/76.html?name=kelvin&password=123456为要访问的资源,HTTP/1.1是协议版本

2.请求头部

从第二行起为请求头部,Host指出请求的目的地(主机域名);User-Agent是客户端的信息,它是检测浏览器类型的重要信息,由浏览器定义,并且在每个请求中自动发送。

3.空行

请求头后面必须有一个空行

4.请求数据

请求的数据也叫请求体,可以添加任意的其它数据。这个例子的请求体为空。

Response

一般情况下,服务器收到客户端的请求后,就会有一个HTTP的响应消息,HTTP响应也由4部分组成,分别是:状态行、响应头、空行 和 响应体。
在这里插入图片描述

http响应消息格式
抓包的数据如下:
在这里插入图片描述
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Feb 2017 09:13:59 GMT
Content-Type: text/plain;charset=UTF-8
Vary: Accept-Encoding
Cache-Control: no-store
Pragrma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Transfer-Encoding: chunked
Proxy-Connection: Keep-alive

{“code”:200,“notice”:0,“follow”:0,“forward”:0,“msg”:0,“comment”:0,“pushMsg”:null,“friend”:{“snsCount”:0,“count”:0,“celebrityCount”:0},“lastPrivateMsg”:null,“event”:0,“newProgramCount”:0,“createDJRadioCount”:0,“newTheme”:true}
1.状态行

状态行由协议版本号、状态码、状态消息组成

2.响应头

响应头是客户端可以使用的一些信息,如:Date(生成响应的日期)、Content-Type(MIME类型及编码格式)、Connection(默认是长连接)等等

3.空行

响应头和响应体之间必须有一个空行

4.响应体

响应正文,本例中是键值对信息

三、状态码

HTTP协议的状态码由3位数字组成,第一个数字定义了响应的类别,共有5中类别:

1.1xx: 指示信息–表示请求已接收,继续处理

2.2xx: 成功–表示请求已被成功接收、理解、接受

3.3xx: 重定向–要完成请求必须进行更进一步的操作

4.4xx: 客户端错误–请求有语法错误或请求无法实现

5.5xx: 服务器端错误–服务器未能实现合法的请求

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

四、请求方法

HTTP定义了多种请求方法,来满足各种需求。HTTP/1.0定义了三种请求方法:GET、POST 和 HEAD,到了HTTP/1.1,新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 和 CONNECT。各个请求方法的具体功能如下:
在这里插入图片描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
实际应用过程中,GET和POST使用的比较多,下面主要介绍一下二者的区别:

1.请求参数的区别

GET请求会把请求的参数拼接在URL后面,以?分隔,多个参数之间用&连接;如果是英文或数字,原样发送,如果是空格或中文,则用Base64编码

POST请求会把提交的数据放在请求体中,不会在URL中显示出来

2.传输数据的大小

GET: 浏览器和服务器会限制URL的长度,所以传输的数据有限,一般是2K

POST: 由于数据不是通过URL传递,所以一般可以传输较大量的数据

3.数据解析

GET: 通过Request.QueryString获取变量的值

POST: 通过Request.form获取变量的值

4.安全性

GET: 请求参数在URL后面,可以直接看到,尤其是登录时,如果登录界面被浏览器缓存,其他人就可以通过查看历史记录,拿到账户和密码

POST: 请求参数在请求体里面传输,无法直接拿到,相对GET安全性较高;但是通过抓包工具,还是可以看到请求参数的

五、工作原理

HTTP协议采用请求/响应模式,客户端向服务器发送一个请求报文,然后服务器响应请求。下面介绍一下一次HTTP请求的过程:

在浏览器中输入URL,并按下回车键
浏览器向DNS服务器请求解析该URL中的域名对应的IP地址(如果是IP请求,则不需要该步骤)
解析出IP后,根据IP和端口号,和服务器建立TCP连接
浏览器向服务器发送请求,该请求报文作为TCP三次握手的第三个报文发送给服务器
服务器做出响应,把数据发送给浏览器
通信完成,断开TCP连接
浏览器解析收到的数据并显示
六、HTTPS简介

HTTPS是安全的HTTP通道,即在HTTP通信中加入了SSL层(当前版本是TLS1.2),通信的数据被加密了,防止被窃取,具体的通信流程如下:
在这里插入图片描述
图3
HTTPS使用的加密方式结合了对称加密和不对称加密的特点,在保证安全的情况下,又提高了传输效率。HTTP和HTTPS的区别如下:

1.https协议需要到ca申请证书,一般免费证书很少,需要交费。

2.http的信息是明文传输,https 则是具有安全性的ssl加密传输协议。

3.http和https用的端口不一样,前者是80,后者是443。

4.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全.

Win11右下角不显示图标怎么办?Win11右下角不显示图标的解决方法 所以有不少符合资格的小伙伴都下载进行体验了,但是有的小伙伴在升级完系统之后发现桌面右下角不显示任何图标,那么遇到这种情况要怎么办呢?下面就和小编一起来看看有什么解决方法吧。2、接着找到任务栏设置中的“taskbar corner overflow”。3、然后在下方勾选打开想要显示的图标程序就可以了。1、首先右键任务栏,在其中选择“任务栏设置”。目前微软已经正式推出了。 阅读详情

相关推荐

9 海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例

海康视觉平台VisionMaster 上手系列:典型案例之螺丝机案例 快速入门 工业机器视觉 机器视觉

HuangGong2022的博客 7166

HTTP协议的基本格式

HTTP协议是一个应用层的协议。主要用于浏览器和web服务器之间的交互。

weixin_64597430的博客 9511

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 392

http 协议基本格式

http 协议基本格式 文章目录http 协议基本格式一、http 是什么?二、fiddler使用2.1 使用2.2 抓包原理2.3 抓包结果2.3.1 HTTP请求2.3.2 http响应2.3.3 协议格式总结三、request(请求)3.1 URL基本格式3.1.1 URL encode四、HTTP中的“方法”4.1 GET4.2 POST4.3 经典面试题 GET 和 POST 的区别五、认识请求”报头“5.1 Host5.2 Content-Length5.3 Content-Type5.4 Us

qq_54219272的博客 1万+

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

FSL软件安装

FSL软件安装

huang_tianyuan的博客 2630

HTTP的基本格式

一个网站的cookie中会存储很多键值对,往往会有一个很重要的键值对,是用来表示用户的"身份信息"的,尤其是有的时候,登录一个网站之后,后续再次访问这个网站的其他页面,或者关了电脑,第二天再次访问,仍然不必重新登录。一个网站的cookie中会存储很多键值对,往往会有一个很重要的键值对,是用来表示用户的"身份信息"的,尤其是有的时候,登录一个网站之后,后续再次访问这个网站的其他页面,或者关了电脑,第二天再次访问,仍然不必重新登录。,键值对之间,使用&符号分割,键和值之间使用=分割,查询字符串以?

qq_65291053的博客 3451

LDPC码介绍:基础&编码&译码

本博客介绍了LDPC码的基本原理,其中包括校验矩阵的构造、Tanner 图和编译码的基础知识。

渺小的颗星的博客 4309

HTTP协议格式

HTTP协议是基于传输层TCP协议实现的,为了解决粘包问题……

qq_59854519的博客 1301

从硬件到软件:深度解析D435i USB SCP overflow错误的根源与解决方案

本文深入解析Intel RealSense D435i相机在ROS环境下常见的'USB SCP overflow'错误,特别是与`control_transfer`相关的错误提示。从硬件配置到软件优化,详细介绍了如何通过调整USB接口、优化`rs_camera.launch`参数、更新固件驱动等方法解决数据传输溢出问题,提升设备稳定性和性能。

yy01234的博客 770

SAP BTP ABAP environment 集成本地系统实践:Cloud Connector、Connectivity service 与隧道通信全解析

摘要: 随着ABAP开发者向云端扩展业务逻辑,如何安全访问企业内网SAP系统成为关键问题。本文基于SAP官方文档,解析通过Cloud Connector和Connectivity service实现云端ABAP环境与本地系统集成的方案。 架构上分为四个角色:ABAP环境、Connectivity服务、Cloud Connector和内网系统。Cloud Connector作为内网出口,通过TLS隧道主动连接云端,避免防火墙开放入站端口。Connectivity服务则作为子账户级“总机”,自动路由请求。 实施

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

HTTP请求协议格式详解

文章目录一、请求协议格式1.1 首行URL方法GET方法POST方法版本号1.2 请求头1.3 空行1.4 正文二、响应协议格式1.1 首行版本号状态码状态码描述1.2 响应头1.3 空行1.4 正文 一、请求协议格式 HTTP请求协议由首行、请求头(header)、空行、正文(body)组成。通过空行来区别header和body,body可有可无,若body存在,则在header中会定义一个content-length属性来标识body的长度。 1.1 首行 首行 = 方法 + URL + 版本号 URL

Emperor10的博客 1万+

目标检测YOLO实战应用案例100讲-跨模态、多级别融合的RGB-D显著目标检测方法研究(续)

在第二章介绍了本研究的跨模态特征融合方法,第二章对于多级别特征的融合, 使用的是与基线模型baseline相同的方法:相邻级别的特征中,高级特征进行上采 样到与低级特征相同的尺度,再将高级特征通过降维得到与低级特征相同的通道数 量,最后对二者进行特征叠加,如此自顶向下的进行多级别的特征融合。本章主要 介绍本研究在特征层面的另一发现,并基于此发现引出的本文的第二个创新点:多 级别特征的融合方法。另外,在网络最深层,本文设计了一个新的模块来获取大的 感受野,对于大尺度目标能够增加更多语义信息,提升检测效果。 骨

qq_36130719的博客 466

HTTP协议格式详解(总结)

认识url url:就是我们平时说的“网址” HTTP协议格式 HTTP:请求响应机制 HTTP底层协议:TCP 协议 TCP 的特点:面向连接,保证可靠性 面向连接:我要和对应的服务器进行通信,第一件事情就是要把连接建立好 一个简单的网络通信: 建立连接 发请求 响应请求并断开连接 应用层核心工作: 把数据通过 TCP 实现从A点到B点,但是从A——>B只是最基础阶段,它后续要对HT...

近未来 15万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HTTP协议格式以及HTTP消息头详解

HTTP协议格式以及HTTP消息头详解 1)TCP/IP知识回顾 在学习计算机网络的原理时往往采取综合OSI和TCP/IP的优点,采用一种只有五层协议的体系结构 从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下: 2)HTTP协议简介 http1.0 HTTP/1.0:客户端可以与web服务器联结之后,只能获得一个web资源 http2.0 HTTP/1.1:客户端可以与web服务器连接之后,一可以获得多个web资源 超文本传输协议(Hyp

以码平川的博客 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTTP响应协议格式详解

文章目录响应协议格式1. 首行状态码 + 状态码描述2. 响应协议格式 1. 首行 首行 = 版本号 + 状态码 + 状态码描述 状态码 + 状态码描述 状态码用于表示该次请求的结果如何~ 状态码大类 状态码 状态码 单元格 单元格 单元格 单元格 2. ...

Emperor10的博客 2163

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

http协议格式详解

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP协议的主要特点可概括如下: 1.支持客户/服务器模

The Coding World 1591

HTTP协议的基本格式详解

早期,浏览器种类很多,功能也是参差不齐,对于网站开发来说,难度巨大,因此发明了User-Agent,告诉服务器,主机是什么,如何服务器根据不同主机的型号,返回不同的页面.可是,现在浏览器之间的区别很小了,UA的作用也就微乎其微了.现在,UA的重要用途是区分用户是手机/平板/pc.但是,现在有更好的办法来解决不同用户的区别.所以UA的地位比较尴尬.上图A中是没有这两个东西的,因为上面两个是根据body,Get请求是没有body的,因此没有这两个东西.那么我们找个Post请求,如图.4.正文(body)

f7ashion的博客 973

详解 HTTP 协议报文格式 & 构造 HTTP 请求

详解 HTTP 协议报文格式 & 构造 HTTP 请求

xaiobit_hl的博客 3962

HTTP协议格式详解之首行信息解析

介绍了HTTP的协议格式的第一部分:首行信息。包含了请求行的请求构成:请求方法、统一资源定位器(URL)的构成、HTTP版本。常见的请求的方法、GET、POST的区别,URL的构成、URL的encoding,响应行的版本号与状态消息。

m0_74209411的博客 1396
上一篇: OSI七层模型介绍
下一篇: C++的门道(一些C++的关键坑)
山农
博客等级 码龄10年 44粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值