《HTTP权威指南》学习总结(下)

现在接着《HTTP权威指南》学习总结(上)继续介绍HTTP相关的知识

连接管理

TCP连接

之前一直在介绍HTTP的报文结构。但是在通信的过程中,只有建立了连接才能互相传送信息。因此,如何建立连接、维护连接、终止连接同样非常重要。如果连接出现了问题,那就有可能出现报文丢失从而破坏了信息的完整性。同样,如果连接出现了问题,那么报文的有序性也无法保证。HTTP通信其实是由 TCP/IP 来承载的。TCP/IP 是全球计算机及网络设备都在使用的一种常用的分组交换网络分层协议集。

因为这两篇文章主要是介绍HTTP协议,所以不会深究 TCP/IP 协议集。笔者以后会另开博客介绍TCP/IP,这里只提及其在用户使用HTTP协议时起到的作用。

注:文章中出现的部分示例图来自《HTTP权威指南》PDF版本的截图

TCP是可靠的数据传输管道

HTTP连接实际上就是TCP连接以及一些使用连接的规则。TCP为HTTP提供了一条可靠的比特传输管道。从TCP连接一端输入的字节信息能够从另一端以原有的顺序、正确地传送出来,也就是我们通常所说的可以报文的完整性和有序性。

那么TCP是如何帮助客户端和服务器端建立连接的呢?
换句话说,客户端如何根据一个URL就能和服务端建立连接并获取所需的资源?

Web浏览器通过TCP连接和服务器进行交互

其实TCP流是分段的,由IP分组进行传送。在TCP/IP模型中,HTTP位于应用层,TCP位于传输层,IP位于网络层。HTTPS其实就是在应用层和传输层之间加了一个安全层(通常是TLS和SSL)。

一条TCP连接由<源地址,源端口号,目标地址,目标端口号>4个值组成。两条不同的TCP连接不允许拥有4个相同的地址组件。

TCP的性能
HTTP事务的时延

我们在前面提到过,一个HTTP事务是由一条完整的请求报文和一条完整的响应报文组成。看起来十分简单,但是这个过程中存在很多可能会增加时延的地方。

  • 客户端根据URL地址确定服务器的IP地址和服务端口号可能会耗费比较多的时间(主要用于DNS域名解析等)
  • 获取到服务器IP地址等信息之后TCP向服务器发送建立连接的请求,并等待服务器回送同意建立连接的应答并建立连接。这里如果有较多的HTTP事务的话,耗费的时间将大大增加
  • 连接建立起来之后,客户端通过建立的TCP管道向服务器发送请求报文,并等到服务器回送响应报文,可能会耗费些许时间
TCP可能会导致哪些时延
  • TCP的三次握手
  • TCP慢启动拥塞机制
  • TCP延迟确认算法
  • 端口耗尽和TIME_WATE时延
如何减少时延
  • 并行连接:通过多条TCP连接发起并发的HTTP请求
  • 持久连接:重用TCP连接以消除连接和关闭时延
  • 管道化连接:多条HTTP请求共享TCP管道
  • 复用的连接:交替传送请求和响应报文(与持久连接有所区别)

代理

什么是代理

Web代理服务器是网络的中间实体。代理位于客户端和服务器之间,扮演的角色有点类似于"中间人",在各个端点之间传送HTTP报文。如果没有Web代理,那么HTTP客户端就要和HTTP服务器直接进行对话。有了Web代理,客户端和服务器之间的通信就要经过代理了。其实对于客户端和服务器来说,信息发送方是透明的。因为它们在接收报文的时候,分不清到底是直接从客户端发过来的还是经过了代理。

所以Web代理服务器既是客户端,也是服务器端。

公共代理和私有代理

其实大部分代理都是公共代理,比如说高速缓存代理服务器,会利用用户间共同的请求。这样的话,汇入同一个代理服务器的请求越多,就越有用。还有一部分是私有代理。搭建私有代理的费用比较昂贵,常见的有某些用户用于翻墙的梯子,有可能是自行搭建的代理服务。

