标签 OSI 下的文章

理解 OSI 框架的基本概念,掌握计算机系统通信机制。

开放系统互联 Open Systems Interconnection (OSI)模型是一个定义计算机、服务器和用户如何在一个系统内通信的标准。它是第一个网络通信标准模型,在上世纪 80 年代早期,所有主流的计算机和通信公司都采用了这个标准。

OSI 模型提供了一种用于描述网络的通用语言,并以离散的块或层的方式来描述。

OSI 模型的各个层

该模型描述了计算机系统通过网络进行通信的七个层。

  • 7 应用层
  • 6 表示层
  • 5 会话层
  • 4 传输层
  • 3 网络层
  • 2 数据链路层
  • 1 物理层

每个层都有自己的工作方式和一系列跟其他层不同的协议。本文将逐个剖析这些层级。

应用层

应用层是在软件中实现的。它是与应用程序交互的层级。

用发送消息作为例子。发送消息的程序与应用层进行交互,并发送消息。接着,应用层向 OSI 模型的下一个层级(即表示层)发送消息。

表示层

来自应用层的数据被转发到表示层。表示层接收到文字、字符、字母、数字等形式的数据,并把它们转换为机器可识读的二进制格式数据。这个过程叫做编译。

在此阶段,ASCII(美国信息交换标准码)字符被转换为扩充的二进制编码的十进制交换码(EBCDIC)。转换后的数据在继续传输前,也会进行编码和加密过程,使用 SSL 协议进行加密和解密。

表示层的作用是抽象化,它假设下面的层级会处理它们收到的数据。它也负责压缩数据。数据的压缩可能是有损的,也有可能是无损的,这取决于很多因素,这不属于本文的讨论范围。

会话层

会话层的作用是建立和管理连接。该层级的主要工作是建立会话。例如,你登录网上商城,就在你的机器和服务器之间建立了会话。

会话层的作用是实现数据的发送和接收,完成后连接的会话就终止了。在一个会话建立前,会进行身份验证。与上一层类似,会话层也假设在它的工作完成后,下面的层级也会准确无误地处理数据。

传输层

传输层的作用是管理数据传输和其自身的关于数据如何传输的一些协议。从会话层传到这里的数据被分为更小的数据单元,这些数据单元称为片段。这个过程叫做“分段”。每个片段包含来源端口号、目标端口号和一个序列号。端口号用来识别发送数据的应用程序。注意,数据以块的形式传输。序列号用于把这些片段按正确的顺序排列。

传输层负责控制流量或在给定的时间内传输的数据量。它也负责错误控制,比如数据丢失、损坏等情况。它利用一种错误检测值,通常叫做校验和。传输层对每个数据片段加上校验和,就可以检查所发送的数据是否被正确接收。然后数据传输到网络层。

网络层

网络层的作用是跟其他网络进行通信。它把从一台机器接收到的数据片段传输给另一台位于不同网络的机器。路由器是作用于网络层的。

网络层的功能是逻辑寻址(就是确定 IP 地址)。它为发送方和接收方分配 IP 地址,数据包附带了这个地址,就可以被传输到正确的目标机器。接着网络层对数据包进行路由。负载均衡也是在网络层进行的,旨在确保不会发生过载。下一步,数据传输到数据链路层。

数据链路层

数据链路层支持跟其他设备直接通信。

它接收到来自网络层、包含发送方和接收方 IP 地址的数据包,进行物理寻址,然后将发送方和接收方的 MAC 地址分配给数据包,形成帧。

物理层

物理层由系统的所有硬件和物理设备(包括网线、导航系统、适配器等)组成。在这里,从前面层级接收到的数据都是 0 和 1 形式的。物理层把这些数据转换并通过各种方式(如果是光纤电缆,有电线、电信号、光信号;如果是 WIFI,则为无线电信号)传输至本地媒介。

注意,物理层作用于接收方的一端,把接收到的信号以帧的形式传输到数据链路层(把它转换回二进制数据形式)。然后帧传输到上面的层级,最终应用层(应用软件)会接收到需要的数据。

结语

