透视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协议
登录|注册

04 | HTTP世界全览(下):与HTTP相关的各种协议

Chrono 2019-06-05
在上一讲中,我介绍了与 HTTP 相关的浏览器、服务器、CDN、网络爬虫等应用技术。
今天要讲的则是比较偏向于理论的各种 HTTP 相关协议,重点是 TCP/IP、DNS、URI、HTTPS 等,希望能够帮你理清楚它们与 HTTP 的关系。
同样的,我还是画了一张详细的思维导图,你可以点击后仔细查看。

TCP/IP

TCP/IP 协议是目前网络世界“事实上”的标准通信协议,即使你没有用过也一定听说过,因为它太著名了。
TCP/IP 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是 TCPIP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。
这个协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:TCP 属于“传输层”,IP 属于“网际层”。协议的层级关系模型非常重要,我会在下一讲中再专门讲解,这里先暂时放一放。
IP 协议是“Internet Protocol”的缩写,主要目的是解决寻址和路由问题,以及如何在两点间传送数据包。IP 协议使用“IP 地址”的概念来定位互联网上的每一台计算机。可以对比一下现实中的电话系统,你拿着的手机相当于互联网上的计算机,而要打电话就必须接入电话网,由通信公司给你分配一个号码,这个号码就相当于 IP 地址。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《透视HTTP协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(60)

  • 壹笙☞漂泊
    课后题:
    1、URI DNS
    DNS 是将域名解析出真实IP地址的系统
    URI 是统一资源标识符,标定了客户端需要访问的资源所处的位置,如果URI中的主机名使用域名,则需要使用DNS来讲域名解析为IP。
    2、打电话给小明,请小明找小王拿一下客户资料。小明处于代理角色。
    内容笔记
    1、四层模型:应用层、传输层、网际层、链接层
    2、IP协议主要解决寻址和路由问题
    3、ipv4,地址是四个用“.”分隔的数字,总数有2^32个,大约42亿个可以分配的地址
    4、ipv6,地址是八个用“:”分隔的数字,总数有2^128个。
    5、TCP协议位于IP协议之上,基于IP协议提供可靠的(数据不丢失)、字节流(数据完整)形式的通信,是HTTP协议得以实现的基础
    6、域名系统:为了更好的标记不同国家或组织的主机,域名被设计成了一个有层次的结构
    7、域名用“.”分隔成多个单词,级别从左到右逐级升高。
    8、域名解析:将域名做一个转换,映射到它的真实IP
    9、URI:统一资源标识符;URL:统一资源定位符
    10、URI主要有三个基本部分构成:协议名、主机名、路径
    11、HTTPS:运行在SSL/TLS协议上的HTTP
    12 、SSL/TLS:建立在TCP/IP之上的负责加密通信的安全协议,是可靠的传输协议,可以被用作HTTP的下层
    13、代理(Proxy):是HTTP协议中请求方和应答方中间的一个环节。既可以转发客户端的请求,也可以转发服务器的应答。
    14、代理常见种类:匿名台历、透明代理、正向代理、反向代理
    15、代理可以做的事:负载均衡、内容缓存、安全防护、数据处理。

    作者回复: 总结的非常详细,也很准确,鼓掌!

    2019-06-05
    43
  • 一粟
    小强家钥匙丢了,需要找一家开锁公司开门。于是小强打电话给114,114给小强提供一家有资质的开锁公司,并将电话转接过去。这里的114就是代理。

    作者回复: √

    2019-06-05
    7
  • Atomic
    打个比方:我让老婆帮我去楼下超市买瓶水,DNS可以帮她找到楼下超市,URI可以帮她找到水放在超市的具体位置

    作者回复: 比喻的好生动,笑。

    2019-06-06
    6
  • 小美
    1. URL 包含了协议+主机名+路径,DNS 会将其中的主机名解析为 IP,进而方便根据 IP 协议进行寻址、路由;
    2. 我们为了更安全的和小明交流,选择通过和小强交流,让其再告诉小明,这是匿名代理,也是正向代理,而如果让小明知道我们的存在则不是匿名代理,是透明代理;小明由于某些原因不能直接响应我们,找了小强来代为响应我们,这是反向代理;
    3. 另外回答一下楼下同学关于 URI 和 URL 区别的疑惑,URI 是 Identifier,即标识符,URL 是 Location,即定位,所以定位只是标识符的一种,打个比方,我们找到小明可以通过其家庭地址(Location)也可以通过名字(比如上课点名)来找到他,所以后者也可以成为 URN。因此 URL 和 URN 都是 URI 的子集。

    作者回复: 说的很好,不过现在urn用的很少,现在的uri基本上就是url,除非写论文,否则不用特意区分。

    2019-06-06
    1
    4
  • 一步
    Http协议不是依赖tcp/ip的拆包和封包吗?Unix domain socket可以做到吗?

    作者回复: 当然可以,如果在Linux上跑Nginx,就可以指定用Unix domain socket。

    关键要理解协议栈,http不强制要求下层必须是tcp。

    2019-06-05
    4
  • -W.LI-
    URI为了方便拥有记忆可以采用域名代替IP。
    当用户使用域名访问时,就需要DNS技术找到对应的IP地址。然后找到对应的服务器或者代理。DNS域名解析发生在客户端。服务端接受到的还是用户输入的域名,或者IP。服务器(代理)可开启限制,只采用域名访问。
    小刚替小明找小张,小刚就是正向代理。
    小刚说我就是小张(私下问小张)。反向代理

    作者回复: 说的很好。

    2019-06-05
    3
  •        鸟人
    a要向b发送消息,实际是先发到代理,由代理发给b。反向由b返回给代理,代理返回给a。
    那么我向cdn发送评论 此时为正向,然后刷新页面 看到自己写的评论 此时为反向
    可以这样理解么?

    作者回复: 好像不太正确,每一次的http消息都是一个往返,请求先到服务器,然后服务器发回响应。

    正向代理是指“正”着代理客户端,反向代理是指“逆”着请求的方向代理服务器。

    2019-06-11
    2
  • 一步
    看到老师后面小帖士说的,在unix系统上http可以依赖一种进程间传输的机制Unix domain socket进行传输,这是因为满足了底层的可靠的传输。这句话意思是说,http不一定在tcp/ip之上进行传输?只要底层满足可靠传输的都可以?

    作者回复: 当然了,这就是http灵活性的体现。

    2019-06-05
    2
  • 郭纯
    DNS域名解析 是为了将域名解析成IP地址.IP地址为了标记服务器在万维网的位置.
    URI 是为了标记网络资源在服务器的位置.

    代理:比如小明喜欢校花但是不好意思去表达. 小明就打电话给好朋友小刚委托他给校花打电话传输自己的心意. 小刚就充当了代理的角色.

    作者回复: 看来大家都很理解代理的作用了。

    2019-06-05
    2
  • zjajxzg
    1、dns是用来解析uri中的域名部分,将人能够记住的域名解析为计算机能够认识的ip地址,才能让

    作者回复: 说的挺好,写完就更好了。

    2019-06-05
    2
  • 不知道该叫什么
    但是我还是没明白URI跟RUL的区别

    作者回复: url是uri的子集,url只表示网址,而uri除了表示网址,还能够标记其他的任意东西。

    但在互联网上,这两者是基本等价的,也不需要去钻字眼刻意区分。

    2019-10-28
    1
  • Tio Kang
    老师,我有一个疑问,一个代理即可以是反向代理也可以正向代理吗?

    作者回复: 理论上应该是可以的,但实际上应该没有这么用。

    因为正向代理连接的是上网的客户端,反向代理连接的是网站的服务器,代理的对象是不同的,合不到一起。

    2019-09-02
    1
  • Halohoop
    所以,“著名的”酸酸乳,可以认为是正向代理不?

    作者回复: 是的。

    2019-06-20
    1
  • 愚人
    域名可以对应多个IP,IP也可以通过端口映射对应多个域名。能讲一讲这方面实例么?

    作者回复: 这个好像不需要什么实例,这种做法很普遍,比如以前的z.cn和www.amzon.cn都指向一个站点。

    另外,ip对应多个域名,不用端口映射。

    2019-06-12
    1
  • 小葱🤓
    别的不想说,请问能调高课程的费用吗???
    2019-06-12
    1
    1
  • 梓航(﹏)
    老师,数据是通过什么方式从七层传到一层的呢,是有相关的系统接口来发这些数据吗?网卡又是怎么知道数据是要往外发的呢?

    作者回复: 调用Socket API(send),然后层层打包,由操作系统发。到ip层就有ip地址知道发去哪里了。

    2019-06-12
    1
  • 彧豪
    网络不是7层模型吗?应用层 表示层 会话层 传输层 网络层 数据链路层 物理层,以及http/https是工作在哪个层呢?后面的话会有一些对对http dns等内容和网络模型之间更紧密关系的讲解的课程吗?

    作者回复: 可以看一下第5讲,里面有答案。

    2019-06-12
    1
  • 发条橙子 。
    老师,我这里有个疑问 。 一个请求由DNS解析到指定的IP ,然后通过URI确定要访问哪些资源。最后通过 TCP/IP 进行路由寻址以及数据的传输。
    但是一台机子上有多个应用 , 可能两个相同的应用运行在同一个主机上 ,有着两个不同的进程。 那么根据URI是指定从哪个进程里获取数据呢 。
    这时候是不是根据端口号来判定 , 但是URI上并没有显式的让我们看出是哪个端口号 ??

    作者回复: uri会有默认端口号,比如http默认是80,用tcp连接必须要同时指定ip地址和端口。

    服务器进程在指定端口上监听,然后tcp就可以建立连接。

    2019-06-09
    1
  • 小伙儿爱裸睡
    老师,TCP协议作用中的数据不丢失和数据完整有什么区别呢?可能我刚入门,有点抠字眼,还望老师不吝赐教哈。

    作者回复: 简单来说,丢失就不完整了。可以对比一下udp,udp不保证数据完整,会丢包,使用udp的应用需要自己处理丢包,保证数据完整,而使用tcp的应用就不需要考虑这些。

    2019-06-07
    1
  • herseus
    负载均衡应该算作反向代理,因为是为服务器端服务的。另外,字节流应该是数据传输格式,不是

    作者回复: 字节流是一种抽象,是对比udp的包来说的,只有完整可靠的传输才能看成是字节流。

    2019-06-07
    1
收起评论
60
返回
顶部