深度剖析:HTTP协议
2017-05-03 11:06
399 查看
小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流目录名词解释
HTTP协议简介及其版本
HTTP的请求类型
HTTP协议报文
-------------------------------请求与响应报文格式 -------------------------------请求方法 -------------------------------HTTP返回状态码 -------------------------------HTTP首部介绍 -------------------------------常见的MIME类型一次web资源请求的具体过程
客户端(浏览器)从服务器请求数据基本步骤
HTTP接收多用户的并发请求
Cookie流程
抓包工具和命令
-------------------------------Sniffer -------------------------------Wireshark -------------------------------Curl
一、 名词解释
![](https://s1.51cto.com/wyfs02/M01/93/32/wKioL1kJQrih7YHaAACu9vj-Fdg599.png)
二、 HTTP协议简介及其版本
1. HTTP协议简介
HTTP(Hyper Text Transfer Protocol 超文本传输协议): 是互联网应用最为广泛的一种网络协议,主要用于Web服务。通过计算机处理文本信息,格式 为HTML(Hyper Text Mark Language)超文本标记语言来实现。 2. HTTP协议版本
![](https://s4.51cto.com/wyfs02/M02/93/34/wKiom1kJQzWSjAXGAACG-q6rOXY425.png)
三、 HTTP的请求类型
1. 静态(事先就编辑并定义完成的)
![](https://s5.51cto.com/wyfs02/M00/93/32/wKioL1kJQ0rTUbYyAAB1e1ZZlaw342.png)
1) 首先web服务器向内核注册socket(套接字,监听浏览器请求)
2) 客户端通过浏览器,向web服务器发起request请求
3) Web服务器收到客户端的request信息
4) 如果用户请求的资源在服务器本地的话,http服务会向系统内核申请调用
5) 内核调用本地磁盘里的数据,并将数据发给http服务
6) http将用户请求的资源通过response报文,最终响应给客户端
2. 动态(通过编程语言编写的程序,然后输出html格式)
![](https://s1.51cto.com/wyfs02/M01/93/34/wKiom1kJRKDgu_rUAAGJ8sE3NyY352.jpg)
动态与静态相似,只不过是中间多了一个调用后端解释器的步骤,通过解释器将 数据生成html格式的文件,然后构建成响应报文,最终返回客户端。四、 HTTP协议报文
![](https://s3.51cto.com/wyfs02/M00/93/32/wKioL1kJRMjDxh64AAChyLf1Vko406.png)
1. 请求方法
![](https://s4.51cto.com/wyfs02/M01/93/34/wKiom1kJRN6QsNQ2AACR8jsX7nk574.png)
2. HTTP返回状态码
![](https://s4.51cto.com/wyfs02/M01/93/32/wKioL1kJRPSgrMVeAABq0GS2tak250.png)
3. HTTP首部介绍
![](https://s5.51cto.com/wyfs02/M02/93/34/wKiom1kJRRfAeoJiAAC7ME9hoZw054.png)
4. 常见的MIME类型
![](https://s1.51cto.com/wyfs02/M00/93/34/wKiom1kJRS3BD6HqAABF7eMUBRE682.png)
五、 一次web资源请求的具体过程
![](https://s4.51cto.com/wyfs02/M00/93/33/wKioL1kJRT_yIm6iAACpkHOaVXQ524.png)
六、 客户端(浏览器)从服务器请求数据的基本步骤
![](https://s4.51cto.com/wyfs02/M02/93/34/wKiom1kJRVrDW9PfAAIOtEezb8I334.jpg)
用户发起一个http请求,缓存获取到URL,根据URL查找是否有匹配的副本,这个副本可能在内存中,也可能在本地磁盘。
如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy";
检查这个"copy"是否过期,否则直接返回,是则继续向服务器转发请求。 HTTP中,通过Cache-Control首部和Expires首部为文档指定了过期时间,通过对过期时间的判断,缓存就可以知道文档是不是在保质期内。Expires首部和Cache-Control:max-age首部都是来告诉缓存文档有没有过期,为什么需要两个响应首部来做这件简单的事情了?其实这一切都是历史原因,Expires首部是HTTP 1.0中提出来的,因为他使用的是绝对日期,如果服务端和客户端时钟不同步的话(实际上这种情况非常常见),缓存可能就会认为文档已经过了保质期。
服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304:未变更,更新过期时间。
七、HTTP接收多用户的并发请求
1. Apache
Apache默认的工作模型是阻塞模型,默认一次只接收并且处理一个请求,通过主进程生成 子进程,然后主进程收到请求时交给子进程进行处理这种方法,实现接收多用户并发请求 2. Nginx
Nginx默认工作模型为非阻塞模型,通过worker_processes指定工作进程数,默认为1,而 nginx的一个进程可以处理多个并发连接请求八、 Cookie流程
![](https://s2.51cto.com/wyfs02/M02/93/33/wKioL1kJRbaAJqV0AADDZ6LHjUM547.jpg)
Web客户端通过浏览器向Web服务器发送连接请求,通过HTTP报文请求行中的URL打开某一Web页面。
Web服务器接收到请求后,根据用户端提供的信息产生一个Set-Cookies Header。
将生成的Set-Cookies Header通过Response Header存放在HTTP报文中回传给Web客户端,建立一次会话连接。
Web客户端收到HTTP应答报文后,如果要继续已建立的这次会话,则将Cookies的内容从HTTP报文中取出,形成一个Cookies文本文件储存在客户端计算机的硬盘中或保存在客户端计算机的内存中。
当Web客户端再次向Web服务器发送连接请求时,Web浏览器首先根据要访问站点的URL在本地计算机上寻找对应的Cookies文本文件或在本地计算机的内存中寻找对应的Cookies内容。如果找到,则将此Cookies内容存放在HTTP请求报文中发给Web服务器。
Web服务器接收到包含Cookies内容的HTTP请求后,检索其Cookies中与用户有关的信息,并根据检索结果生成一个客户端所请求的页面应答传递给客户端。
九、抓包工具和命令
Sniffer
l Sniffer,中文可以翻译为嗅探器,也叫抓数据包软件,是一种基于被动侦听原理的网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。
l Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。
Wireshark
l Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换
l 可以通过wireshark包进行数据分析,是一个常用的数据包分析工具,可以用于检测服务器是否有安全隐患,比如,在响应报文中,是否应答了server字段,这个字段指定了服务器使用的程序及其版本,如果被攻击者知道这些信息后,攻击者可以根据程序及其版本的漏洞进行攻击
Curl
l curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
l curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。
l 作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
HTTP协议简介及其版本
HTTP的请求类型
HTTP协议报文
-------------------------------请求与响应报文格式 -------------------------------请求方法 -------------------------------HTTP返回状态码 -------------------------------HTTP首部介绍 -------------------------------常见的MIME类型一次web资源请求的具体过程
客户端(浏览器)从服务器请求数据基本步骤
HTTP接收多用户的并发请求
Cookie流程
抓包工具和命令
-------------------------------Sniffer -------------------------------Wireshark -------------------------------Curl
一、 名词解释
![](https://s1.51cto.com/wyfs02/M01/93/32/wKioL1kJQrih7YHaAACu9vj-Fdg599.png)
二、 HTTP协议简介及其版本
1. HTTP协议简介
HTTP(Hyper Text Transfer Protocol 超文本传输协议): 是互联网应用最为广泛的一种网络协议,主要用于Web服务。通过计算机处理文本信息,格式 为HTML(Hyper Text Mark Language)超文本标记语言来实现。 2. HTTP协议版本
![](https://s4.51cto.com/wyfs02/M02/93/34/wKiom1kJQzWSjAXGAACG-q6rOXY425.png)
三、 HTTP的请求类型
1. 静态(事先就编辑并定义完成的)
![](https://s5.51cto.com/wyfs02/M00/93/32/wKioL1kJQ0rTUbYyAAB1e1ZZlaw342.png)
1) 首先web服务器向内核注册socket(套接字,监听浏览器请求)
2) 客户端通过浏览器,向web服务器发起request请求
3) Web服务器收到客户端的request信息
4) 如果用户请求的资源在服务器本地的话,http服务会向系统内核申请调用
5) 内核调用本地磁盘里的数据,并将数据发给http服务
6) http将用户请求的资源通过response报文,最终响应给客户端
2. 动态(通过编程语言编写的程序,然后输出html格式)
![](https://s1.51cto.com/wyfs02/M01/93/34/wKiom1kJRKDgu_rUAAGJ8sE3NyY352.jpg)
动态与静态相似,只不过是中间多了一个调用后端解释器的步骤,通过解释器将 数据生成html格式的文件,然后构建成响应报文,最终返回客户端。四、 HTTP协议报文
![](https://s3.51cto.com/wyfs02/M00/93/32/wKioL1kJRMjDxh64AAChyLf1Vko406.png)
1. 请求方法
![](https://s4.51cto.com/wyfs02/M01/93/34/wKiom1kJRN6QsNQ2AACR8jsX7nk574.png)
2. HTTP返回状态码
![](https://s4.51cto.com/wyfs02/M01/93/32/wKioL1kJRPSgrMVeAABq0GS2tak250.png)
3. HTTP首部介绍
![](https://s5.51cto.com/wyfs02/M02/93/34/wKiom1kJRRfAeoJiAAC7ME9hoZw054.png)
4. 常见的MIME类型
![](https://s1.51cto.com/wyfs02/M00/93/34/wKiom1kJRS3BD6HqAABF7eMUBRE682.png)
五、 一次web资源请求的具体过程
![](https://s4.51cto.com/wyfs02/M00/93/33/wKioL1kJRT_yIm6iAACpkHOaVXQ524.png)
六、 客户端(浏览器)从服务器请求数据的基本步骤
![](https://s4.51cto.com/wyfs02/M02/93/34/wKiom1kJRVrDW9PfAAIOtEezb8I334.jpg)
用户发起一个http请求,缓存获取到URL,根据URL查找是否有匹配的副本,这个副本可能在内存中,也可能在本地磁盘。
如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy";
检查这个"copy"是否过期,否则直接返回,是则继续向服务器转发请求。 HTTP中,通过Cache-Control首部和Expires首部为文档指定了过期时间,通过对过期时间的判断,缓存就可以知道文档是不是在保质期内。Expires首部和Cache-Control:max-age首部都是来告诉缓存文档有没有过期,为什么需要两个响应首部来做这件简单的事情了?其实这一切都是历史原因,Expires首部是HTTP 1.0中提出来的,因为他使用的是绝对日期,如果服务端和客户端时钟不同步的话(实际上这种情况非常常见),缓存可能就会认为文档已经过了保质期。
服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304:未变更,更新过期时间。
七、HTTP接收多用户的并发请求
1. Apache
Apache默认的工作模型是阻塞模型,默认一次只接收并且处理一个请求,通过主进程生成 子进程,然后主进程收到请求时交给子进程进行处理这种方法,实现接收多用户并发请求 2. Nginx
Nginx默认工作模型为非阻塞模型,通过worker_processes指定工作进程数,默认为1,而 nginx的一个进程可以处理多个并发连接请求八、 Cookie流程
![](https://s2.51cto.com/wyfs02/M02/93/33/wKioL1kJRbaAJqV0AADDZ6LHjUM547.jpg)
Web客户端通过浏览器向Web服务器发送连接请求,通过HTTP报文请求行中的URL打开某一Web页面。
Web服务器接收到请求后,根据用户端提供的信息产生一个Set-Cookies Header。
将生成的Set-Cookies Header通过Response Header存放在HTTP报文中回传给Web客户端,建立一次会话连接。
Web客户端收到HTTP应答报文后,如果要继续已建立的这次会话,则将Cookies的内容从HTTP报文中取出,形成一个Cookies文本文件储存在客户端计算机的硬盘中或保存在客户端计算机的内存中。
当Web客户端再次向Web服务器发送连接请求时,Web浏览器首先根据要访问站点的URL在本地计算机上寻找对应的Cookies文本文件或在本地计算机的内存中寻找对应的Cookies内容。如果找到,则将此Cookies内容存放在HTTP请求报文中发给Web服务器。
Web服务器接收到包含Cookies内容的HTTP请求后,检索其Cookies中与用户有关的信息,并根据检索结果生成一个客户端所请求的页面应答传递给客户端。
九、抓包工具和命令
Sniffer
l Sniffer,中文可以翻译为嗅探器,也叫抓数据包软件,是一种基于被动侦听原理的网络分析方式。使用这种技术方式,可以监视网络的状态、数据流动情况以及网络上传输的信息。
l Sniffer程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为杂乱(promiscuous)模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。
Wireshark
l Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换
l 可以通过wireshark包进行数据分析,是一个常用的数据包分析工具,可以用于检测服务器是否有安全隐患,比如,在响应报文中,是否应答了server字段,这个字段指定了服务器使用的程序及其版本,如果被攻击者知道这些信息后,攻击者可以根据程序及其版本的漏洞进行攻击
Curl
l curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
l curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。
l 作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。
相关文章推荐
- 06-http协议深度剖析2--302-304
- Java中深度剖析Http协议
- http协议深度剖析
- 细说servlet之 深度剖析http协议
- PHP自学之路--- HTTP协议深度剖析
- 高并发系统之HTTP缓存协议深度剖析
- 剖析 HTTP 协议
- ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—HttpHandler(三)
- 【转】httpHandlers和httpModules深度剖析
- httpHandlers和httpModules深度剖析
- 【协议】深度了解HTTP/2
- 剖析 HTTP 协议
- 深度剖析ASP.NET架构—HttpHandler(三)
- ASP.NET温故而知新学习系列之深度剖析ASP.NET架构—HttpModule(二)
- httpHandlers和httpModules深度剖析
- 深入剖析/图解HTTP 协议
- 深度剖析ASP.NET架构—HttpModule(二)
- 深度剖析WinPcap之(十)——数据包的内核过滤(10)
- [C# 网络编程系列] 专题二:HTTP协议详解
- HTTP、SIP都是基于文本的协议,他们和基于二进制的协议有什么区别?!