JavaWeb 13.HTTP协议

news2024/11/23 21:45:34

和自己的情绪共处,永远保持乐观

                                        —— 24.9.26

一、HTTP简介

HTTP 超文本传输协议 (HTTP-Hyper Text transfer protocol),是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几十年的使用与发展,得到不断地完善和扩展。它是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。客户端与服务端通信时传输的内容我们称之为报文HTTP协议就是规定报文的格式。HTTP就是一个通信规则,这个规则规定了客户端发送给服务器的报文格式,也规定了服务器发送给客户端的报文格式。实际我们要学习的就是这两种报文。客户端发送给服务器的称为“请求报文",服务器发送给客户端的称为"响应报文"。

二、发展历程

① HTTP/0.9 :

蒂姆伯纳斯李是一位英国计算机科学家,也是万维网的发明者。他在 1989年创建了单行 HTTP 协议。它只是返回一个网页。这个协议在 1991年被命名为 HTTP/0.9。

② HTTP/1.0

1996年,HTTP/1.0发布。该规范是显著扩大,并且支持三种请求方式:GET,HEAD,和POST。

HTTP/1.0 相对于 HTTP/0.9 的改进如下:
        每个请求都附加了 HTTP 版本;
        在响应开始时发送状态代码;
        请求和响应都包含 HTTP 报文头;
        内容类型能够传输 HTML 文件以外的文档;

但是,HTTP/1.0 不是官方标准。

③ HTTP/1.1: 

HTTP 的第一个标准化版本 HTTP/1.1(RFC 2068)于1997 年初发布,

支持七种请求方法:OPTIONS,GET, HEAD,POST,PUT,DELETE,和TRACE
HTTP/1.1 是 HTTP 1.0 的增强:
        虚拟主机允许从单个IP地址提供多个域:

        持久连接和流水线连接允许Web浏览器通过单个持久连接发送多个请求;

        缓存支持节省了带宽并使响应速度更快;。

HTTP/1.1 在接下来的 15 年左右将非常稳定。在此期间,出现了 HTTPS(安全超文本传输协议)。它是使用 SSL/TLS 进行安全加密通信的 HTTP的安全版本。

TomCat默认使用HTTP/1.1协议

④ HTTP/2:

由IETF在2015年发布。HTTP/2旨在提高Web性能,减少延迟,增加安全性,使Web应用更加快速、高效和可靠。
多路复用:HTTP/2 允许同时发送多个请求和响应,而不是像 HTTP/1.1一样只能一个一个地处理。这样可以减少延迟,提高效率,提高网络吞吐量。

二进制传输:HTTP/2 使用二进制协议,与 HTTP/1.1 使用的文本协议不同。二进制协议可以更快地解析,更有效地传输数据,减少了传输过程中的开销和延迟。

头部压缩:HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩,减少了头部传输的数据量,从而减少了网络延迟。
服务器推送:HTTP/2 支持服务器推送,允许服务器在客户端请求之前推送资源,以提高性能。

改进的安全性:HTTP/2默认使用TLS(Transport Layer Security)加密传输数据,提高了安全性。

兼容 HTTP/1.1:HTTP/2 可以与 HTTP/1.1共存,服务器可以同时支持 HTTP/1.1和 HTTP/2。如果客户端不支持 HTTP/2,服务器可以回退到 HTTP/1.1。

⑤ HTTP/3:

于 2021年5月27日发布,HTTP/3是一种新的、快速、可靠且安全的协议,适用于所有形式的设备。 HTTP/3 没有使用 TCP,而是使用谷歌在 2012年开发的新协议 QUIC。

HTTP/3 是继 HTTP/1.1和 HTTP/2之后的第三次重大修订。HTTP/3 带来了革命性的变化,以提高 Web 性能和安全性。设置 HTTP/3 网站需要服务器和浏览器支持。
目前,谷歌云、Cloudflare和Fastly支持HTTP/3。Chrome、Firefox、Edge、Opera和一些移动浏览器支持 HTTP/3。 

