freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

基础之http和https协议概述
2020-07-09 01:53:38

第一部分:http协议

1.1. http协议的作用

比较官方的解释是:

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准.http属于应用层协议

简单来说,就是定义了客户端怎么通过互联网从服务端获取数据的方式.

说的通俗一点,这个过程就好像你(client客户端)超市(server服务端)买东西(你请求的数据) ,你买完了,总要把东西装回来吧,那么http协议就是定义了你从超市到底用什么样的袋子把东西装回来的协议.

1.2.URI和URL介绍

URI (Universal Resource Identifier) 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。而URI包含URL和URN两种定位方式.
URL (Universal Resource Locator)  统一资源定位符(应用广泛),一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。
URN (Universal Resource Name)统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源(用的比较少)。

1.3.HTTP请求和响应基本格式

1.4.http请求内容

(1)请求行内容解析

请求行只有第一行,按照空格分为3段.

第一段:用来说明请求的方式,(这个就好像你买东西时候的方式,用手推车还是手拉筐).

常见的请求方式有GET/POST/HEAD/TRACE/PUT/OPTIONS,当然这里用的最多的还是GET和POST.

GET方法的作用在于从服务器获取资源。
POST方法用于向服务器提交数据
除了GET和POST方法以外,HTTP协议还支持许多其他因特殊目的而建立的方法。需要了解的其他方法如下
HEAD。这个方法的功能与GET方法相似,不同之处在于服务器不会在其响应中返回消息主体。
TRACE。回显服务器收到的请求,主要用于测试或诊断。
OPTIONS。这种方法要求服务器报告对某一特殊资源有效的HTTP方法(支持的http方法)。
PUT。这个方法试图使用包含在请求主体中的内容,向服务器上传指定的资源

第二段:用来说明请求的资源位于服务器的地址

第三段:用来说明http协议的版本

(2)请求头内容解析

参考这个请求,我们来解析一下出现的字段

  • Host消息头用于指定出现在被访问的完整URL中的主机名称
  • User-Agent这个消息头指浏览器或生成请求的客户端软件有关的信息
  • Accept 这个消息头用于告诉服务器客户端愿意接受哪些内容,如图像类型、文档格式等
  • Accept-Language 用于声明服务器浏览器可以支持什么语言
  • Accept-Encoding 这个消息头用于告诉服务器,客户端愿意接受哪些内容编码
  • Referer 这个消息头用于指示提出当前请求的原始URL(从哪个URL跳转过来)
  • Cookie 提交此前服务器向客户端发送的其他参数(服务器使用Set-Cookie消息头来设置Cookie,一般用于身份验证)
  • Connection 通知通信的另一方,是否在完成HTTP传输后关闭TCP连接.close关闭;keepalive不关闭.
    If-Modified-Since这个消息头用于说明浏览器最后一次收到所请求的资源的时间

(3)空行:是必须存在的,用来分开http头和http主体

(4)请求信息主体:根据需要会被填充

 

1.5.HTTP响应

(1)响应行

      每个HTTP响应的第一行由3个以上、空格间隔的项目组成。包括:

  • 使用的HTTP版本
  • 表示请求结果的数字状态码(状态码解析请向下看)
  • 一段文本形式的“原因短语”

(2)响应头

  • Server 这个消息头提供所使用的Web服务器软件的相关信息。
  • Date 响应返回的时间,GMT代表格林威治时间(北京市位于东8区,计北京时间要加8小时)
  • Set-Cookie 这个消息头用于向浏览器发布cookie,浏览器会在随后的请求中将其返回给服务器。
  • Expires这个消息头用于向浏览器说明消息主体内容的有效时间。
  • Connection 这个消息头用于告诉通信的另一端,在完成HTTP传输后是关闭TCP连接,还是保持连接开放以接收其他消息。
  • Content-Type 这个消息头用于规定消息主体的内容类型。(解析:Internet Media Type,互联网媒体类型;也叫MIME类型,在Http协议消息头中,使用Content-Type来表示请求报文中的数据格式类型).  
           例如,HTML文档的内容类型为text/html
  • Content-Length 这个消息头用于规定消息主体的字节长度

(3)空行:必须存在,用来区分响应头和响应主体

(4)响应主体:服务器端回复给客户端的数据

 

1.6.HTTP消息状态码

状态码 说明 原因短语
1XX Information信息状态码 客户端提供信息,接收的请求正在处理
2XX Success成功 请求正常并成功提交
3XX Redirection重定向 客户端被重定向到其他资源,需要继续操作
4XX ClientError客户端错误 请求包含某种错误
5XX ServerError服务端错误 服务器处理请求时,遇到错误
  • 常见状态码解析:

  • 100:Continue,客户端应重新发送初始请求,并在请求中附上第一次请求时未提供的(可能很大或者包含敏感信息的)表示。客户端这次发送的请求不会被拒绝
  • 200:OK,表示服务器成功执行了客户端所请求的动作
  • 201:Created,被创建。当服务器依照客户端的请求创建了一个新资源时,发送此响应代码
  • 204:Accept,已接受请求,但是还没处理完成.若服务器拒绝对PUT、POST或者DELETE请求返回任何状态信息或表示,那么通常采用此响应代码。服务器也可以对GET请求返回此响应代码,这表明“客户端请求的资源存在,但其表示是空的”
  • 301:Moved Permanently,永久跳转(重定向)——服务器知道客户端试图访问的是哪个资源,但它不喜欢客户端用当前URI来请求该资源。它希望客户端记住另一个URI,并在今后的请求中使用那个新的URI
  • 302:Found,临时跳转,重定向地址或文档已经被找到
  • 304:Not Modified,缓存响应。请求的资源没有被修改,服务器不返回任何新的信息。
  • 400:Bad Request,错误的请求,客户端请求语法错误,服务端无法解析(比如没有空行)。
  • 401:Unauthorized,用户身份未验证。
  • 403:Forbidden,没有权限访问服务器的某些资源(服务器已经理解请求,但是拒绝执行)。
  • 404:Not Found,请求资源没找到。
  • 405:Method Not Allowed,请求方法不允许
  • 413:Request Entity Too Large,请求实体太大
  • 414:Request URI Too Long,请求URL太长
  • 500:Interval Server Error,内部服务器错误
  • 502:Bad Gateway,服务器响应超时
  • 503:Server Unavailable,服务不可用,无法响应客户端请求。临时服务器维护或负载,暂时无法处理请求(可能会恢复)

第二部分:https协议

2.1 HTTPS协议介绍

1.  由于http协议在传输过程中存在一个致命缺点----使用明文传输,所以一旦被捕获数据包,比如用户名和密码等敏感信息都可以直接读取到.

也就是你买了个金戒指,但是用透明的塑料袋装的,走在街上是不是担心随时被偷? 使用http协议就相当于让你的原始数据在"裸奔"!!!

所以https协议应运而生.

2.  HTTPS是在HTTP的基础上和ssl/tls证书结合起来的一种协议,保证了传输过程中的安全性,数据即便被捕获,也不能被破解.所以在很多电商/银行/企业等网站,https加密传输就显得尤为重要.

3.  HTTPS其实是HTTP+SSL/TLS协议共同实现.  HTTPS是在传输层和应用层中间又加入了SSL(安全套接字层),使用这个协议来完成对数据的加密. 而TLS可以看做SSL的升级版.

      这里我们不详细研究协议,主要讲协商的大致流程.

   

2.2 HTTPS协议协商过程

# 黑客 # web安全 # http和https协议解析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者