一:HTTP协议解析
一:HTTP协议解析
1.HTTP协议即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,他是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从web服务器传送到web浏览器。
2.发起一个HTTP请求
①借助浏览器可以发起一个HTTP请求,输入URL
②不借助浏览器的时候,可以使用工具:curl
3.HTTP协议详解
目前HTTP协议最新版本为1.1,HTTP协议是一种无状态协议。无状态协议指的是web浏览器与web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器发出请求,然后web服务器返回响应,连接就关闭了,在服务器端不保留连接的有关信息。也就是说HTTP请求只能由客户端发起,服务端不能主动向客户端发送数据。
HTTP遵循请求/应答模型,Web浏览器向Web服务器发送请求时,Web服务器处理请求并返回适当的应答。如下图:

HTTP请求包括三部分:1.请求行,即第一行;2.请求头(第二行至空白处);3.请求正文,空白下。
HTTP响应包括三部分:1.响应行,即第一行;2.响应头(第二行至空白处);3.响应正文,空白下。
4.HTTP请求方法
HTTP请求方法中最常见的为get和post。
①GET
GET方法主要用于获取请求页面的指定信息(以实体的格式),如果请求资源为动态脚本(非HTML),那么返回文本是web容器解析后的HTML源代码,而不是源文件。例如请求1.jsp,那么返回的不是1.jsp的源文件,而是经过解析的HTML代码。在浏览器中看到的就是经过解析渲染的页面。

②POST
POSt方法与GET方法类似,但是区别在于,GET方法没有请求内容,POST方法是有请求内容的。POST请求多用于向服务器发送大量的数据。GET也可以,但是有大小限制,并且GET请求会将发送的数据显示在浏览器端,而POST不会,所以相对来说安全一点。

③HEAD
HEAD方法除了服务器不能在响应里返回消息主体外,其他的和GET方法相同。主要用于获取报头,经常被用来测试超文本链接的有效性、可访问性和最近的改变。攻击者编写工具时,经常使用HEAD方法,因为只测试资源是否存在,而不用返回消息主题,所以速度比较快。
一个经典的HEAD请求如下:
HEAD /index.php HTTP/1.1
HOST:www.aaa.com
④PUT
PUT方法用于请求服务器把请求中的实体存储在请求资源下,如果请求资源已经在服务器中存在,那么将用此请求中的数据替换原先的数据,作为指定资源的最新修改版。如果请求指定的资源不存在,将会创建这个资源,且数据位于请求正文,请求如下:
PUT /.txt
HOST:www.aaa.com
Content-length:
这段请求将会在主机根目录下创建1.txt,内容为123456,一般会将put方法关闭,因为他会在服务器中建立文件,属于危险方法之一。
⑤DELETE
DELETE方法用于请求资源服务器删除请求的指定资源。服务器一般会关闭此方法,因为在客户端可以进行删除操作,属于危险方法之一。
⑥TRACE
TRACE方法用于回显服务器收到的请求,主要用于测试和诊断。
⑦CONNECT
HTTP/1.1协议规范保留了CONNECT方法,此方法是为了用于能动态切换到隧道的代理。
⑧OPTIONS
允许客户端查看服务器的性能
5.状态码
客户端向服务器发送请求之后,服务器进行响应,HTTP响应的第一行正在,就会反应状态码。

