许式伟的架构课
许式伟
七牛云 CEO
84945 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

15 | 可编程的互联网世界

回复(Response)
请求(Request)
其他应用层协议
gRPC 框架
HTTP DNS
SMTP/POP3 协议
HTTP 协议
下一讲:安全管理
业务架构基于成熟的应用层协议的优势
应用程序的全貌
HTTP 层编程接口示例
HTTP 服务端
HTTP 客户端
TCP/IP 层编程接口示例
TCP 协议
UDP 协议
IP 协议
HTTP 协议设计
Nginx、Apache
应用层网关
NAT 技术
应用层协议
TCP/UDP 传输层
IP 网络层
数据链路层
物理层
子系统划分
概要设计
需求分析
架构思维
结语
HTTP 层编程接口
TCP/IP 层编程接口
应用层协议与网关
网络应用程序的全视图
需求分析
可编程的互联网世界

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

你好,我是七牛云许式伟。
前面我们讨论架构思维的时候说过,架构的第一步是做需求分析。需求分析之后呢?是概要设计。概要设计做什么?是做子系统的划分。它包括这样一些内容:
子系统职责范围的定义;
子系统的规格(接口),子系统与子系统之间的边界;
需求分解与组合的过程,系统如何满足需求、需求适用性(变化点)的应对策略。
对于我们理解这个精彩的互联网世界来说,理解它的子系统的划分思路是非常非常重要的。

网络应用程序的全视图

在上一讲 “14 | IP 网络:连接世界的桥梁” 中我们介绍了 IP 网络的工作原理。我们还画了一幅与数据传输这件事本身有关的网络协议图,如下:
那么,从一个典型的网络应用程序角度来说,它的完整视图又是什么样子的呢?
上图是我给出的答案。当然,它并不代表所有的网络应用程序,但这不影响我们借它的结构来解释网络世界是怎么划分子系统的,每个子系统都负责了些什么。
第一层是物理层。你可以理解为网络设备的原生能力,它定义了硬件层次来看的基础网络协议。
第二层是数据链路层。它负责解决的是局部网络世界的数据传输能力。网络数据传输技术会层出不穷,今天主流有固网、WiFi、3G/4G,明天有 5G/6G,未来也必然还会出现更快速的网络新技术。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了互联网世界的可编程性,重点关注网络应用程序的全视图分析。从物理层到应用平台层,文章详细介绍了网络世界的子系统划分和各层的功能。物理层定义了硬件层次的基础网络协议,数据链路层解决局部网络数据传输能力,IP网络层实现互联网世界的一体化,TCP/UDP传输层解决互联网通讯可信赖的问题,应用平台层则支持各种应用层协议。作者强调了IP网络作为互联网“操作系统”的核心地位,以及HTTP协议和SMTP/POP3协议在应用层的重要性。此外,文章还提到了存储和数据库对网络应用程序的重要性,以及架构师在选择网络协议时需要做出的决策。通过对互联网世界的分层结构和各层功能的介绍,文章展现了互联网世界的可编程性和复杂性,为读者提供了对互联网架构的深入理解。文章还介绍了基于TCP/IP和HTTP协议的编程接口,以及它们在网络应用程序开发中的应用。通过对比,展示了基于成熟的应用层协议的优势,为读者提供了全面的应用程序概览。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《许式伟的架构课》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(39)

  • 最新
  • 精选
  • 一笔一画
    老师,请教一下,我可否这样认为,越往上层的协议其效率越低,到HTTP这样高阶的协议,它的性能会不会是一个瓶颈?

    作者回复: 不能这么看,是做的事情越来越多。HTTP协议首先是TCP协议的,只不过干了更多的业务,如果不用HTTP,并不代表你可以节约这块的成本,只不过换成你自己写的而已

    2019-06-05
    19
  • Peiel
    Nginx 可以用作应用层网关,那么应用层网关怎么理解?可以理解成我们通常在 Nginx 中对 HTTP 请求根据不同的api做相关的反向代理、负载均衡等相关配置,也就是所谓的api网关?

    作者回复: 嗯

    2019-06-05
    2
    9
  • X
    你好老师,网关这个词一开始是在传输层接触到的,路由器起到的就是网关的作用,本质上是一个关口,数据包通过关口之后去寻找自己的目的地。现在谈的应用层的网关,是不是就是HTTP的请求的关口,根据不同的URL映射到不同的服务端接口,可以把负载均衡器理解为应用层的网关吗?

    作者回复: 是的

    2019-06-07
    2
    6
  • 1900
    对象存储作为目前新颖的一种存储类型,它相对于传统网络存储类型的优势在哪里呢?另外它也有什么不足或者局限么?

    作者回复: 后面服务端开发会讨论这个问题。最大的区别其实不是协议的选择,而是编程模型的改变。传统网络存储延续了本地文件系统的习惯,基本上都是filesystem的树状元数据组织方式,对象存储是key-value这种平面结构。

    2019-06-05
    6
  • s
    许老师,我是一个黑客情结很重的人,我对黑客的看法和大部分人都不同,多数人认为黑客就是做安全研究的,可我觉得不是这样的,我心中的黑客是创造计算机的一切。你想,假设计算机协议,编程语言,系统等等你都能驾轻就熟,安全那不就是手到擒来。看了你讲的计算机架构设计,我更是感觉这种思想正是我想要的。可周围人都说让我不要白日做梦,好好写好业务代码就行,别想其他的。我很迷茫,岁数也不小26了,可这是我的梦想,我该坚持吗?想听听您的意见

    作者回复: 是不是自己的兴趣要看自己的行动。行动不会说谎。

    2019-08-21
    2
    5
  • 斯图尔特
    许老师,有个问题。对外使用restful api,如果对内部使用也是这种协议,会造成内部大量的http调用,如果是内部系统,是不是使用grpc更合适?

    作者回复: grpc也是http啊

    2019-06-27
    2
    3
  • 马哲富
    许老师好! "由于TCP基于连接,所以每Accept一个连接后,我们可以有一个独立的执行体去处理它;但是UDP是无连接的,需要我们手工根据来源IP+Port来判断如何分派",是否可以理解为基于TCP的协议,服务端每接收一个数据包就处理一个,而基于UDP的协议,服务端接收到数据包之后是先分派后处理?而这个分派的条件是IP+Port,1.为啥要分派?2.为啥是根据IP+Port来分派?

    作者回复: 服务器是同时服务很多客户的,不同客户的请求无关,一个客户是通过请求包的来源ip+port来区分。

    2019-06-05
    2
    3
  • Hui
    老师你好,现代软件逐渐云端化,TCP能否满足云环境更高带宽,更低的延迟的需要,是否有更好的协议?

    作者回复: 这块会有人努力去改善,比如http3据说就已经不是http over tcp了

    2019-06-09
    2
  • 虎哥
    相对应地,在 HTTP 协议中以 “资源路径” 表达资源,以 PUT-POST-GET-DELETE 表达 CURD 操作(也有一些服务以 POST 而不是用 PUT 请求来创建资源)。这段写错了吧,post 是 C put 是U吧

    作者回复: 不同人用的惯例不一样,从实际我看到的api案例看,put用的比较少

    2019-06-05
    2
  • 1900
    “如果我们限定传输的数据包一定是某种应用层协议时,就会出现所谓的应用层网关”,这句话很费解,为什么“传输的数据包”会是“某种应用层协议”?数据包和协议是两个东西吧?

    作者回复: 协议只是数据格式而已

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