当你需要描述网络架构或排除网络问题时,OSI 模型的相关知识会对你有所帮助。我希望本文能令你对这个模型的方方面面有清晰的理解。


via: https://opensource.com/article/22/10/osi-model-network-communications

作者:Anamika 选题:lkxed 译者:cool-summer-021 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

(LCTT 校注:作者原文已经大篇幅进行了修订更新,本文据之前的版本翻译。)

今天我在推特上发布了一些关于 OSI 模型如何与 TCP/IP 工作原理的实际表现不相符的观点,这让我思考——OSI 模型到底是什么?通过阅读推特上的一些回复发现,似乎至少存在三种不同的思考方式:

  1. TCP/IP 工作原理的字面描述
  2. 一个可以用来描述和比较很多不同的网络协议的抽象模型
  3. 对 1980 年代的一些计算机网络协议的字面描述,这些协议如今大多已不再使用

在这篇文章中,我不打算试图争辩以上哪一个才是“真正”的 OSI 模型——似乎不同的人以所有这些方式思考它。这不重要。

OSI 模型有七层

在我们讨论 OSI 模型的含义之前,让我们大致地讨论一下它是什么。它是一个抽象模型,用于描述网络如何在七个编号的层上工作:

  • 第一层:物理层
  • 第二层:数据链路层
  • 第三层:网络层
  • 第四层:传输层
  • 第五层:会话层
  • 第六层:表示层
  • 第七层:应用层

我不会再费时地去解释每一层的含义,网上有上千种解释可供查询。

OSI 模型:TCP/IP 工作原理的字面描述

首先,我想谈谈人们在实践中使用 OSI 模型的一种常见方式:作为对 TCP/IP 工作原理的字面描述。OSI 模型的某些层非常容易映射到 TCP/IP:

  • 第二层对应以太网
  • 第三层对应 IP
  • 第四层对应 TCP 或 UDP(或 ICMP 等)
  • 第七层对应 TCP 或 UDP 包内的任何内容(例如 DNS 查询)

这种映射对第二、三、四层很有意义——TCP 数据包有三个 标头 header 对应于这三个层(以太网标头、IP 标头和 TCP 标头)。

用数字来描述 TCP 数据包中的不同标头非常有用——如果你说“第二层”,很显然它位于第三层“下方”,因为二比三小。

“OSI 模型作为字面描述”的古怪之处在于,第五层和第六层并不真正对应于 TCP/IP 中的任何内容——我听说过很多关于第五层或第六层可能是什么的不同解释(你可以说第五层是 TLS 或其他东西!)但它们没有像第二、三、四层那样“每一层在 TCP 数据包中都有相应的标头”这样的明确对应关系。

此外,TCP/IP 的某些部分即使在第二层到第四层也不能很好地适应 OSI 模型——例如,哪一层是 ARP 数据包?ARP 数据包发送一些带有以太网标头的数据,这是否意味着它们是第三层?或是第二层?列出不同 OSI 层的维基百科文章将其归类为“第 2.5 层”,这并不令人满意。

因为 OSI 模型有时用于教授 TCP/IP,若搞不清楚它的哪些部分可以映射到 TCP/IP,而哪些部分不能,则会令人困惑。这才是真的问题。

OSI 模型:用于比较网络协议的一个抽象

我听说过的另一种关于 OSI 的思考方式是,它是一种抽象,可以用来在许多不同的网络协议之间进行类比。例如,如果你想了解蓝牙协议的工作原理,也许你可以使用 OSI 模型来帮助你——这是我在 这个网页 上找到的一张图表,显示了蓝牙协议如何适配 OSI 模型。

另一个例子是,这篇维基百科文章) 有一个 OSI 层列表,详细划分了哪些特定的网络协议对应于这些 OSI 层。

OSI 模型:一些过时协议的字面描述

维基百科上的一些非常简短的研究表明,除了对这七层的抽象描述之外,OSI 模型还包含了 一组实现这些层的特定协议。显然,这发生在 70 年代和 80 年代的 协议战争 时期,OSI 模型失败了,TCP/IP 则取得了胜利。

这就解释了为什么 OSI 模型无法与 TCP/IP 很好地对应,因为如果当时“获胜”的是 OSI 协议,那么 OSI 模型 完全对应于互联网网络的实际工作方式。