HTTP协议中的状态码为三位数,第一位数字定义响应的类型,且只有5种:
①1XX:信息提示,表示请求已被成功接收,继续处理。范围为100~101。
②2XX:成功,服务器成功的处理了请求,范围为200~206。
③3XX:重定向,重定向状态码用于告诉浏览器客户端,他们访问的字眼已被移动,并告诉客户端新的资源地址位置。这是,浏览器将重新对资源发起请求,其范围为300~305。
④4XX:客户端错误的状态码,优势客户端会发送一些服务器无法处理的东西,比如格式错误的i请求,最常见的时,请求一个不存在的URL,其范围为400~415。
⑤5XX:有时客户端发送一条有效请求,单web服务器自身却出错了,可能时web服务器运行错误,或者网站挂掉了。5XX就是用来描述服务器内部错误的,其范围为500~505。
常见的一些状态码:
|
200:客户端请求成功,最常见的状态。 302:重定向。 404:请求资源不存在。 400:客户端存在语法错误,不能被服务器所理解。 401:请求未经授权。 403:服务器收到请求,但是拒绝提供服务。 500:服务器内部错误。 503:服务器当前不能处理客户端请求,一段时间后可能恢复正常 |
6.HTTP消息
具体见下一节
7.HTTP和HTTPS的区别
HTTPS协议的全称为Hypertext Transfer Protocol over Secure Socket Layer ,它是以安全为目标的HTTP通道,其实就是HTTP的“升级”版本,只是它比单纯的HTTP协议更加安全。
HTTPS的安全基础是SSL,即在HTTP下加入SSL层。HTTPS=HTTP+SSL
两者的区别主要如下:
①HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
②HTTP和HTTPS使用的连接方式不同,HTTP使用80端口,HTTPS使用443端口。
一:HTTP协议解析的更多相关文章
- ts 协议解析
pes : http://wenku.baidu.com/link?url=KjcA0qXqZ1bWVQTa8i1YOmygofldSQL7Pjj-zGRw1e_6_LFmVLo5DIWF0SNwVn ...
- [转]netty对http协议解析原理
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...
- twemproxyRedis协议解析探索——剖析twemproxy代码正编
这篇文章会对twemproxyRedis协议解析代码部分进行一番简单的分析,同时给出twemproxy目前支持的所有Redis命令.在这篇文章开始前,我想大家去简单地理解一下有限状态机,当然不理解也是 ...
- B/S 架构中,网络模型的分解与协议解析
前言 如果是C/S专业毕业的或者是学过计算机网络课程的童鞋们,相信大家都知道网络模型的划分,本文首先来聊一聊目前对于B/S结构中,网络模型分解的两种方式. 没错,相信大家看到这个图片的时候就已经明白了 ...
- 详解BLE 空中包格式—兼BLE Link layer协议解析
BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...
- netty对http协议解析原理解析
本文主要介绍netty对http协议解析原理,着重讲解keep-alive,gzip,truncked等机制,详细描述了netty如何实现对http解析的高性能. 1 http协议 1.1 描述 标示 ...
- MODBUS协议解析中常用的转换帮助类(C#)
p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...
- AOSP中的HLS协议解析
[时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, AOSP, 源码分析,HttpLiveSource, LiveSession,PlaylistFetcher] ...
- WebSocket协议解析
WebSocket协议解析 转载请注明出处:WebSocket解析 现在,很多网站为了实现推送技术,所用的技术都是轮询.轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服 ...
- SOCKS5 协议解析
代理 根据 HTTP 1.1 的定义,proxy 是: An intermediary program which acts as both a server and a client for the ...
随机推荐
- react中redux的理解
定义 redux可以看作是flux的进阶版,主要用于react中公共状态(数据)的管理 redux底层原理 redux有一个createStore方法,这个方法用户创建公共存储空间,createSto ...
- 03_CSS入门和高级技巧(1)
上节课知识的复习 插入图片,页面中能够插入的图片类型:jpg.jpeg.bmp.png.gif:不能的psd.fw. 语法: <img src="路径" alt=" ...
- 【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph
示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 目录 ...
- 一步步打造QQ群发消息群发器
最近为了做公众号号推广,吸粉,然后加了几百个QQ群,感觉QQ群的群发效果还是不错的,一天能捞到100个粉丝左右,好的时候也有200个,少的时候几十个,但是由于太多的群了,手工一个个点击开来群发,几百个 ...
- 安卓集成Unity开发示例(一)
本项目目的是在移动端的 Native App 中以库的形式集成已经写好的 Unity 工程,利用 Unity 游戏引擎便捷的开发手段进行跨平台开发. Unity官方文档 Unity as a Libr ...
- [hdu5313]二分图性质,dp
题意:给定二分图,求添加的最多边数,使得添加之后还是二分图 思路:如果原图可以分成X,Y两个点集,那么边数最多为|X||Y|条.由于|X|+|Y|==n,所以需要使|X|与|Y|尽量接近.先对原图进行 ...
- springmvc 校验--JSR
1.使用JSR规范是简单使用的,如果使用hibernate校验则需要在工程中添加hibernate-validate.jar,以及其他依赖的jar包. 2,在mvc配置文件中使用<mvc:ann ...
- 站在CSS3的肩上定义选择器
按上下文选择元素 按祖先元素选择要格式化的元素 输入ancestor,这里的ancestor是希望格式化的元素的祖先元素的选择器. 输入一个空格(必不可少). 如果需要,对后续的每个祖先元素重复第(1 ...
- 使用windows(win7和win10),最好用chocolatey
Win10平台使用PowerShell命令行choco来安装所需开源软件. 步骤如下: 打开Chocolatey 官方网站,The package manager for windows,这很巨硬. ...
- R的安装以及包安装
今天看论文,需要用到R语言的库,于是又折腾了半天.. 其实并没有什么太大的问题,只是在第三方包的下载方面还有python中使用R方面遇到了问题: 第三方包的导入 其实在网上有 ...