HTTP协议分析

目录

 

HTTP简介

HTTP三点注意事项:

HTTP消息结构

客户端请求信息

http响应消息

HTTP请求方法

HTTP请求头信息

HTTP响应头信息

常用HTTP状态码

实例演示

客户端请求:

服务器响应:

HTTP认证

Basic基本认证简介

基本认证步骤

缺点


HTTP简介

HTTP协议Hyper Text Transfer Protocol(超文本传输协议)的缩写。

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简而言之就是在HTTP的基础上加入SSL层

SSL(Secure Sockets Layer)安全套接层,主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全

HTTP和HTTPS是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果)

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用合适的MIME-type内容类型
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就比较快。

HTTP消息结构

HTTP是一个无状态的请求/响应协议。

一个HTTP“客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。

一个HTTP“服务器”同样也是一个应用程序(Web服务,如Apache Web服务器或IIS服务器等),通过接受客户端的请求并向客户端发送HTTP响应数据。

HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。

客户端请求信息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

http响应消息

HTTP响应四部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP请求方法

序号方法描述
1GET请求指定的页面信息,并返回实体主体
2HEAD类似于GET请求,只不过返回的响应没有具体的内容,用于获取报头
3POST向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能导致新的资源的建立和/或已有资源的修改。
4PUT从客户端向服务器传送的数据取代指定的文档的内容
5DELETE请求服务器删除指定的页面
6CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式方式的代理服务器
7OPTIONS允许客户端查看服务器的性能
8TRACE回显服务器收到的请求,主要用于测试或诊断
9PATCH是对PUT方法的补充,用来对已知资源进行局部更新

HTTP请求头信息

请求头说明
Host对应网址URL中的web名称和端口号
User-agent浏览器名称
Referer显示产生请求的网页来自哪个URL
CookieCookie是在浏览器中寄存的小型数据体,可以记载和服务器相关的用户信息
Connecton客户端与服务器的连接类型。如:close,keep-alive
Upgrade-Insecure-Requests升级不安全的请求
Accept浏览器或其他客户端可以接受的MIME文件类型,服务器可以根据它判断并返回适当的文件格式
Accept-Charset浏览器可以接受的字符编码
Accept-Encoding浏览器可以接受的编码方式
Accept-Language浏览器可以接受的语言种类

HTTP响应头信息

响应头说明
Allow服务器支持哪些请求方法(如post,get等)
Content-Encoding文档的编码(Encode)方法
Content-Length表示内容长度
Content-type表示后面的文档属于什么MIME类型
Date当前GMT时间
Expires应该在什么时候认为文档已经过期,从而不在缓存它
Last-Modified文档最后修改时间
Server服务器名称
Set-Cookie设置跟页面关联的Cookie

常用HTTP状态码

状态码中文描述
200正常访问
301、302、304重定向
400客户端请求的语法错误,服务器无法理解
401身份认证
403禁止访问
404页面不存在
500服务器内部错误
502响应超时
503由于超载或系统维护,服务器暂时的无法处理客户端的请求。

实例演示

客户端请求:

GET /dengji.html HTTP/1.1
Host: 10.50.3.200
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;
Referer: http://10.50.3.200/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close

服务器响应:

HTTP/1.1 200 OK
Date: Fri, 18 Sep 2020 10:13:10 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
Last-Modified: Fri, 19 Jun 2020 13:57:20 GMT
ETag: "5cc-5a87045899000"
Accept-Ranges: bytes
Content-Length: 1484
Connection: close
Content-Type: text/html

HTTP认证

Basic基本认证简介

Basic认证是一种较为简单的HTTP认证方式,客户端通过非加密明文(Base64编码格式)传输用户名和密码到服务器端进行认证,通常需要配合HTTPS来保证信息传输的安全。

基本认证步骤

1.客户端访问一个受http基本认证保护的资源

2.服务器返回401状态,要求客户端输入用户名和密码进行认证(如果验证失败,响应头会加上WWW-Authenticate:Basic realm="请求与")

3.客户端将输入的用户名和密码用":"合并用Base64进行编码后,采用非加密的明文方式传送给服务器。

4.服务器将Authenticate头中的用户名解码并去除,进行验证,如果认证成功,则返回相应的资源,否则仍然返回401状态,重新进行验证。

缺点

1.用户名和密码明文(Base64)传输,需要配合HTTPS来保证信息传输的安全

2.即使密码被强加密,第三方仍可通过加密后的用户名和密码进行重放攻击

3.没有提供任何针对代理和中间节点的防护措施

4.假冒服务器很容易骗过认证,诱导用户输入用户名和密码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值