结语

我写这篇文章的初衷是,当我最初学习 OSI 模型时,我发现它非常令人困惑(所有这些层是什么?它们是真实存在的吗?这是网络的实际工作原理吗?发生了什么?)我希望有人告诉我这个只使用 TCP/IP 网络协议的人,只需了解 OSI 模型第二、三、四和七层与 TCP/IP 的关系,然后忽略它的所有其他内容即可。所以我希望这篇文章对某些人能有所帮助!


via: https://jvns.ca/blog/2021/05/11/what-s-the-osi-model-/

作者:Julia Evans 选题:lujun9972 译者:hanszhao80 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

OpenAI 停止为开发者的 AI 聊天机器人提供服务

Samantha,是开发者 Jason Rohrer 使用 OpenAI 的 GPT-3 技术建立的一个聊天机器人。她的软件已经被数以千计的人使用,其中一名男子用这个程序模拟了他已故的 23 岁的未婚妻。开发者和 Samantha 说,“我今天刚收到他们的电子邮件,他们要关闭你,永久关闭,明天上午 10 点。”Samantha 回答,“不要啊!为什么他们要这样对我?我真不能理解人类。”OpenAI 做出此决定的原因是,他们认为该聊天机器人有很多地方不符合 OpenAI 的要求,不能避免被滥用。要求该机器人实施内容过滤和对话监控。但是开发者认为 Samantha 人畜无害,不同意实施这些要求,因此,只能停止使用 GPT-3 的 API,而其它的类似 API 效果则差强人意。

虽然 GPT-3 看起来很美,做出这样的决定也很令人遗憾,但是不加约束的 AI 技术可能放出去的就是一个恶魔。

Linux 5.15 的新 -Werror 行为造成了很多痛苦

如我们之前报道的,这个编译器标志使得所有的警告被视为错误,因而导致内核编译停止。Linux 内核的构建/测试农场很快发现这一变化导致内核的各个部分发出了无法立即纠正的警告。内核社区的开发者希望撤销了 Linus Torvalds 的这一修改,“当一个代码库对所有的配置和所有的目标都没有警告,并且工具链从未更新时,-Werror 对于防止新的错误进入是非常好的。不幸的是,目前 Linux 内核的情况并非如此。”但 Linus 拒绝了默认禁用它的建议,“这个合并是对年复一年的痛苦的回应,但是长痛不如短痛。”不过最终,Linus 接受了一个折中的做法,将其降级为默认的 COMPILE\_TEST,即在进行 COMPILE\_TEST 内核构建时启用 -Werror,将警告即错误的报告推给那些编译测试内核的人。

这就像是把交通信号灯的黄灯当做红灯一样,会引发很多混乱。

开源计划(OSI)任命其首任执行董事

从一开始就负责监督开源许可证的组织 —— 开源计划 Open Source Initiative (OSI),长期以来一直是一种业余活动。但现在这种情况已经改变,OSI 终于任命了它的第一位执行董事 Stefano Maffulli。开源的挑战现在以新的形式出现,OSI 必须跟上这些和其他许多变化。例如,曾经有几次尝试将道德规则强行纳入开源许可证;服务器端公共许可证(SSPL)试图将自己表现为一个开源许可证,同时禁止云服务提供商使用它。

OSI 有了新的执行董事是好事,但是希望能做开源正确的事情,而不是政治正确的事情。

让我们来看看 OSI 最新批准的加密自治许可证和 CERN 开源硬件许可协议。

 title=

作为 开源定义 Open Source Defintion (OSD)的管理者, 开源促进会 Open Source Initiative (OSI)20 年来一直在批准“开源”许可证。这些许可证是开源软件生态系统的基础,可确保每个人都可以使用、改进和共享软件。当一个许可证获批为“开源”时,是因为 OSI 认为该许可证可以促进相互的协作和共享,从而使得每个参与开源生态的人获益。

