透视HTTP协议
罗剑锋(Chrono)
奇虎360技术专家,Nginx/OpenResty开源项目贡献者
立即订阅
6077 人已学习
课程目录
已完结 44 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|To Be a HTTP Hero
免费
破冰篇 (7讲)
01 | 时势与英雄:HTTP的前世今生
02 | HTTP是什么?HTTP又不是什么?
03 | HTTP世界全览(上):与HTTP相关的各种概念
04 | HTTP世界全览(下):与HTTP相关的各种协议
05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?
06 | 域名里有哪些门道?
07 | 自己动手,搭建HTTP实验环境
基础篇 (7讲)
08 | 键入网址再按下回车,后面究竟发生了什么?
09 | HTTP报文是什么样子的?
10 | 应该如何理解请求方法?
11 | 你能写出正确的网址吗?
12 | 响应状态码该怎么用?
13 | HTTP有哪些特点?
14 | HTTP有哪些优点?又有哪些缺点?
进阶篇 (8讲)
15 | 海纳百川:HTTP的实体数据
16 | 把大象装进冰箱:HTTP传输大文件的方法
17 | 排队也要讲效率:HTTP的连接管理
18 | 四通八达:HTTP的重定向和跳转
19 | 让我知道你是谁:HTTP的Cookie机制
20 | 生鲜速递:HTTP的缓存控制
21 | 良心中间商:HTTP的代理服务
22 | 冷链周转:HTTP的缓存代理
安全篇 (7讲)
23 | HTTPS是什么?SSL/TLS又是什么?
24 | 固若金汤的根本(上):对称加密与非对称加密
25 | 固若金汤的根本(下):数字签名与证书
26 | 信任始于握手:TLS1.2连接过程解析
27 | 更好更快的握手:TLS1.3特性解析
28 | 连接太慢该怎么办:HTTPS的优化
29 | 我应该迁移到HTTPS吗?
飞翔篇 (4讲)
30 | 时代之风(上):HTTP/2特性概览
31 | 时代之风(下):HTTP/2内核剖析
32 | 未来之路:HTTP/3展望
33 | 我应该迁移到HTTP/2吗?
探索篇 (5讲)
34 | Nginx:高性能的Web服务器
35 | OpenResty:更灵活的Web服务器
36 | WAF:保护我们的网络服务
37 | CDN:加速我们的网络服务
38 | WebSocket:沙盒里的TCP
总结篇 (2讲)
39 | HTTP性能优化面面观(上)
40 | HTTP性能优化面面观(下)
答疑篇 (2讲)
41 | Linux/Mac实验环境搭建与URI查询参数
42 | DHE/ECDHE算法的原理
结束语 (1讲)
结束语 | 做兴趣使然的Hero
透视HTTP协议
登录|注册

03 | HTTP世界全览(上):与HTTP相关的各种概念

Chrono 2019-06-03
在上一讲的末尾,我画了一张图,里面是与 HTTP 关联的各种技术和知识点,也可以说是这个专栏的总索引,不知道你有没有认真看过呢?
那张图左边的部分是与 HTTP 有关系的各种协议,比较偏向于理论;而右边的部分是与 HTTP 有关系的各种应用技术,偏向于实际应用。
我希望借助这张图帮你澄清与 HTTP 相关的各种概念和角色,让你在实际工作中清楚它们在链路中的位置和作用,知道发起一个 HTTP 请求会有哪些角色参与,会如何影响请求的处理,做到“手中有粮,心中不慌”。
因为那张图比较大,所以我会把左右两部分拆开来分别讲,今天先讲右边的部分,也就是与 HTTP 相关的各种应用,着重介绍互联网、浏览器、Web 服务器等常见且重要的概念。
为了方便你查看,我又把这部分重新画了一下,比那张大图小了一些,更容易地阅读,你可以点击查看。
暖场词就到这里,让我们正式开始吧。

网络世界

