HTTP图解

Posted wendyw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP图解相关的知识,希望对你有一定的参考价值。

   在写接口测试的代码时,发现HTTP协议不是很理解,所以找了本书,简单的了解一下。

 1、Web及网络基础

1.1、TCP/IP协议族

 技术分享图片

 

IP网际协议:负责传输的IP协议。它的作用是把各种数据包传送给对方。

ARP协议:地址解析协议,根据对应的IP地址就可以反查出对应的MAC地址。

TCP协议:确保可靠性,位于传输层,提供可靠的字节流服务。(三次握手协议)

DNS服务:提供域名到IP地址之间的解析服务。

 技术分享图片

 

 

1.2、TCP/IP的分层管理

TCP/IP协议族按层次分别是分为以下四层:应用层、传输层、网络层、数据链路层。

应用层:决定了向用户提供应用服务时通信的活动。比如FTP、DNS、HTTP。

传输层:提供处于网络连接中的两台计算机之间的数据传输。比如TCP、UDP。

网络层:处理在网络上流动的数据包。比如IP。

数据链路层:用来处理链接网络的硬件部分。

1.3、TCP/IP通信传输流

 技术分享图片

 

1.4、URI和URL

URI:统一资源标识符

URL:统一资源定位符。Uniform Resource Locator

URI格式如下;

 技术分享图片

 

HTTP协议使用URI让客户端定位到资源:

 技术分享图片

技术分享图片

  

2、简单的HTTP协议

2.1、通信过程

HTTP协议:用于客户端和服务器端之间的通信,通过请求和响应的交换达成通信。

客户端:请求访问文本或图像等资源的一端。

服务器端:提供资源响应的一端。

 

2.2、HTTP是不保存状态的协议

HTTP是不保存状态,即无状态协议。

 技术分享图片

 

通过cookie技术实现保持状态功能。cookie会根据从服务器端发送的响应报文内的一个叫set-cookie的首部字段信息,通知客户端保持Cookie.当下次客户端再往服务器发送请求时,客户端会自动请求报文中加入cookie值发送出去。服务器端发现客户端发送过来的cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

 

2.3、HTTP方法

 技术分享图片

 

2.4、持久连接节省通信量

 技术分享图片

 

HTTP持久连接旨在建立一次TCP连接后进行多次请求和响应的交互,管道化技术通过并行操作。

 

3、HTTP报文内的HTTP信息

HTTP报文:用于HTTP协议交互的信息。请求端(客户端)的HTTP报文叫做请求报文,响应端(服务器端)的叫做响应报文。

请求报文组成形式:请求方法、请求RUI、协议版本、可选的请求首部字段、内容实体,如图。

 技术分享图片

 

响应报文组成形式:协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。如图

 技术分享图片

技术分享图片

技术分享图片

 

请求报文及响应报文的结构:

请求行:包含用于请求的方法,请求URI和HTTP版本。

状态行:包含表明响应结果的状态码,原因短语和HTTP版本

首部字段:包含表示请求和响应的各种条件和属性的各类首部。一般首部有4种:通用首部、请求首部、响应首部、实体首部。

其他:包含HTTP的RFC里未定义的首部(Cookie等),具体实例如下;

 技术分享图片

 

通用首部字段

 技术分享图片

 

请求首部字段

 技术分享图片

 

响应首部字段

 技术分享图片

 

实体首部字段

 技术分享图片

4、返回结果的HTTP状态码

状态码告知从服务器端返回的请求结果。

 技术分享图片

 

 技术分享图片

5、与HTTP协作的Web服务器

通信数据转发程序:代理、网关、隧道

网关:转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。

利用网关可以由HTTP请求转化为其他协议通信,如图。

 技术分享图片

 

代理:一种有转发功能的应用程序,扮演了位于服务器和客户端中间人的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

 技术分享图片

 

使用代理服务器的理由:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的。主要分两种基准分类,一种是是否使用缓存(缓存代理),一种是是否会修改报文(透明代理)。

