JAVAEE_Servlet_10_HTTP协议
HTTP协议
* 什么是HTTP 协议?
- HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
- 是一种超文本传输协议,是浏览器和服务器之间的一种通讯协议。
- 该协议是W3C负责制定的,其实本质上就是一种数据传输格式,浏览器和服务器都必须按照这种数据格式进行发送和接收数据。
* HTTP协议的特点?
- http协议是基于TCP/IP协议之上的应用层协议。
- http是无状态协议,也就是不管访问多少次,每一次访问都没有任何关系,它们之间都是互相独立的。比如客户端访问了一次网页然后关闭浏览器,接着再启动浏览器,这些服务器都不会知道。
- 无连接,也就是当服务器接收到了客户端的请求,返回响应并收到客户端的应答之后,就会断开连接。每次的连接只会处理一次请求。这种方式可以节省传输时间。
HTTP请求方式
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性 2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。 3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url 4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form 5、PUT
向指定资源位置上传其最新内容 6、DELETE
请求服务器删除Request-URL所标识的资源 7、TRACE
回显服务器收到的请求,主要用于测试或诊断 8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
注意:
- 方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。 - HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,除上述方法,特定的HTTP服务器支持扩展自定义的方法。 - GET方法一般会是用于获取数据,或者将一些简短的数据放到URL参数中传递到服务器中。 - POST一般用于向指定资源提交数据进行处理请求(例如表单或上传文件)。相对来说GET方法更高效和方便,但是却不太安全,也不适合传递大量的数据。所以当要传递安全性要求高或数据量大的数据时首选POST方法。
HTTP请求的组成
- 每一个HTTP请求都分为:请求行、消息报头 空白行、请求体组成 - 请求行:由请求方式、URI、协议版本号组成。 例如: GET https://index.html HTTP/1.1。 - 消息报头:格式为请求头名称 : 请求头内容 例如 Host:localhost。 - 空白行: 用来分割消息报头和请求体,看上去更清晰。 - 请求体:通常只有使用POST方式进程请求的时候才会有请求正文,使用GET没有。
HTTP响应
响应是由服务器端返回给客户端的,同样可以分为三部分:响应行、响应头、响应体。
响应行:表示服务器的响应状态,由HTTP协议版本号、状态码、状态信息组成。例如HTTP/1.1 200 OK,表示服务器响应成功。常见的响应状态码除了200,还有301表示资源被永久转移到其它URL、404表示请求的资源不存在、500表示内部服务器错误。
响应报头:包含服务器对请求的应答信息,例如Content-Type、 Server、 Set-Cookie等。
响应体:服务器返回的数据。例如请求网页时,响应体为网页的HTML代码。
HTTP协议版本号?
HTTP 0.9 协议是最初版本,功能简陋,仅支持请求方式GET,并且仅能请求访问HTML格式的资源。
HTTP/1.0 协议在0.9版本上做了进步,增加了请求方式POST和HEAD;不再局限于0.9版本的HTML格式,根据 Content-Type可以支持多种数据格式,例如text/html、image/jpeg等;同时也开始支持
cache,就是当客户端在规 定时间内访问统一网站,直接访问cache即可。HTTP/1.1 1.1 版的最大变化,就是引入了持久连接(persistent connection),即TCP连接默认不关闭,可以 被多个请求复用,不用声明Connection: keep-alive。解决了1.0版本的keepalive问题,1.1版
本加入了持久连接, 一个TCP连接可以允许多个HTTP请求。HTTP/2.0 为了解决1.1版本利用率不高的问题,提出了HTTP/2.0版本。增加双工模式,即不仅客户端能够同时发 送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题(HTTP2.0使用了多路复用的技
术,做到同一个 连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级);HTTP请求和响应中,状态行和请求/ 响应头都是些信息字段,并没有真正的数据,因此在2.0版本中将所有的信息字段
建立一张表,为表中的每个字段建 立索引,客户端和服务端共同使用这个表,他们之间就以索引号来表示信息字段,这样就避免了1.0旧版本的重复繁 琐的字段,并以压缩的方式传输,提高利用率。另外也增加服务
器推送的功能,即不经请求服务端主动向客户端发 送数据。- 当前主流的协议版本还是HTTP/1.1版本。
Get请求协议详解?
请求协议包括四部分:
请求行:包括三部分【请求方式 URI HTTP协议版本号】
消息报头:
空白行: 用来分割消息报头和请求体的
请求体:
- Post响应协议详解?
响应协议包括四部分:
状态行:包括三部分【 HTTP协议版本号 状态码 状态描述信息】
响应报头:
空白行:用来分隔响应报头和响应体的
响应体:页面中显示的内容
JAVAEE_Servlet_10_HTTP协议的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
随机推荐
- winform导出excel
public void AllDataSetToExcel(DataSet ds) { string saveFileName = ""; bool fileSaved = fal ...
- Linux操作php.ini文件
有时你使用的是别人搭建好的环境,不知道php.ini在哪里,或者好久没有修改配置了,已经忘记了路径在哪,所以在操作文件之前,得先要找到.ini路径. 找php.ini 方式一 $ php -i | g ...
- NPOI 在指定单元格导入导出图片
NPOI 在指定单元格导入导出图片 Intro 我维护了一个 NPOI 的扩展,主要用来导入导出 Excel 数据,最近有网友提出了导入 Excel 的时候解析图片的需求,于是就有了本文的探索 导入E ...
- 破败之王杀人戒bug原理剖析(从底层存储来解释)
今儿看到了破败之王的bug,一级团杀了人变成了对面,然后送塔,戒指就变成了很夸张的层数. 视频如下: https://www.bilibili.com/video/BV1yr4y1A7Mo 一开始我也 ...
- 【RocketMQ源码分析】深入消息存储(1)
最近在学习RocketMQ相关的东西,在学习之余沉淀几篇笔记. RocketMQ有很多值得关注的设计点,消息发送.消息消费.路由中心NameServer.消息过滤.消息存储.主从同步.事务消息等等. ...
- C#使用OpenCV剪切图像中的圆形和矩形
前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形. 准备工作 首先创建一个Wpf项目--WpfOpenCV,这里版本使用Framework4.7.2. 然后使用Nuget搜索[Emgu.C ...
- redis使用ssh密钥远控靶机
首先说明一下我们的实验目的,我们这个实验需要利用一种公有密码,将公有密钥写入要攻击的服务器的redis数据库,然后使用我们自己的私钥进行远控肉鸡的操作. 实验环境:centos7(靶机,版本无太大 ...
- 如何使用excel制作查分系统
在工作学习中,我们经常会遇到使用excel制作查分系统这样的问题.培根说过:读书足以恬情,足以博采,足以长才.因此,面对使用excel制作查分系统我们应该有努力探索的精神.书到用时方恨少,事非经过不知 ...
- Spring Boot 轻量替代框架 Solon 的架构笔记
Solon 是一个微型的Java开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC.REST ...
- P1725 琪露诺 题解(单调队列)
题目链接 琪露诺 解题思路 单调队列优化的\(dp\). 状态转移方程:\(f[i]=max{f[i-l],f[i-l+1],...,f[i-r-1],f[i-r]}+a[i]\) 考虑单调队列优化. ...