透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
63942 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
开篇词 (1讲)
透视 HTTP 协议
15
15
1.0x
00:00/00:00
登录|注册

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

代理协议
代理种类
SSL/TLS
URL
URI
域名解析
域名系统
ARP
ICMP
UDP
IP
TCP
代理
HTTPS
URI/URL
DNS
TCP/IP
HTTP相关协议

该思维导图由 AI 生成,仅供参考

在上一讲中,我介绍了与 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/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了与HTTP相关的各种协议,包括TCP/IP、DNS、URI和HTTPS等。TCP/IP作为网络通信的标准协议,提供了可靠的数据传输和寻址路由功能。DNS通过域名系统将有意义的名字映射到IP地址,方便人们记忆和访问。URI/URL作为统一资源标识符,能够唯一标记互联网上的资源,包括协议名、主机名和路径等部分。文章通过比喻形象地解释了这些协议的作用和关系,帮助读者理清它们与HTTP的关系。 此外,文章还介绍了HTTPS作为HTTP的安全版本,通过SSL/TLS协议为HTTP提供了加密通信的安全保障。另外,代理作为HTTP传输过程中的“中转站”,可以实现缓存加速、负载均衡等功能。通过对这些协议和概念的深入讲解,读者可以对HTTP有了一个比较全面的了解,为后续的学习扫清了障碍。 总之,本文通过生动的比喻和详细的解释,帮助读者快速了解了与HTTP相关的各种协议,为他们打开了网络通信世界的大门。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《透视 HTTP 协议》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(117)

  • 最新
  • 精选
  • 壹笙☞漂泊
    课后题: 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
    174
  • 1:DNS 与 URI 有什么关系? DNS专门用于域名解析,作用是简化人类记忆数据的复杂度。 URI专门用于标识互联网世界中的资源,作用是帮助找到对应的互联网中资源。 互联网中的电脑通过IP地址来表示,DNS可以把一个域名变成一个IP地址,IP地址是标识资源的一部分,仅定位了具体的电脑,还有继续定位在电脑上的具体位置。 2:在讲代理时我特意没有举例说明,你能够用引入一个“小强”的角色,通过打电话来比喻一下吗? 小强给小明打电话要小红的照片——小明是正向代理 小强要小红的照片小明负责处理——小明是反向代理 网络通信是分布式系统的底座,也是信息交互的法宝 TCP——负责数据传输 IP——负责标识传输对象 DNS——负责简化人类的记忆 URI/L——负责标识传输的资源 SSL——负责数据传输的安全 Proxy——负责信息的中转 像极了走标, 需要搞清楚从哪到哪——IP 需要搞定怎么传输——TCP 需要保障货物的安全——SSL 需要送货的具体位置——URI 需要把目的地的经纬度换成地址名——DNS 需要中间中转一下——Proxy HTTP——我不那么多,我向你要什么你就给什么

    作者回复: amazing!!

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

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

    2019-06-06
    8
    40
  • Shine Sunner
    1.假如去某个小区找人,DNS可以帮我定位到是哪栋大楼,URI可以帮我定位到是哪个房间。 2. 正向代理: 假如我【客户端】想找小强【服务端】借钱,但是我不好意思。我去找小李【代理】,然后让小李找小强借。对于小强来说他以为是小李找他借钱,而不是我。 反向代理: 同样是借钱,这回我【客户端】找小李【代理】借钱,小李没钱了,他去找小强【服务端】借钱,然后再把钱借给我,对我来说我认为是小李借钱给我,而不是小强。 总结: 正向代理的代理服务器是部署在客户端,而对服务端来说,它以为对它发起请求的是代理服务器,而真正请求的客户端对服务端来说是不可见的。 反向代理的代理服务器是部署在服务端,而对客户端来说,它以为对它做出响应的是代理服务器,而真正响应的服务端对客户端来说是不可见的。

    作者回复: 说的非常好,给你点32个赞(笑)。

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

    作者回复: √

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

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

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

    作者回复: url是uri的子集,url只表示网址,而uri除了表示网址,还能够标记其他的任意东西。 但在互联网上,这两者是基本等价的,也不需要去钻字眼刻意区分。

    2019-10-28
    3
    8
  • Http协议不是依赖tcp/ip的拆包和封包吗?Unix domain socket可以做到吗?

    作者回复: 当然可以,如果在Linux上跑Nginx,就可以指定用Unix domain socket。 关键要理解协议栈,http不强制要求下层必须是tcp。

    2019-06-05
    2
    6
  • 我爱夜来香
    老师,我有个问题,就是URL由三部分组成,前面的协议名和主机名能理解,后面的路径指的是应用在服务器上的真实路径吗?或者说是由真实路径经过一层封装而形成的?

    作者回复: 注意,uri表示的是网络上的资源,这实际上是一种抽象,意思是在主机上的某个位置有一个资源。 但这个资源路径不一定会与主机磁盘上的路径完全匹配,可以相同也可以不相同,通常来说会有一个简单的转换,比如映射到不同的目录。 而且,图片、html等静态资源是可以对应到文件系统的,而动态资源,它根本就没有实体,所以uri就完全是一个标识符的作用,不存在路径。

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

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

    2019-06-05
    4
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部