HTTP(S)协议概述
2021-01-15 04:14
标签:scroll flex auth oct 包括 密文 数据 info 建立 HTTP(HyperText Transfer Protocol)超文本传输协议 定义: ? -规定了浏览器和服务器之间相互通信的规则 ? -万维网交换信息的基础 ? -允许将HTML文档从Web服务器传送到Web浏览器 特点: ? -HTTP协议建立在TCP协议的基础之上 ? -HTTP协议是无状态的 统一资源定位符(Uniform Resource Locator,URL),统一资源名称(Uniform Resource Name,URN)是URI的子集。 Web上地址的基本形式是URI,它有两种形式: 一种是URL,这是目前URI的最普遍形式。 另一种就是URN,这是URL的一种更新形式,URN不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。 常见: GET:获取资源 ? -获取请求页面的指定消息 ? -请求参数在请求头 ? -请求长度有限制 POST:传输实体主体 ? -获取请求页面的指定消息 ? -请求参数在请求正文 HEAD:(只)返回报文首部 OPTIONS:询问支持的方法 PUT:传输文件 *但是实际上大多使用POST方式上传 DELETE:删除文件 TRACE:类比ping形式的请求 支持版本: 常见状态码: 2XX-成功 表示正常请求处理完毕? ? 200:OK,客户端请求成功 ? 204:No Content,请求处理成功,但是没有资源返回(页面不更新) ? 206:Partial Content,客户端进行了范围请求(资源一部分请求) 3XX-重定向 需要进行附加操作以完成请求?? ? 301:Move Permanently,永久性重定向,表示资源已经被分配信达URL,以后应使用资源现在所指的URL *注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。 ? 302:Move Temporarily,临时重定向,表示资源已经被分配了新的URI,希望用户(本次)使用新的URI ? 304,Not Modified,服务器资源未改变,可直接使用未过期的缓存(无关) 4XX-客户端错误 服务器无法处理请求? ? 400:Bad Request,请求语法中存在报文错误,需要修改再次发送 ? 401:Unauthorized,该状态码表示需要通过HTTP认证 ? 403:Forbidden,请求访问的资源服务拒绝 ? 404:Not Found,服务器上没有找到资源 5XX-服务器错误 服务器处理请求错误?? ? 500:Internal Sever Error,服务器内部错误(PHP.INI关闭了display_errors,一般在服务器端源代码出现错误时出现) ? 502:Bad Gateway,作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效响应 ? 503:Service Unavailable,服务器当前不能处理客户端的请求(超载或停机维护) ? 600:源站没有返回响应头,只能返回实体内容 状态码总结: 通用字段 ? Cache-Con:控制缓存 ? connection:连接的管理 ? Date:创建报文的日期时间 请求字段 ? Host:请求资源的主机和端口号 ? User-Agent:客户端操作系统,浏览器等其他信息 ? Referer:访问当前页面的上一个页面 ? Cookie:请求者的身份凭证 ? Accept:客户端希望接收的MIME类型消息 ? Accept-Charset:指定客户端接收的字符集 响应字段 ? Server:服务器所使用的Web服务名字 ? Set-Cookie:向客户端设置Cookie ? Last-Modified:通知浏览器资源修改的最后时间 ? Content-Length:正文长度 ? Location:引导用户转向与请求URI不同的资源(重定向新资源位置) 实体字段 ? Allow:通知客户端能够支持的HTTP方法 ? Content-Encoding:告知客户端服务器对实体主体部分采用的字符编码 ? Content-Language:告知客户端实体部分采用的语言 ? Content-Location:给出与报文主体部分相对应实际的URI ? Content-Type:说明实体部分对象的媒体类型 DNS查询 -DNS解析(域名解析服务器) ? a)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存) ? b)如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存 ? c)如果还没有找到,那么尝试从 hosts文件里面去找 ? d)在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找 建立TCP连接 -TCP连接建立(三次握手) 拿到域名对应的IP地址之后,User-Agent(一般指浏览器)会以一个随机端口(1024
? 这个连接请求(原始的http请求经过TCP/IP4层模型的层层封包)到达服务器端后(这中间有各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终达到WEB程序,最终建立了TCP/IP的连接 HTTP请求 -发起HTTP请求(建立连接后) ? HTTP请求报文由三部分组成:请求行,请求头、空格、请求正文 ? 请求行:用于描述客户端的请求方式(GET/POST等),请求的资源名称(URL)以及使用的HTTP协议的版本号 ? 请求头:用于描述客户端请求哪台主机及其端口,以及客户端的一些环境信息等 ? 空行:空行就是\r\n (POST请求时候有) ? 请求正文:当使用POST等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中(GET方式是保存在URL地址后面,不会放到这里) 关闭TCP连接 -TCP链接关闭(四次挥手) ? Web服务器向浏览器发送了请求数据,它就要关闭TCP连接 ? 在头部添加代码 ? HTTPS(Hyper Text Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但是利用SSL/TLS来加密数据包。目的是提供对网站服务器的身份认证(防冒充),保护交换数据的隐私(防窃听)与完整性(防篡改)。实现方式有通过建立基于HTTP的加密连接TLS或SSL两种。 ? HTTP协议和安全协议同属于应用层。具体一点来说,安全协议工作在HTTP之下,传输层之上:安全协议像运行HTTP的进程提供一个类似TCP的套接字,供进程向其中注入报文,随后安全协议将报文加密并注入运输层套接字;或是从运输层获取加密报文,解密后交给对应进程。严格来说,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。 ? HTTPS报文中的任何东西都被加密,包括所有的报头和荷载。除了可能的选择密文攻击之外,一个攻击者所能知道的只有在两者有一连接这一事实。 TLS/SSL ? 安全传输层协议 TLS(Transport Layer Security)及其前身 安全套接字协议 SSL(Secure Sockets Layer)是为互联网提供安全及数据完整性保障的加密方式。 TLS协议关键点 (具体详细过程、字段含义可根据实际Https数据流跟踪分析) 1.客户端握手请求 ·Client Hello ? -Random 发送随机数1(与服务器端共同生成) ? -Session ID 会话ID,身份标记 ? -Cipher Suite 支持密码的套件 ? -Compression Method 压缩方法 2.服务端端握手回应 ·Server Hello ? -Random 发送随机数2(共同生成) ? -Session ID 会话ID(初次访问或已过期回发为0) ? -Cipher Suite 从客户端支持的密码套件中指定一种 ? -Compression Method 指定压缩方法(若为空值null或0则为不压缩) ·Certificate ? -Certificates 发送证书链,供客户端依据证书路径进行验证 ·Server Key Exchange,Server Hello Done ? -Server Key Exchange 包含密钥交换算法所需要的额外参数 ? -Server Hello Done 表征握手结束 3.客户端密钥交换,准备完成 ·Client Key Exchange,Change Cipher Spec,Encrypted Handshake Message ? -Client Key Exchange 交换共享公钥 ? -Change Cipher Spec 进入准备加密状态 ? -Encrypted Handshake Message 告知完成客户端所有握手准备内容 4.服务端准备完成 ·(Server)New Session Ticket,Change Cipher Spec,Encrypted Handshake Message ? -New Session Ticket 更新客户端存储的session状态 ? -Change Cipher Spec 进入准备加密状态 ? -Encrypted Handshake Message 告知完成服务端所有握手准备内容 5.数据交换 ·Application Data 图书类: -《图解http》 -《Web之困:现代Web应用安全指南》 文章类: -http://tools.ietf.org/html/rfc5246 -https://www.cnblogs.com/liuxiannan/p/https.html -https://github.com/yorkeyanyy/Halforest-Field -https://www.freebuf.com/articles/network/202504.html HTTP(S)协议概述 标签:scroll flex auth oct 包括 密文 数据 info 建立 原文地址:https://www.cnblogs.com/zOxygeNz/p/13401497.htmlHTTP(S)协议概述
HTTP协议
URL与URI
URL
URI
具体名称
Uniform Resource Lacator,
统一资源定位符Uniform Resource Identifier,
统一资源标识符
含义
在WWW上,每一信息资源都有统一的且唯一的地址,
该地址就是URL广义上的资源标识,既包括网络也可涵盖本地等
凡是标识资源的均可称为URI
组成
三部分:
【协议/服务方式】
【该资源的主机IP地址(时含端口号)】
【主机资源的具体地址】
e.g. [协议]??/[主机地址]:(端口)/[路径]两段:
【特定协议】
及【协议内容的语法和语义】
e.g. [协议名]??/[用户名]:[密码]@[服务器地址]:[服务器端口号]/[路径]?[查询字符串]#[片段ID]HTTP方法
方法
说明
支持的HTTP协议版本
GET
获取资源
1.0、1.1
POST
传输实体主体
1.0、1.1
PUT
传输文件
1.0、1.1
HEAD
获得报文首部
1.0、1.1
DELETE
删除文件
1.0、1.1
OPTIONS
询问支持的方法
1.1
TRACE
追踪路径
1.1
HTTP状态码
状态码
类别
原因
1XX
信息性
请求正在处理
2XX
成功
请求正常处理完毕
3XX
重定向
需要进行附加操作以完成请求
4XX
客户端错误
服务器无法处理请求
5XX
服务器错误
服务器处理请求错误
HTTP 首部
HTTP请求过程
connection:keep-alive
则会仍然保持打开状态HTTPS
认识HTTPS
HTTPS流程
推荐图文
下一篇:在多个网页之间进行切换