图解http

了解Web及网络基础

  • 使用HTTP协议访问Web
    浏览器(客户端)在地址栏里输入要访问的页面(URL),客户端从服务器获取文件资源,这一过程是在HTTP协议上进行通信的。
  • 网络基础TCP/IP
    通常使用的网络都是在TCP/IP协议族的基础上运作的,HTTP属于其中的一个子集。
  • TCP/IP协议族的明显特性是分层
    分为4层:应用层,传输层,网络层,数据链路层。
  • 分层的好处
    当部分设计需要修改时,只需更改所在的分层即可,无需修改整个协议,也就是说降低了耦合度。还有就是分层后,各个分层的分工明显,便于去实现,只需把该层次的接口功能实现即可,无需顾及整体。
  • 各分层作用
    • 应用层:决定了向用户提供应用服务时的通信活动。FTP,HTTP,DNS
    • 传输层:提供数据传输。TCP,UDP
    • 网络层:处理网络中流动的数据包。数据包是网络传输中最小的数据单位。该层规定了怎样的传输路线。
    • 链路层:处理网络连接的硬件部分。
TCP:IP协议族分层图.png
  • 发送端在层与层之间传输数据时,每经过一层时必定会被打上上一层所属的首部信息。反之,接收端则每经过一层都去掉对应的首部信息。
  • 与HTTP关系密切的协议:IP,TCP和DNSIP协议的作用是把各种数据包传送给对方,需要IP地址和MAC地址。TCP协议提供可靠的字节流服务。字节流服务指为了方便传输,将大块数据分割成报文段。可靠是指,能够把数据准确可靠地传给对方,这是三次握手的功劳。三次握手:首先发送端发送一个带SYN标志的数据包给对方,接收端回传一个带SYN/ACK标志的数据包表示收到信息,最后发送端再回传带ACK标志的数据包,握手结束。
三次握手.png

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请求报文格式.png

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

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

HTTP报文内的HTTP信息

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

返回结果的HTTP状态码

HTTP状态码.png

与HTTP协作的Web服务器

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

HTTP首部

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

  • 四种HTTP首部字段类型

表6-1:通用首部字段.png
表6-2:请求首部字段.png
表6-3:响应首部字段.png
表6-4:实体首部字段 .png

确保Web安全的HTTPS

  • HTTP的缺点

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

    • 通信的加密:用SSL或TLS建立安全通信线路后,就可以在该线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS或HTTP over SSL
通信的加密.png
  • 内容的加密:实现的前提是客户端和服务器同时具有加密和解密机制,仍有被篡改的风险
  • 不验证通信方身份的隐患
    • 遇到一个假的客户端
    • 遇到一个假的服务器
    • 遇到一个假的大会员
  • HTTP + 加密 + 认证 + 完整性保护 = HTTPS
HTTPS.png
  • 共享密钥加密的困境
    加密和解密同用一个密钥的方式称为共享密钥加密,对称密钥加密。密钥被攻击者获取了,那就GG了。
共享密钥加密.png
  • 使用两把密钥的公开密钥加密
    公开密钥加密使用的是一对非对称的密钥,一个公开,一个私有。
公开密钥加密.png
  • HTTPS采用混合加密机制
    公开密钥加密与共享密钥加密相比,处理速度慢,所以组合使用。
HTTPS混合加密机制.png
  • SLL速度慢吗
    通信慢
    处理速度慢
    使用专用的服务器,达到加快处理速度,对于速度慢,没有根本性的解决方案。

确认访问用户身份的认证

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

基于HTTP的功能追加协议

  • 消除HTTP瓶颈的SPDY
    • 一条连接只能发送一个请求
    • 请求只能从客户端开始,客户端不接收除响应外的指令
    • 请求/响应首部未经压缩就发送
    • 发送冗长的首部,每次互发相同重复的首部
    • 非强制压缩发送,可选任意压缩格式
  • Ajax的解决方法
    Ajax的核心技术是XMLHttpRequest的API,通过JS的调用就能和服务器进行HTTP通信。从而实现更新局部页面。但人未解决HTTP协议本身存在的问题。
  • Comet的解决方法
    这是通过延迟应答,模拟实现服务器向客户端推送的功能。Comet会将响应挂起,当服务器的内容更新时,再返回该响应。但仍有不足。
SPDY的设计与功能.png
  • 多路复用流
  • 赋予请求优先级
  • 压缩HTTP首部
  • 推送功能
  • 服务器提示功能
  • 使用浏览器进行全双工通信的WebSocket
  • Web服务器管理文件的WebDAV
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容