隧道:隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

 技术分享图片

 

缓存:代理服务器或客户端本地磁盘内保存的资源副本。

 技术分享图片

 

6、确保Web安全的HTTPS

HTTP的缺点

HTTP+加密+认证+完整性=HTTPS

 技术分享图片

 

HTTPS:HTTPS是身披SSL外壳的HTTP。

SSL:Secure Socket Layer,安全套接层。

TLS:Transport Layer Security。

 技术分享图片

 

7、HTTP认证方式

主要介绍几种认证方式:BASIC认证、DIGEST认证、SSL客户端认证、基于表单认证。

 BASIC认证

 技术分享图片

 

DIGEST认证

 技术分享图片

技术分享图片

 

SSL客户端认证

SSL客户端认证是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登录的客户端。

 技术分享图片

  技术分享图片

  

基于表单认证

基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息(Credential),按登录信息的验证结果认证。

 技术分享图片

 

 

Cookie的工作机制是用户识别及状态管理。

 技术分享图片

 

Cookie服务的首部字段如下

 技术分享图片

 

Set-Cookie字段的属性

 技术分享图片

 

Cookie字段的属性

 技术分享图片

 

 技术分享图片

 

8、使用浏览器全双工通信的WebSocket

WebSocket,即Web浏览器与Web服务器之间全双工通信标准。

WebSocket特点:

推送功能:支持由服务器向客户端推送数据的推送功能,服务器可直接发送数据,这样不必等待客户端的请求。

减少通信量:首部信息小,同时和HTTP相比,每次链接时的总开销减少。

 技术分享图片

 

9、Web的攻击技术

 

HTTP协议本身并不存在安全性问题,因此协议本身不会成为攻击对象。应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标。

 技术分享图片

  

9.1、在客户端即可篡改请求

在web应用中,从浏览器那接收到的HTTP请求的全部内容,都可以在客户端自由地变更、篡改。在HTTP请求报文内加载攻击代码,就能发起对web应用的攻击。

 技术分享图片

 

9.2、web应用的攻击模式

主要有2种模式:主动攻击和被动攻击。

以服务器为目标的主动攻击:主动攻击是指攻击者通过直接访问web应用把攻击代码传入的攻击模式。

主动攻击有SQL注入攻击和OS命令注入攻击。

 技术分享图片

 

以服务器为目标的被动攻击:被动攻击是指利用圈套策略执行攻击代码的攻击模式。

在被动攻击过程中,攻击者不直接对目标web应用访问发起攻击。

被动攻击模式中主要有跨站脚本攻击和跨站点请求伪造。

 技术分享图片

技术分享图片

 

9.2、因输入值转义不完全引发的安全漏洞

实施web应用的安全对策可大致分为以下两部分,客户端的验证和web应用端(服务器端)的验证【输入值验证、输出值转义】。

 技术分享图片

 

9.2.1跨站脚本攻击

跨站脚本攻击(Cross-Site Scripting,XSS),是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的html标签或javascript进行的一种攻击。

 技术分享图片

9.2.2 SQL注入攻击

 针对web应用使用的数据库,通过运行非法SQL而产生的攻击。

SQL注入攻击影响:非法查看或篡改数据库内的数据、规避认证、执行和数据库服务器业务关联的程序等。

SQL注入:攻击者将SQL语句改变成开发者意想不到的形式以达到破坏结构的攻击。

 

9.2.3 HTTP首部注入攻击

HTTP首部注入攻击是通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击,属于被动攻击。

HTTP首部注入攻击影响:设置任何Cookie信息、重定向至任意URL、显示任意的主体(HTTP响应截断攻击)

 

涉及到的安装工具:

wireshark:     https://www.wireshark.org/download/win64/

 

以上是关于HTTP图解的主要内容,如果未能解决你的问题,请参考以下文章

图解http完整版

图解HTTP

图解HTTP pdf

读《图解HTTP》

《图解HTTP》总结 - 思维导图版

2016-1-28 图解HTTP(03)