Advertisement

计算机速成课Crash Course - 29. 互联网

阅读量:

今天继续计算机速成课Crash Course的系列讲解。

大量优质的技术文章由官方账号"极客之昂"全天候锁定 -每日定时发布 -期待您的关注、转发与点赞!

29. 互联网

在上一集里,它连接到了一个被称为互联网的庞大分布式网络系统。如今,在网上观看视频已经成为我们日常的一部分。

图片

互联网由成千上万的互联设备构成,并且如今数量持续增长。为了下载这个视频,请先连接到局域网。

所有连接到你家 WIFI 路由器的设备组成了一个局域网络;而通过广域网(WAN)将这些局 域网络连接起来,并且通常这些路由器都属于你的互联网服务提供商(ISP),例如像美国电 讯 Bell Labs (AT&T),Comcast 和 Verizon 这样的公司。

图片

在广域网中,在线连接至区域性的路由器;接着连接至更大的WAN;通常会经过几次 hop ,最终抵达互联网主干。

该网络 backbone由大量规模庞大的路由器集合而成,
当希望从YouTube获取某个视频时,
必须将data packet传输至网络 backbone,
随后经由 backbone前往拥有该视频文件的 YouTube server。
data packet将会从你的设备发送至 YouTube server,
这一过程可能会经历大约10次这样的传输过程。
其中,
data packet将首先经过4次跳跃到达网络 backbone,
再穿过一次网络骨干连接,
随后 network backbone可能再次发送data packet至 YouTube server。

对于常见操作系统之一来说,在运行于 Windows、Mac OS 或 Linux 系统时,则可以通过 traceroute 查看网络跳数。

位于"印第安纳波利斯"的Chad&Stacy Emigholz工作室启程前往加州DFTBA服务器,并完成了11次中转运输

起始IP地址为192.168.0.1,在局域网内我的电脑拥有该IP地址。随后通过工作空间的无线网络路由器连接至工作空间中的无线接入点。接着依次穿过多个地区级路由器进行中继传输直至抵达核心传输介质。之后再次离开主传输介质时经过多次中继跳转最终抵达.DOMAINNAME.COM域名服务提供商DFTBA.com服务器上。

图片

该IP地址为 104.24.109.186。然而数据包是如何成功传输的机制是什么呢?在传输过程中如果发生数据包丢失的情况时会有什么样的后果呢?当用户在浏览器中输入"DFTBA.com"时系统如何确定该字符对应的服务器地址是多少呢?

我们今天会讨论这些话题。

在上期节目里提到过

举个例子来说吧,在查看这个视频的时候

网络数据单元(packet)希望在全球互联网上传输时需遵循"互联网通信规则"这一标准缩称为IP类似于通过邮局寄送纸质信函其基本流程如下:每封电报或电子信号都需具备一个确定的收件地址且该地址必须独一无二此外还需满足一定的尺寸与重量限制违反这些规定将导致通讯无法完成。

IP 数据包也是如此,因为 IP 是一个非常底层的协议。

前部仅包含目标地址,在此处存储着 '关于数据的数据' ,这些被称为 metadata(元数据),它们告知接收端如何处理 incoming data. 当 data 包抵达另一台计算机时... 是应该分配给 Skype 还是... 使命召唤?

图片

因而有必要在此基础上建立更为复杂的通信机制。其中最基础的就是'用户数据报协议'(UDP),全称为统一数据链路层协议。

UDP同样具有头部分布,在头部分布中包含了传输介质的一些关键信息。其中一项重要信息就是传输介质的端口号。当一个程序试图连接到网络时,它必须请求获取一个可用的传输介质地址(IP地址)。例如 Skype 软件通常使用端口 3478 进行视频通话。

当一个数据包到达时

图片

总结:IP负责传输数据包至目标计算机,UDP负责确保数据包送达目标应用程序。

UDP 头部包含有“校验和”字段,用于验证数据完整性。如“校验和”这一术语所隐含的意义,则该字段旨在通过计算所有数据字节之和来实现信息的完整性验证。

以下是个简单例子。

