图解HTTP

xiaoxiao2021-02-28  102

了解Web及网络基础

使用HTTP协议访问Web 浏览器(客户端)在地址栏里输入要访问的页面(URL),客户端从服务器获取文件资源,这一过程是在HTTP协议上进行通信的。网络基础TCP/IP 通常使用的网络都是在TCP/IP协议族的基础上运作的,HTTP属于其中的一个子集。TCP/IP协议族的明显特性是分层 分为4层:应用层,传输层,网络层,数据链路层。分层的好处 当部分设计需要修改时,只需更改所在的分层即可,无需修改整个协议,也就是说降低了耦合度。还有就是分层后,各个分层的分工明显,便于去实现,只需把该层次的接口功能实现即可,无需顾及整体。各分层作用 应用层:决定了向用户提供应用服务时的通信活动。FTP,HTTP,DNS传输层:提供数据传输。TCP,UDP网络层:处理网络中流动的数据包。数据包是网络传输中最小的数据单位。该层规定了怎样的传输路线。链路层:处理网络连接的硬件部分。

发送端在层与层之间传输数据时,每经过一层时必定会被打上上一层所属的首部信息。反之,接收端则每经过一层都去掉对应的首部信息。与HTTP关系密切的协议:IP,TCP和DNS**IP协议的作用是把各种数据包传送给对方,需要IP地址和MAC地址。TCP协议提供可靠的字节流服务。字节流服务指为了方便传输,将大块数据分割成报文段。可靠是指,能够把数据准确可靠地传给对方,这是三次握手的功劳。三次握手**:首先发送端发送一个带SYN标志的数据包给对方,接收端回传一个带SYN/ACK标志的数据包表示收到信息,最后发送端再回传带ACK标志的数据包,握手结束。

DNS:提供域名到IP地址之间的解析服务。 * 各协议与HTTP协议的关系 * 1.通过DNS解析域名的IP地址 * 2.通过HTTP协议向服务器发送请求 * 3.TCP协议保证数据的传输 * 4.IP协议选择传输路径 * 5.TCP协议重组报文段 * 6.HTTP协议处理请求这只是客户端向服务器发送一个HTTP请求的单方面过程,还未涉及服务器响应请求。 * URI,URL和URN URI=URL+URN URL为一个人的居住地址,URN则是一个人的姓名。 URI的格式:登录信息(可选)+ 服务器地址 + 端口号(可选)+ 文件路径 + 查询字符串(可选)+ 片段标识符。例:

http://user:pass@www.google.com:80/dir/index.html?uid=1#c1

简单的HTTP协议

应用HTTP协议时,必定是一端担任客户端角色,另一端担任服务器角色。请求报文 请求方法 + 请求URI+协议版本 + 可选的请求首部字段 + 内容实体。

响应报文协议版本 + 状态码 + 解释状态码的原因短语 + 可选的响应首部字段 + 主体。

HTTP是一种无状态协议,所以后来才有Cookie技术。

持久连接节省通信量 持久连接:只有任意一端没有明确提出断开连接则一直保持TCP连接状态。 持久连接使得多数请求以管线化(pipelining)方式发送成为可能,即:不用等待上次请求的响应后才能发送下一个请求。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态

HTTP报文内的HTTP信息

HTTP报文:用于HTTP协议交互的信息 请求行:方法 URI HTTP版本状态行:状态码 原因短语 HTTP版本首部字段:请求或响应的条件和属性的各类首部一般有:通用首部,请求首部,响应首部,实体首部其他:可能包含未定义的首部(Cookie等)编码提升传输速率 gzip(GNU.zip)compress(UNIX)deflate(zlib)identity分割发送的分块传输编码:传输大块数据时,分割数据以达到逐步显示页面的效果。MIME机制允许邮件处理文本,图片,视频等多个不同类型的数据。首部字段Range来指定资源的byte范围,从而实现下载中断恢复功能。Accept首部字段达到服务器返回内容的最优。

返回结果的HTTP状态码

与HTTP协作的Web服务器