你一定已经习惯了现在的网络生活,甚至可能会下意识地认为网络世界就应该是这个样子的:“一张平坦而且一望无际的巨大网络,每一台电脑就是网络上的一个节点,均匀地点缀在这张网上”。
这样的理解既对,又不对。从抽象的、虚拟的层面来看,网络世界确实是这样的,我们可以从一个节点毫无障碍地访问到另一个节点。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《透视HTTP协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(50)

  • 小美
    1. CDN 应当是不区分的,因为爬虫本身也是对 Web 资源的访问,且对于爬虫识别并不是 100% 准确的,因此 CDN 只会去计算实际使用了多少资源而不管其中多少来自爬虫;
    2. 个人理解,Web Service 是网络服务实体,而 Web Server 是网络服务器,后者的存在是为了承载前者。

    作者回复: √

    2019-06-05
    12
  • 飒~
    老师 ,暗网是如何规避搜索引擎的爬虫的,它又是怎么被人访问的呢

    作者回复: 这个问题比较高端,有其他知道的同学吗?

    2019-06-12
    10
  • Amark
    老师,能不能通俗地讲讲RPC, SOAP, restful,之间的区别

    作者回复: 这个话题比较大。rpc就是把网络通信封装成了函数调用的形式,所以叫rpc。soap是web service的消息格式。RESTful是一种web服务接口的设计理念。

    这三章都是与应用服务有关,但领域不同。

    2019-06-03
    8
  • 耿斌
    1. CDN可以根据User-Agent来判断发起请求的一端是浏览器还是爬虫,对待爬虫可以特殊处理返回特定内容
    2. WebService是基于Web(HTTP)的服务器架构技术,基于HTTP协议传输xml或soap数据。WebServer分硬件和软件,硬件指服务器、云之类,软件如Nginx、Apache等

    作者回复: √

    2019-06-06
    2
    4
  • patsun
    1.CDN在对待浏览器和爬虫时没有差异,因为如果没有验证码或者其他验证方式区分的话,浏览器和爬虫都被视为User Agent(客户代理)
    2.Webservice是服务,Web Server是服务器

    作者回复: ✅

    2019-06-03
    4
  • 不靠谱~
    1.不是太清楚,个人认为不会区别对待,因为在正常程序应用来说,看不出是谁发起的请求。
    2.web server是软件服务器,承载应用。
    web service是一种服务方式。

    作者回复: √

    2019-06-03
    3
  • Vickey Cheung
    老师,web服务器和web容器区别是什么呢?

    作者回复: web服务器主要提供静态资源,而web容器可以运行Java、php等程序提供动态服务。

    2019-09-09
    2
  • 壹笙☞漂泊
    1、应该不会有差异,因为爬虫主要就是无限模仿浏览器行为
    2、Web Server 是服务器,Web Service 是一种应用服务开发规范

    作者回复: √

    2019-06-03
    2
  • -W.LI-
    第一个有差别,因为有烦爬虫技术
    第二个:web server 。web服务提供者,web服务器。web应用程序。 web service。。。。不知道了

    作者回复: 这个具体还要看cdn的策略,如果配置了反爬虫就会区别对待。

    2019-06-03
    1
    2
  • 永钱
    老师把tomcat放在web服务器中比较,说速度慢,不公平呀

    作者回复: 抱歉啦,的确,tomcat应该是web容器。

    2019-06-03
    2
  • redrain
    有些网站全新上线的,没有外链,也没特意提交过,为什么也会有爬虫经过呢,入口在哪里

    作者回复: 这可能是从dns域名服务商那里获取了你的网站。

    2019-06-03
    2
  • Berry He
    第一个不太清楚,不敢妄加评论。
    第二个:web server和web service是两个概念,前者是web服务器,像iis apache nginx这种。web service他只是一个或多个提供web请求响应的api,用来获取或提交更新web server资源的

    作者回复: 最后一句话不太准确,web service是应用服务,它的客户端不一定是web service。

    2019-06-03
    2
  • 刘志兵
    老师,服务器只有这么少的几个吗,有一些grpc 服务算服务器吗,finagle, grpc等,还有spring不是也可以提供服务吗

    作者回复: 里面说的特指的是“Web服务器”,也就是说专门提供http服务的服务器软件。

    其他的像tomcat、netty等虽然也有http服务,但不是专门做这个的,http只是“副业”,功能远不如专业的Apache、Nginx强大。

    grpc属于服务开发框架,用的是基于http/2的grpc协议。

    2019-08-02
    1
  •        鸟人
    你觉得 CDN 在对待浏览器和爬虫时会有差异吗?为什么?
    不管是否反爬虫 应该都没区别 爬虫本质不就是模拟浏览器么

    作者回复: 最后一句话不太准确,爬虫应该是user agent的一种,不一定非要模拟浏览器。

    2019-06-04
    1
  • lfn
    不是很理解web server和web service的区别。难道我们的服务不用nginx就不能用了么?我自己写个tcp server, 根据用户请求调用特定的handler返回数据,那我自己就是个server啊,也是service.老师能不能更清晰地定义下server.习惯了tcp编程的概念,这里的server就显得怪怪的,给人一种router的感觉.

    作者回复: 这里首先要理解web,web就是指的http。web server就是提供http服务的server、web service就是运行在http协议上的服务接口规范。

    自己写的是tcp server,就不是web server。

    service通常是指服务程序,跑在server上,server可以理解成容器、平台。

    2019-06-04
    1
  • 磊爷
    1.正常情况下没有差异,客户端访问服务器,cdn加速缓存。
    2.websevice是一种服务,提供相应的内容。
    Web sever是服务器,可获得内容不受限。

    作者回复: 多补充一点,web server只能用http协议(因为是web),而websevice的接口就不固定了,有很多种。

    2019-06-03
    1
  • 古夜
    tomcat不也是阿帕奇的吗?啥时候变成JAVA的了

    作者回复: tomcat属于Apache基金会,用于Java开发,这里说的Apache是web服务器,可能我说的不清楚,让你误解了。

    2019-06-03
    1
  • nora
    1.CDN在对待浏览器和爬虫时没有差异,因为如果没有验证码或者其他验证方式区分的话,浏览器和爬虫都被视为User Agent
    2.Webservice是服务,Web Server是服务器,Web Server 用于承载 Web Service

    作者回复: good。

    2019-11-06
  • 蓝配鸡
    你觉得 CDN 在对待浏览器和爬虫时会有差异吗?为什么?
    会, 因为CDN作为缓存,其存下来的信息都是爬虫产生的话,无疑会对真是用户的相应时间产生影响。
    你怎么理解 WebService 与 Web Server 这两个非常相似的词?
    web service更像是一种用于Web开发的协议
    web Server则是HTTP协议响应端的一个统称。

    作者回复:
    1.cdn的处理方式各不一样,如果爬虫严重占用了cdn的资源,影响了cdn的用户,就会阻止爬虫。
    大多数爬虫不会做的特别过分,所以cdn也就会“放行”。

    2.基本正确,Web Service是一种开发协议, Web Server特指提供http服务的应用软件,如Apache、Nginx。

    2019-10-28
  • qiezitx
    1、CDN不做区分。但可不可以在CDN做区分呢?不清楚,做了有什么好处呢?应该没有😂
    2、WebService是一种架构设计,Web server是Web服务器,有了Web服务器之后,我们可以准守WebService设计来提供服务。

    作者回复:
    1.通常cdn是不区分爬虫的,但因为cdn本质上也是web服务,所以要加这个功能也没有问题的,例如应源站的要求反爬虫。

    2.对。

    2019-09-23
收起评论
50
返回
顶部