在UDP数据包中,在传输该UDP数据包之前,在传输设备会计算这些原始数据字段的总和值作为校验码。这些字段包括数值分别为89、111、33、32、58、41。

得到 364,这就是"校验和"。UDP 中"校验和"以 16 位形式存储 (就是16个0或1)。

如果算出来的和,超过了 16 位能表示的最大值,高位数会被扔掉,保留低位。

当接收端计算机接收到这个数据包时,在处理过程中会执行这一系列步骤,并将所有数据进行累加计算:例如89加上111再加上33……依此类推。

图片

如果计算结果与数据包头部的校验和一致,则表示没有任何异常;如果计算结果与该字段的值不匹配,则表明数据存在异常情况。具体而言,在计算过程中可能出现以下几种情况:一是通信过程中电源供应出现波动导致的数据传输中断;二是可能存在通信线路或设备硬件上的故障导致的数据传输中断。

然而,在UDP中,并未配备相关修复或再传功能。接收端若发现损坏后信息丢失,则会丢弃该报文段。此外,UDP 无从得知所传输的数据包是否成功送达。发送之后无从得知其是否抵达目的节点。

这些特性让人觉得相当糟糕;然而,并非所有程序都对此问题感到困扰;相反地,由于 UDP 既简便又快速。

举个例子来说吧

图片

但对于其他某些数据而言,这种方法不具备普遍性.例如发送电子邮件时,必须确保其完整无损地送达接收者手中,发送的电子邮件必须包含完整的正文部分.

当所有数据必须到达时,则使用传输控制协议(TCP),缩写为 TCP。与 UDP 一样,在将数据存入系统前其头部同样位于存入数据之前的位置。

因而称作TCP/IP系统类似于UDP系统,在其头部还包含端口号和校验码等信息;然而TCP相比UDP拥有更为复杂的额外功能,在本次讨论中我们仅涉及几个关键点。

图片

TCP 每个数据包都有一个独特的序列编号,在接收到第十五号后就是第十六号,在收到第十六号后就是第十七号,并以此类推;发送数百上千个数据包也是有可能的。通过序列编号的数据包到达顺序混乱时(即虽然实际到达时间可能不同),即使这些数据单元在传输过程中被打乱了位置,“TCP 协议依然能够恢复正确的传输次序”。

图片

TCP的需求是要求接收端设备接收到来的数据段,并在经由检验数据完整性(确保无误传输)之后向发送端发出一个acks标记。acks标记通常简称为ack。当接收到前一数据段已经成功送达的目的地之后,请注意ack标记已经生成并在下一处理周期内被使用。随后会发送下一个待处理的数据段。

图片

假设在本次发送后未接收到确认码,则可能存在存在问题。若一段时间后仍未收到确认码,则发送方将重新发送一次。需要注意的是数据包可能已到达,并可能是由于延迟较长时间或传输过程中的丢失所导致的缺额。

这不会影响工作效率。由于接收方可以追踪消息顺序,在接收到重复的数据包时会自动过滤掉它们。此外,在传统的TCP协议中并不是每次只能发送单个数据包——它可以同时发送多个数据块,并接收相应的多条确认反馈。从而显著提升了传输效率的同时减少了等待确认的时间。

图片

值得注意的是,在计算确认码的有效率及往返时间时可反映网络拥塞程度;TCP利用这些信息来控制发送数据量。

TCP 根据这一信息动态调节发送数据包的数量,并缓解网络拥塞。简而言之来说 TCP 确保了在接收端能够正确接收所有合法的数据报,并对丢失的数据进行了重传操作从而保证了通信质量与此同时它还能通过观察当前的网络状况来自动调整其传输速率从而提升了整体的工作效率

你可能会奇怪,既然 TCP 那么厉害,还有人用 UDP 吗?

TCP的主要缺陷在于这些用于确认的数据包将传输的数据量翻一番,并未提供额外的信息内容,这意味着这种方式往往带来了不必要的开销,尤其对于那些对实时性要求极高的应用程序而言,例如在线射击游戏应用中

如果你玩游戏很卡,你也会觉得这样不值!

