首页 > 其他分享 >HTTP协议

HTTP协议

时间:2025-01-14 23:04:25浏览次数:3  
标签:协议 HTTP GET URL 报文 POST 端口号

HTTP协议是应用层的一个重要协议。

1.应答模式

应答模式分为许多种,由一问一答、一问多答、多问一答、多问多答。

HTTP属于一问一答,典型的场景有浏览器打开网页、手机app加载数据;

一问多答典型场景有下载大文件;

多问一答典型场景有上传大文件;

多问多答典型场景有桌面远程控制软件。

2.报文格式(HTTP版本1.1)

查看HTTP的报文格式,可以使用Fiddler抓包工具进行查看。

HTTP的报文格式有两种,分为请求报文和响应报文;

请求报文包括首行、请求头、空行、正文(可能没有);

响应报文包括首行、响应头、空行、正文;

下面是用Fiddler抓包搜狗网站查看报文的结果,

请求报文:

响应报文:

 3.URL

在首行中,包括方法、URL、版本号

 在上面的请求报文的首行中,Get是方法,https://sougou.com/是URL,HTTP/1.1是版本号,下面针对URL展开讨论。

URL是用来描述网络上唯一资源的位置,在编写JDBC代码时,用到了下面一段URL:

jdbc:mysql://127.0.0.1:3306/javamysql?characterEncoding=utf8&useSSL=false

jdbc:mysql://是协议名称,即这个URL是给什么协议提供服务的,常见的协议名称还有https://等;

127.0.0.1是套访问的服务器的IP地址或域名,使用IP就可以定位到是哪一台主机;

3306是端口号,用来区分是哪个应用程序,当没有端口号时,就代表使用的是默认的端口号,http的默认端口号是80,https默认端口号是443,使用端口号就可以定位到是哪一个应用程序,IP地址和端口号就可以定位到是哪一台主机的哪一个应用程序;

javamysql是带有层次结构的路径(每一层就相当于目录,目录里还可以有子目录),表示的是想要访问的是哪个主机上的哪个程序管理的哪个资源,可以是硬盘上的文件,也可以是虚拟的资源;

characterEncoding=utf8&useSSL=false表示的是查询字符串(Query String),是对要访问的资源的补充说明,是键值对的结构,键值对之间用“&”分割,键与值之间用“=”分割,这里显示的键值对是程序员自定义的;

对于有的URL,在协议名后面还会有登录信息,但是现在基本上已经没有了;

对于文档类的网站,在URL结尾出还会有片段标识符,是用来区分当前这个页面是哪个部分的,就例如下面这个URL:

https://cn.vuejs.org/guide/introduction.html#what-is-vue

结尾处的#what-is-vue就是片段标识符。

4.UrlEncode

在URL中,包含了一些特殊字符,有  %   /   :   .   #   等,但是在查询字符串中,由于查询字符串是程序员自定义的,就有可能会出现特殊字符,造成识别错误。这是就需要对字符或其他非英语系的文字进行转义操作。

UrlEncode就是将数据的二进制的每个字节取出来,用十六进制表示,前面加上%;

例如c++的十六进制就是c%2B%2B,在网页上就是以下形式:

5.认识方法

1)GET(重要)

GET一般用于获取资源,即请求,可以获取html、css、js等;

GET请求一般是没有正文的,可以通过Query String给服务器发送数据,但GET也可以将数据放在正文中;

2)POST

POST一般用于登录、上传文件;

POST一般带有正文,正文的内容就保存了要上传的内容,但POST也可以将数据放在Query String中;

3)PUT、DELETE

PUT用于传输文件,DELETE用于删除文件,这两个可以实现Restful风格的接口。

6.GET与POST的区别(重点)

GET与POST没有本质上的区别,经常能够混着用;

1)语义上的区别

GET一般用于获取资源,即请求;POST一般用于登录、上传文件;

2)携带数据的方式

GET的数据一般放在Query String中,POST的数据一般放在正文中;

但GET也可以将数据放在正文中,POST也可以将数据放在Query String中;

3)是否幂等

幂等:请求一定,得到的响应就是一定的。

GET通常建议设计成是幂等的,POST无要求;

4)是否能被缓存

由于GET设计为幂等的,那么GET的结果就是一定的,GET的结果就可以被缓存;

由于POST对幂等没有要求,那么POST的结果就不是一定的,POST的结果就不能被缓存。