三、HTTP协议的会话方式

浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。

http/1.1协议特点

1.交互的方式

        请求        永远都是客户端向服务端发送

        响应        永远都是服务端向客户端返回

2.数据的格式

请求时发送的数据称之为请求报文

响应时返回的数据称之为响应报文

报文的规定格式:

        报文首部        请求报文        响应报文

             行                请求行            相应行

             头                请求头            响应头

          报文主体         请求体            响应体     

3.http长连接和短链接的问题

        http        应用层协议(只规定了数据格式,如何发送不管)         http/tcp/ip

        tcp          传输层协议 (默认使用TCP协议)                               面向连接的协议

        ip            网络层协议 (确定网络层传输实体)      

4.tcp协议的三次握手和四次挥手

因为要创建链接,所以有面向连接的协议:tcp协议,所以区分了长短链接、持久链接之分

长短连接的区分:短链接建立一次请求后就关闭一次链接,长链接直到所有请求完成后才关闭链接,减少了连接的创建次数,减少了缓存

四、请求和响应报文

1.报文的格式

报文分为报文首部和报文主体:行、头、体

        报文首部:服务器端或客户端需处理的请求或响应的内容及属性

        报文主体:应该被发送的数据

报文首部可继续细分为“行”和“头”

2.请求报文

客户端发给服务端的报文

请求报文格式:

        请求首行(请求行);GET/POST 资源路径?参数 HTTP/1.1

        请求头信息(请求头)

        空行

        请求体

请求行:请求方式、资源路径、协议与版本

GET /05_web_tomcat/login_success.html username=admin password=123213 HTTP/1.1

请求头:

- 主机虚拟地址
Host: localhost:8080 
  
- 长连接
Connection: keep-alive 

- 请求协议的自动升级 http的请求,服务器却是https的,浏览器自动会将请求协议升级为https的
Upgrade-Insecure- e uests: 1  

- 用户系统信息
User-Agent: Mozilla/5.0 ( Windows T 6.1; O 64) AppleWebKit/537.36 ( HTML, like Gecko) 
Chrome/68.0.3440.75 Safari/537.36