当计算机访问一个网站时,需要两个东西:1.IP地址 2.端口号

如 172.217.7.238 端口 80,则属于 Google 的网络地址与端口号。实际上,在线访问该地址即可进入 Google 首页。

图片

这两个工具可使访问正确网站成为可能。然而, 记住大量数字令人感到厌烦.相反, google.com比那些冗长的字符更容易记住.

所以互联网有个特殊服务,专门负责将域名与对应的 IP 地址一一对应,类似于互联网领域的电话簿,它被称为"域名系统",简称 DNS.

在浏览器中请求访问youtube.com时(你可能已经想到了),浏览器会向DNS服务器发送一个HTTP GET请求以获取该域名对应的IP地址信息。

常见DNS服务器是由互联网供应商提供的。当域名存在时,DNS会根据查询结果返回对应的IP地址。

图片

如果你不小心输入了无效的域名如.com然后按回车键你可能会收到一个DNS错误提示这是因为那个网站实际上并不存在所以DNS服务器无法提供相应的IP地址

当输入的地址为有效的时(例如 YouTube.com),DNS 服务器会按照一定的规则返回一个对应的 IP 地址。接着会向该 IP 地址发送相应的 TCP 请求。

目前拥有300万个注册域名的今天,在网络管理中为了提高效率,并非简单地将DNS存储为一个冗长的列表而是将其组织为层次结构

顶级域名(全称 TLD)位于顶层位置,在这一层级设置有如 .com 和 .gov 等典型实例;其下面一层则为二级域名,在 .com 之下设有 google.comdftba.com 等具体应用;再往下一层则称为子域名,在 google 的基础上发展出 images.google.comstore.dftba.com 等分支结构。

图片

这个树超!级!大!

前文所述的"三千万个子域名"仅指二级域名,并非所有子域名数量。由此可见,在众多DNS服务器中分布着这些数据资源,并且每个DNS服务器负责管理树的不同层级

好了 我知道你肯定在等这个梗:我们到了一层新抽象!

最近两期节目里,我们探讨了线路上的电信号传输情况以及无线网络中所使用的无线信号传播机制;这些技术术语属于"物理层"范畴;而"数据链路层"主要管理着"物理层"的各种操作;具体来说包括:MAC地址(媒体访问控制地址)、碰撞检测机制、指数退避策略以及其他基础通信协议; MAC地址用于标识网络设备;碰撞检测用于防止冲突;指数退避用于减少重传次数;并同时执行其他基础通信协议。

再上一层是"网络层"(Network Layer),主要承担数据包的交换与路由选择功能;最近一次讲解中涉及到了传输层中的大部分内容(Transmission Layer),包括UDP(User Datagram Protocol)和TCP(Transfer Control Protocol)这两种协议;它们的主要职责是实现不同主机之间的直接通信,并且在数据传输过程中还能够检测并纠正可能出现的错误。

另外提到了一点"会话层"。
例如,在构建网络的时候使用 TCP 和 UDP 用于建立连接,并进行信息传输。
随后关闭该连接即可完成整个流程称为"会话"。
比如在查询 DNS 或者访问网页时就会触发这一系列操作。

这是 OSI 下面五层 的一部分。该理论框架将网络通信划分为多个层次,并且每一层次负责解决特定类型的问题。

图片

即使不将上层与下层直接结合实现网络通信也是难以完成的任务抽象这一概念使得科学家与工程师能够分工合作并同时优化各层次的技术细节从而避免被整体系统的复杂度所困扰

而且惊人的是!我们还没讲完呢!

除了下面两层之外(即"表示层面"与"应用层面"),OSI 模型还包括:浏览器程序、 Skype 软件、用于解码 HTML 标签的工具以及提供在线观看视频服务的应用。

图片

我们下节课讲。


以上内容就是 29. 互联网 的内容,感兴趣的同学记得点赞、关注、转发、收藏哦!

我会不定期发布课程的讲解!

大量优质内容即将发布于全网首个专注技术的公众号「极客之昂」中,并于上午11点准时锁定了!欢迎各位关注、转发与点赞!

全部评论 (0)

还没有任何评论哟~