代理的使用途径
  • 资源访问控制器:只允许授权用户请求某些资源
  • Web防火墙:限制非授权用户进入军事区
  • Web缓存代理:代理缓存维护了常用的文档的本地副本,当用户请求对应资源时直接从代理返回而不用请求远程服务器,避免了宽带资源的浪费
  • 反向代理(在后面介绍Nginx的时候会着重讲讲反向代理)
  • 正向代理:主要用于为局域网用户访问Internet提供便利

其实代理和网关的作用有些类似。只要记住一点:代理和通信双方使用的都是同一种协议,例如在帮助客户端同服务器进行通信时,它和客户端以及服务器之间都是使用HTTP协议。而网关不一样,网关可以进行协议的转换。比如说客户端打算通过FTP协议访问远端服务器,网关可能在和服务器进行通信时是用的是HTTP协议,完成了协议的转换。

缓存

缓存这部分的知识比较多,但是都比较简单、易于理解。
主要的作用代理缓存服务器就是将常用并且不经常的资源缓存下来,在用户向远端服务器请求该资源时将本地缓存的资源提供出去。在此同时,缓存服务器会不定时对本地资源向远程服务器进行新鲜度验证等操作。远程服务器还可以通过某些HTTP首部,例如no-store、no-cache、Expires(使用的实际过期日期,可能由于时间不一致导致某些错误)或者是max-age(服务器告诉缓存资源缓存最大秒数,为零就是不缓存)等告诉缓存某些资源的过期时间或者是给用户提供该资源之前应该进行什么操作---比如新鲜度验证、过期时间预警等。缓存有效地减少了冗余数据的传输、缓解了网络瓶颈的问题、降低了距离时延,同时也降低了对原始服务器的要求。对于缓存来说,命中率是一个比较重要的评价缓存性能的指标。

cookie机制与客户端识别

cookie主要用于客户端向服务器端提供身份说明。例如,客户端和服务器端说:“Hi ! My name is EakonZhao, please give me my shopping list。”那么服务器就会给用户EakonZhao提供其购物清单。cookie可分为会话cookie以及持久cookie。会话cookie在用户退出浏览器的时候就会被清除,而持久cookie则会存在硬盘之中。由于cookie属于比较私密的信息,我们一定要保管好cookie,若是被别人窃取了,可能会对我们的财产或者是信息安全造成威胁。

认证

认证的作用就是确认通信双方身份的真实性。比如说服务器会在客户端请求访问某些访问控制资源的时候要求其提供合法的口令。但是认证机制也存在一些缺陷,例如基本认证简单便捷,但并不安全。因为基本认证机制会通过网络发送用户名和密码,虽然用户名和密码经过了某种编码(例如Base-64编码),但实际上很容易就可以解码。

HTTPS 安全的HTTP

HTTPS和HTTP并不是两种完全分离的协议。HTTPS就是在HTTP外层加了一个保护壳(通常是TLS/SSL),使得外界看不到HTTP传输的信息。其中会涉及到许多加密技术。例如对称加密、非对称加密、公开密钥技术、数字签名或者是数字证书等等。其中各种加密技术主要用于防止信息传输过程中第三方窃取的行为,而数字签名和数字证书等技术用于对通信双方身份的认证,防止和伪造的客户端或者是服务器进行通信。SSL和TLS协议其实十分类似,TLS协议是前者改进之后的版本。TLS也会涉及握手的过程,其中的行为主要是用于约定加密方法、协商各种安全参数,并且对客户端和服务器端进行证书的交换以验明身份等等。总之,HTTPS可以安全地传输信息,不用担心被窃听。(HTTPS涉及了大量的加密算法、密码学以及网络安全相关的知识,这里只做非常简要的介绍)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容