单台虚拟主机实现多个域名 HTTP/1.1允许一台服务器搭建多个Web站点。 在相同的IP地址下,虚拟主机可以寄存多个主机名和域名的Web网站,因此HTTP请求时,Host首部必须完整指定主机名或域名的URI通信数据转发程序:代理,网关,隧道 代理是一种由转发功能的应用程序,是位于服务器和客户端间的中间人,负责转发请求或转发响应。客户端=>>服务器;服务器=>>客户端;代理服务器:接收客户端的请求再转发给其他服务器,接收源服务器的响应再转发给客户端。每次通过代理服务器时,会追加写入Via首部信息。缓存代理:会预先将资源的缓存保存在代理服务器上。透明代理:转发请求或响应时,不对报文做任何加工的代理类型。网关和代理十分相似,不同的是能提供非HTTP协议服务。隧道的目的是确保客户端与服务器进行安全的通信。保存资源的缓存 缓存是指代理服务器或客户端本地磁盘内保持的资源副本,减少对源服务器的访问,节省了通信流量和时间。

HTTP首部

HTTP请求报文

HTTP响应报文

HTTP首部字段 首部字段是为了给浏览器和服务器提供报文主体大小,所使用的语言,认证信息等内容HTTP首部字段 =>> 首部字段名:字段值 =>> Content-Type:text/html另外单个字段可以有多个值,如:Keep-Alive: timeout=15, max=100

四种HTTP首部字段类型

确保Web安全的HTTPS

HTTP的缺点

通信使用明文,内容可能会被窃听不验证通信方的身份,会遭遇伪装无法验证报文完整性,可能被篡改

加密处理防止被窃听

通信的加密:用SSL或TLS建立安全通信线路后,就可以在该线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS或HTTP over SSL

内容的加密:实现的前提是客户端和服务器同时具有加密和解密机制,仍有被篡改的风险不验证通信方身份的隐患 遇到一个假的客户端遇到一个假的服务器遇到一个假的大会员HTTP + 加密 + 认证 + 完整性保护 = HTTPS

共享密钥加密的困境 加密和解密同用一个密钥的方式称为共享密钥加密,对称密钥加密。密钥被攻击者获取了,那就GG了。

使用两把密钥的公开密钥加密 公开密钥加密使用的是一对非对称的密钥,一个公开,一个私有。

HTTPS采用混合加密机制 公开密钥加密与共享密钥加密相比,处理速度慢,所以组合使用。

SLL速度慢吗 通信慢 处理速度慢 使用专用的服务器,达到加快处理速度,对于速度慢,没有根本性的解决方案。

确认访问用户身份的认证

BASIC认证 没有加密处理,明文解码后就是用户id和密码,被盗可能性极高。另外,进行一次认证后,一般浏览器无法实现认证注销操作。DIGEST认证 质询/响应的方式,一方发送认证请求,收到质询码,根据质询码生成响应码,把响应码发给对方进行认证。密码泄露的可能性就降低了。SSL客户端认证客户 端证书 + 表单认证组合成双因素认证。FormBase认证(多半认证基于此) 客户端发送id和password进行匹配,认证成功后的用户信息会写入Cookie里。

基于HTTP的功能追加协议

消除HTTP瓶颈的SPDY 一条连接只能发送一个请求请求只能从客户端开始,客户端不接收除响应外的指令请求/响应首部未经压缩就发送发送冗长的首部,每次互发相同重复的首部非强制压缩发送,可选任意压缩格式Ajax的解决方法 Ajax的核心技术是XMLHttpRequest的API,通过JS的调用就能和服务器进行HTTP通信。从而实现更新局部页面。但人未解决HTTP协议本身存在的问题。Comet的解决方法 这是通过延迟应答,模拟实现服务器向客户端推送的功能。Comet会将响应挂起,当服务器的内容更新时,再返回该响应。但仍有不足。

多路复用流赋予请求优先级压缩HTTP首部推送功能服务器提示功能使用浏览器进行全双工通信的WebSocketWeb服务器管理文件的WebDAV
转载请注明原文地址: https://www.6miu.com/read-26159.html

最新回复(0)