- 浏览器支持的文件类型
Accept:text/html,application/xhtml+xml,application/xml; q=0.9,image/webp,image/apng,*/*;q=0.8

- 当前页面的上一个页面的路径[当前页面通过哪个页面跳转过来的]:   可以通过此路径跳转回上一个页面, 广告计费,防止盗链
Referer: http://localhost:8080/05_web_tomcat/login.html

- 浏览器支持的压缩格式
Accept-Encoding: gzip, deflate, br

- 浏览器支持的语言
Accept-Language: zh-C ,zh; q=0.9,en-US; q=0.8,en; q=0.7

请求体:使用form表单发送POST请求,请求体中才有数据

3.响应报文

响应报文格式:

        响应首行(响应行);协议/版本 状态码 状态码描述

        响应头信息(响应头)

        空行

        响应体

响应行:

        组成部分:

                协议及版本HTTP/1.1

                响应状态码 200

                状态描述 OK(缺省)

HTTP/1.1 200 O (缺省)

响应头:

Server: Apache-Coyote/1.1            服务器的版本信息
Accept- anges: bytes
ETag: /"157-1534126125811"
Last-Modified: Mon, 13 Aug 2018 02:08:45 GMT
Content-Type: text/html              响应体数据的类型浏览器根据类型解析响应体数据   
Content-Length: 157                 响应体内容的字节数 
Date: Mon, 13 Aug 2018 02:47:57 GMT  响应的时间,这可能会有8小时的时区差

响应体:

<!--需要浏览器解析使用的内容如果响应的是html页面,最终响应体内容会被浏览器显示到页面中-->
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="UTF-8">
 <title>Insert title here</title>
 </head>
 <body>
    恭喜你,登录成功了...
 </body>
 </html>

五、常见响应状态码

响应状态码:响应码对浏览器来说很要,它告诉浏览器响应的结果。比较有代表性的响应码如下:

        200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

        302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location指定新请求的URL地址;

        304:使用了本地缓存;

        404:请求的资源没有找到,说明客户端错误的请求了不存在的资源

        405:请求的方式不允许;

        500:请求资源找到了,但服务器内部出现了错误;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL之vector篇(下)(手撕底层代码,从零实现vector的常用指令,深度剖析并优化其核心代码)

文章目录 1.基本结构与初始化1.1 空构造函数的实现与测试1.2 带大小和默认值的构造函数1.3 使用迭代器范围初始化的构造函数(建议先看完后面的reserve和push_back)1.4 拷贝构造函数1.5 赋值操作符的实现&#xff08;深拷贝&#xff09;1.6 析构函数1.7 begin 与 end 迭代器 2. …

jQuery——层次选择器

1、层次选择器&#xff1a;查找子元素&#xff0c;后代元素&#xff0c;兄弟元素的选择器。 ancestor descendant&#xff1a;在给定的祖先元素下匹配所有的后代元素 parent > child&#xff1a;在给定的父元素下匹配所有的子元素 prev next&#xff1a;匹配所有紧接在…

每日一练:二叉树的右视图

199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,…

超详细的 pytest教程 之前后置方法和 fixture 机制

前言 这一篇文章专门给大家讲解pytest中关于用例执行的前后置步骤处理,pytest中用例执行的前后置处理既可以通过测试夹具(fixtrue)来实现&#xff0c;也可以通过xunit 风格的前后置方法来实现。接下来我们一起看看如何具体使用。 一、xunit 风格的前后置方法 1、函数用例的前…

基于STM32的智能家庭安全监控系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 传感器数据采集摄像头监控与数据处理实时报警功能实现应用场景结论 1. 引言 智能家庭安全监控系统使用嵌入式设备&#xff0c;如STM32微控制器&#xff0c;来实时监控家庭环境。通过集成…

[教程]如何在iPhone上启用中国移动/联通/电信RCS消息

目前 苹果已经在 iOS 18 中带来 RCS 富媒体消息的支持&#xff0c;该消息基于网络传递&#xff0c;用户可以通过 RCS 免费将消息发送到其他 iPhone 或 Android 设备。在苹果面向测试版用户推出的 iOS 18.1 Beta 版中&#xff0c;中国网络运营商包括中国移动、中国联通、中国电信…

文献笔记 - Ground effect on rotorcraft unmanned aerial vehicles: a review

这篇博文是自己看文章顺手做的笔记 只是简单翻译和整理 仅做个人参考学习和分享 如果作者看到觉得内容不妥请联系我 我会及时处理 本人非文章作者&#xff0c;文献的引用格式如下&#xff0c;原文更有价值 摘要—— 收集和讨论小型多旋翼无人机受地面效应的影响&#xff0c;…

阿b的弹幕如何获取?这个可以帮到你!

弹幕 前几天&#xff0c;做了一个b站弹幕的爬取&#xff0c;只需要输入一个bv号&#xff0c;就可以查看这个视频的弹幕&#xff0c;并且提供了一种可以写入到文件的方法。但是有人反应&#xff0c;这种使用仍然非常困难&#xff0c;应该提供一个更加友好的用户界面。 因此本期…

共享单车轨迹数据分析:以厦门市共享单车数据为例(八)

副标题&#xff1a;基于POI数据的站点综合评价——以厦门市为例&#xff08;三&#xff09; 什么是优劣解距离法&#xff08;TOPSIS&#xff09;&#xff1f; 优劣解距离法&#xff08;Technique for Order Preference by Similarity to Ideal Solution&#xff0c;简称TOPSI…

借用连接2-得到主库或从库池子连接

二、借用连接--AbstractRoutingDataSource类 目的&#xff1a;基于look up data&#xff0c;然后从目标数据源借用连接 注look up key确定走主 or 从数据库连接池代码开发&#xff1a; 1.定义子类继承AbstractRoutingDataSource&#xff0c;并覆写determineCurrentLookupKey方…

Vue3+Element-UI Plus登录静态页

<script setup> import {reactive, ref} from "vue";const formRefref() const formModelreactive({username:,password: }) const formRulesreactive({username:[{required:true,message:请输入账号,trigger:blur}],password:[{required:true,message:请输入密…

深圳前湾地铁附近的13元一份的工地盒饭

因为深圳前海这边有很多工地&#xff0c;所以也存在很多的工地餐厅。发现价格出奇统一&#xff0c;都是13元一份。主打一个量大管饱还下饭&#xff0c;每次都吃得有些撑。前海写字楼下的底商也很多打工人的干饭餐厅&#xff0c;但是工作餐均价都要30。如果不在餐厅吃&#xff0…

高通AI应用程序开发3:网络模型(一)

1. 支持的网络模型 Qualcomm神经处理SDK支持下表所列的网络模型。 有关支持的运行时和单个图层类型的限制和约束的详细信息&#xff0c;请参阅 限制 。 GPU运行时中支持的所有层对两种GPU模式都有效&#xff1a;GPU_FLOAT32_16_HYBRID和GPU_FLAAT16。GPU_FLOAT32_16_HYBRID-…

3分钟!手把手教你学会如何无损放大图片

我们常常遇到需要放大图片却又不希望损失画质的尴尬境地。无论是为了打印大幅海报、在线展示高清细节&#xff0c;还是想要修复珍贵的老照片&#xff0c;无损放大图片成为了许多人的迫切需求。下面给大家分享一款最新无损放大图片软件&#xff0c;高效且实用&#xff0c;一起来…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…

如何在Windows和Linux之间实现粘贴复制

第一步 sudo apt-get autorremove open-vm-tools第二步 sudo apt-get update第三步 sudo apt-get install open-vm-tools-desktop第四步 一直按Y&#xff0c;希望执行 Y第四步 重启 reboot然后可以实现粘贴复制。

国内外AI大模型对比,国产AI的优势是什么?非常详细收藏我这一篇就够了

AI正在以惊人的速度改变各行各业的运作方式。 热点趋势解读之AI系列&#xff0c;将通过多篇文章探讨如何利用AI驱动创新、提升效率&#xff0c;并为未来的商业和社会发展提供无限可能。 篇章五&#xff1a;国内外AI大模型哪家强&#xff1f; > 设为星标公众号&#xff0c…

我校教师当选为中国计算机学会(CCF)杰出会员

近日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;会员评选委员会发来贺信&#xff0c;祝贺我校信息技术学院大数据技术科研创新团队负责人陈天伟老师当选CCF杰出会员(CCF Distinguished Membership)&#xff0c;并高度评价了陈天伟的专业造诣和长期以来对CCF发展的贡…

Navicat连接数据库

一、MySQL地卸载&#xff1a; 二、Navicat连接数据库&#xff1a; 安装navicat的安装&#xff1a; 错误解决方法&#xff1a; 实验过程&#xff1a; 在本地sql数据库可以访问&#xff0c;说明数据库开启 用navicat连接&#xff1a;出现问题&#xff1a; 将mysql用户登录的加密…

欧洲欧盟药品数据库:EMA、HMA、EDQM-一键查询

在过去的一段时间里&#xff0c;我坚持不懈地每天下午都向那些精通欧洲法规注册的同事请教&#xff0c;学习EU的注册法规&#xff0c;收获颇丰。作为一个对知识充满渴望的求学者&#xff0c;今天我愿意将我学到的心得体会分享给大家&#xff0c;希望你们能够喜欢。 几个月前&a…