第 22 章 空间数据:网络 空间中的数据:Network+
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
时间是大自然阻止一切同时发生的方式。 空间则是阻止一切事情发生在我身上的方式。
在第 21 章中,你了解了并发性:,如何在同一时间做多件事。现在,我们将尝试在多个地方做事情:分布式计算或网络。挑战时间和空间有很多很好的理由。在本章中,我们将从网络基元逐步深入到更高层次的概念:
- 性能
-
您的目标是让快速组件保持忙碌,而不是等待慢速组件。
- 稳健性
-
人数越多越安全,所以要重复执行任务,以应对硬件和软件故障。
- 简洁性
-
最佳实践是将复杂的任务分解成许多小任务,这样更容易创建、理解和修复。
- 可扩展性
-
增加服务器来处理负载;减少服务器来节省开支。
在本章中,我们将从网络基元逐步深入到更高层次的概念。 让我们从 TCP/IP 和套接字开始。
TCP/IP
互联网基于如何建立连接、交换数据、终止连接、处理超时等方面的规则。这些规则被称为协议,它们被分层排列。分层的目的是为了允许创新和替代的做事方式;只要你遵守上下两层的约定,你就可以在一层上做任何你想做的事。
最底层负责管理电信号等方面;每一层都建立在下一层的基础上。 中间或多或少是互联网协议(IP)层,它规定了网络位置寻址和数据包(块)流动的方式。 在上面一层,有两个协议描述了如何在不同位置之间移动字节:
- 用户 数据报协议 (UDP)
-
数据报是一次性发送的微小信息,就像明信片上的便条。
- 传输控制协议 (TCP)
-
该协议用于较长时间的连接,它发送字节流,并确保它们按顺序到达,不会重复。
假设你想通过 UDP 讲个笑话,TCP 会设置一个秘密握手过程:
Here's a UDP joke. Get it?
TCP 会在发送方和接收方之间建立秘密握手,以确保良好的连接。 一个 TCP 笑话的开头是这样的:
Do you want to hear a TCP joke? Yes, I want to hear a TCP joke. Okay, I'll tell you a TCP joke. Okay, I'll hear a TCP joke. Okay, I'll send you a TCP joke now. Okay, I'll receive the TCP joke now. ... (and so on)
你的本地计算机的 IP 地址始终是127.0.0.1 ,而名称则是localhost 。你可能会看到这个 ,它被称为环回接口。如果它连接到互联网,你的计算机也会有一个公共IP。如果你使用的只是一台家用电脑,它就在电缆调制解调器或路由器等设备后面。 即使在同一台计算机上的进程之间,你也可以运行互联网协议。
我们与之交互的大多数互联网--网络、数据库服务器等--都是基于在 IP 上运行的 TCP;为简洁起见,我们称之为 TCP/IP。 我们先来看看一些基本的互联网服务。 然后,我们来探讨一般的联网模式。
套接字
如果你想知道事情是如何运作的,本节就是为你准备的。
最底层的网络编程使用套接字,套接字是从 C 语言和 Unix 操作系统中借用的。套接字级别的编码比较乏味。 使用 ZeroMQ 等工具会更有趣,但看看套接字下面的东西还是很有用的。例如,当网络出错时,经常会出现有关套接字的信息。
让我们写一个 简单的客户端与服务器交换,一次使用 UDP,一次使用 TCP。在 UDP ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access