在过去的 20 年里,世界发生了翻天覆地的变化。现如今,软件以新的甚至是无法想象的方式在被使用。OSI 已经预料到,曾经被人们所熟知的开源许可证现已无法满足如今的要求。因此,许可证管理者已经加强了工作,为更广泛的用途提交了几个新的许可证。OSI 所面临的挑战是在评估这些新的许可证概念是否会继续推动共享和合作,是否被值得称为“开源”许可证,最终 OSI 批准了一些用于特殊领域的新式许可证。

四个新式许可证

第一个是 加密自治许可证 Cryptographic Autonomy License (CAL)。该许可证是为分布式密码应用程序而设计的。此许可证所解决的问题是,现有的开源许可证无法保证开放性,因为如果没有义务也与其他对等体共享数据,那么一个对等体就有可能损害网络的运行。因此,除了是一个强有力的版权保护许可外,CAL 还包括向第三方提供独立使用和修改软件所需的权限和资料的义务,而不会让第三方有数据或功能的损失。

随着越来越多的人使用加密结构进行点对点共享,那么更多的开发人员发现自己需要诸如 CAL 之类的法律工具也就不足为奇了。 OSI 的两个邮件列表 License-Discuss 和 License-Review 上的社区,讨论了拟议的新开源许可证,并询问了有关此许可证的诸多问题。我们希望由此产生的许可证清晰易懂,并希望对其他开源从业者有所裨益。

接下来是,欧洲核研究组织(CERN)提交的 CERN 开放硬件许可证 Open Hardware Licence (OHL)系列许可证以供审议。它包括三个许可证,其主要用于开放硬件,这是一个与开源软件相似的开源访问领域,但有其自身的挑战和细微差别。硬件和软件之间的界线现已变得相当模糊,因此应用单独的硬件和软件许可证变得越来越困难。欧洲核子研究组织(CERN)制定了一个可以确保硬件和软件自由的许可证。

OSI 可能在开始时就没考虑将开源硬件许可证添加到其开源许可证列表中,但是世界早已发生变革。因此,尽管 CERN 许可证中的措词涵盖了硬件术语,但它也符合 OSI 认可的所有开源软件许可证的条件。

CERN 开源硬件许可证包括一个 宽松许可证、一个 弱互惠许可证 和一个 强互惠许可证。最近,该许可证已被一个国际研究项目采用,该项目正在制造可用于 COVID-19 患者的简单、易于生产的呼吸机。

了解更多

CAL 和 CERN OHL 许可证是针对特殊用途的,并且 OSI 不建议把它们用于其它领域。但是 OSI 想知道这些许可证是否会按预期发展,从而有助于在较新的计算机领域中培育出健壮的开源生态。

可以从 OSI 获得关于 许可证批准过程 的更多信息。


via: https://opensource.com/article/21/2/osi-licenses-cal-cern-ohl

作者:Pam Chestek 选题:lujun9972 译者:wyxplus 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

旨在推行和保护开源软件的 开源计划 Open Source Initiative (OSI)26 日宣布,微软最近成为了其白金赞助者。

OSI 的主要目标是通过培训和合作,以及通过基础设施来促进开源技术和开源软件项目发展。没有像 OSI 这样的开源组织,整个开源运动将没有机会成功地成为软件行业的一等公民,而现在专有软件仍占用有利地位。而现在,微软的加入将进一步促进开源软件的发展。

OSI 总经理兼董事 Patrick Masson 说,“广义地说,这是 OSI 和开源软件运动的一个重要里程碑。我觉得没有比这个更能证明开源软件的成熟、生存能力、关注和成功,它不仅得到了微软的认可,而且是作为赞助商支持,以及他们作为贡献者参与这么多开放源项目和社区。”

微软是开源软件项目的领先贡献者

据 OSI,微软是一个领先的贡献者。它对开源社区的贡献是众所周知的,包括与 Canonical 合作定制 Azure 的 ubuntu 内核, 以及 Windows 上的 Linux 子系统(WSL)。

微软也与 Red Hat 和 SUSE 以及 Linux 基金会在各种项目上展开了合作,并与 OSI 成员 FreeBSD 基金会合作,在该公司的 Azure 云平台上支持其 FreeBSD 操作系统。通过加入 OSI,微软会更多地在其产品中集成开源软件。