标签:协议,HTTP,GET,URL,报文,POST,端口号
From: https://blog.csdn.net/2301_79184547/article/details/145146308

相关文章

  • 【TCP协议】TCP Keepalive 指南
    1、什么是TCPKeepalive?TCPKeepalive是一种TCP协议内置的探测机制,用于检测长时间未活动的连接是否仍然存活。当启用了Keepalive后,TCP会在连接空闲一定时间后,定期向对端发送探测包,如果未收到对端的响应,则会尝试多次探测,最终关闭连接。用途:检测并清理死连接,防止资源长期......
  • 【Gossip 协议】Redis 集群中节点之间的通信方式?
    #分布式系统#Gossip协议在分布式系统中,不同的节点进行数据/信息共享是一个基本的需求。一种比较简单粗暴的方法就是集中式发散消息,简单来说就是一个主节点同时共享最新信息给其他所有节点,比较适合中心化系统。这种方法的缺陷也很明显,节点多的时候不光同步消息的效率低,还太......
  • HTTP 与 HTTPS:从明文传输到安全加密的全面解析
    下面这篇博客旨在全方位解读HTTP与HTTPS的来龙去脉、核心原理以及在现代网络中的广泛应用。为了帮助读者真正理解这两种协议如何支撑互联网生态,本篇文章不仅会介绍HTTP的发展历程,也会深入浅出地阐述HTTPS如何在安全层面保护用户数据,并展望未来网络的演化趋势。希望这篇......
  • 网页请求助手 WebRequestHelper 【支持XMLHTTP、WinhttpRequest】
    WebRequestHelper是我用VB6开发的网页请求辅助工具,可以在软件界面中设置请求方式、请求头,然后自动生成VB代码。下面假设要请求 http://www.dpxq.com/hldcg/search/list.asp?owner=ryueifu&page=4这个网址,预先在浏览器中使用开发工具获取到如下:GET/hldcg/search/DhtmlXQ_www_d......
  • CANFD总线协议
    1.帧起始  与经典CAN类似,CANFD数据帧的第1位也是“SOF(StartOfFrame,帧起始)”,显性电平(逻辑0)2.仲裁域  与经典CAN类似,不过将“RTR”位替换为“RRS”位。RRS是英文“RemoteRequestSubstitution(远程请求替换)”的缩写,该位替代了远程帧请求位,并且在CANFD中永远保持显性(逻辑0......
  • HTTP常见状态码:从1xx到 5xx的全面解析
    在网络世界中,浏览网页、发送请求、调用接口几乎无处不在,但你是否注意过这些操作背后返回的状态码?它们就像网络的“语言”,通过简单的数字告诉我们操作成功与否、问题出在哪里,以及接下来该如何处理。今天,让我们全面解析HTTP常见状态码,从1xx到5xx,帮你读懂网络的秘密!什么是H......
  • 【git】Qualcomm 代码clone失败出现RProtocol https not supported or disabled in li
    问题描述    在尝试从https://服务器(ChipCode是)克隆任何内容时收到此输出,则表示您正在使用的curl/libcurl实例是在不支持此协议的情况下构建的。如果在构建时运行的configure脚本找不到curl使SSL工作所需的所有库和包含文件,则可能会发生这种情况。如果conf......
  • 基于DPDK的用户态协议栈(2)基于DPDK实现UDP的数据接收
    注:本文只实现了数据接收部分一、使用DPDK实现UDP的数据接收流程1.1初始化EALmain(intargc,char*argv[]){//main函数的标准参数,用于接收命令行参数。argc表示参数的数量,argv是一个指向字符串数组的指针,这些字符串是传递给程序的命令行参数。//初始化EAL。if(......
  • Nginx配置 HTTPS
    一,nginx的安装环境准备ubuntu云服务器一台(虚拟机也可)使用apt库进行安装#默认安装最新版aptinstallnginx-y二、SSL证书部署在nginx目录新建cert文件夹存放证书文件。cd/usr/local/nginxmkdircert将申请的证书上传至cert文件夹scp/Users/yourname/D......
  • 【江协STM32】11-1 SPI通信协议
    SPI(SerialPeripheralInterface)是由Motorola公司开发的一种通用数据总线四根通信线:SCK(SerialClock)、MOSI(MasterOutputSlaveInput)、MISO(MasterInputSlaveOutput)、SS(SlaveSelect)同步,全双工支持总线挂载多设备(一主多从)         1. 硬件电路所有SPI设......