【问题标题】:What is the difference between Socket and Transport, if there is oneSocket和Transport有什么区别,如果有的话
【发布时间】:2016-08-03 05:36:19
【问题描述】:

“套接字”或“传输”之间是否有区别,或者它们是否可以互换。我之所以问,是因为我看到很多库似乎在做同样的事情,但只是在函数/方法/属性/类的名称上略有不同。

我的理解是“套接字”是将服务器/网络设备连接在一起的流,而“传输”是连接使用的方案(例如 TCP 是一种传输)。

【问题讨论】:

  • 您的问题是否与这两个词之间的确切区别有关?或 SSLTSL 。传输和套接字可以互换使用,我有时可以理解这种混淆。
  • 在这两个词之间。我知道 SSL 和 TLS 之间的区别。

标签: php sockets networking network-programming transport


【解决方案1】:

我认为您提出这个问题是因为 PHP 以一种令人困惑的方式使用这些概念。例如transport definitionstream sockets 的概念。 我不是 PHP 程序员,但据我观察,它的名称不是很直观。

在操作系统中,套接字是应用程序通过某种协议进行通信的操作系统 API。

在网络和操作系统中,有两种分层通信模型:OSI 和 TCP/IP。在它们两者中,都有一个在网络层之上运行的传输层。该传输层的主要功能是将网络层提供的服务复用到不同应用程序(在 TCP/IP 模型中的应用程序层中运行)使用的不同 TSAP(传输服务访问点)之间。传输层协议的一些示例是:TCP、UDP、SCTP。 TSAP 的概念就是我们熟知的 TCP/UDP/SCTP 端口。

有不同类型的套接字:流和数据报套接字(分别为 TCP 和 UDP)、原始套接字、unix 域套接字、数据包套接字(在 Linux 中)等。

现在,AF_INET 套接字可以是 TCP 的流套接字(因为它是面向流的)或 UDP 的数据报套接字One explanation here

具体来说,在 TCP 和 UDP 中,套接字由一个元组(源 IP、源端口、目标 IP、目标端口)定义。

SSL 和 TLS 在 TCP 之上运行(UDP 也有一些东西,但是...),可以说这些是应用层协议,但这里的分隔线不是很清楚。一些高级语言(Java 和其他语言)具有使用 SSL 或 TLS 的安全套接字。

从我在提到的链接中看到的内容来看,PHP 有流套接字的概念,这与一般操作系统的套接字概念不同。它们将您从裸操作系统套接字中抽象出来。流套接字允许您选择不同的传输方式(tcp、udp、ssl、unix 等)。我认为它指的是传输数据的不同机制(不仅是协议,还包括诸如 unix 套接字之类的机制),如果您阅读stream sockets,您会看到它在幕后为 TCP 打开了一个真正的流套接字,即所谓的“传输”和用于 UDP 的数据报套接字,即所谓的“传输”。

现在将其称为 udp 传输的流套接字令人困惑。我不知道 PHP 是否让您将 UDP 套接字视为面向流的套接字,在这种情况下它会有意义(我将这部分响应留给一些 PHP 专家)。

最后,我希望通过这个解释,你会得出结论,套接字和传输是不可互换的概念,无论是在操作系统的一般概念中还是在 PHP 中。

【讨论】:

  • 是的,你是对的,我从 PHP 中发现了这些概念(我主要使用 PHP 进行开发)。我一直在尝试学习 C 和低级语言概念,因此感到困惑。从那以后,我现在在这些概念方面变得更有经验了。
【解决方案2】:

“socket”和“transport”有区别吗? 可以互换吗?

到目前为止,我还没有遇到过transport 这个词。我总是在传输层的任何地方阅读传输层。我想请您提供您引用的外部参考(并且感到困惑)。即使在 Java 的网络库中,我也从未听说过/读过传输作为一个独立的存在实体(在我有限的经验范围内)!

我之所以这么问,是因为我看到很多图书馆似乎都在做同样的事情 东西,但仅在名称上略有不同 函数/方法/属性/类。

我认为您对 TLS/SSL 感到困惑。这里 TLS 是 SSL 的继承者。您不应该将套接字和传输与此相关联。 BTW,TLS/SSL 是应用层协议。

我的理解是“套接字”是连接服务器/网络的流 设备在一起,“传输”是连接使用的方案 (例如 TCP 是一种传输方式)。

你的两个陈述都是不正确的(至少首先是肯定的)!套接字不是流; TCP 不是传输,而是 TCP/IP 的传输协议。

简单来说,network socket 是计算机网络连接的端点。套接字在内部通常是简单的整数,用于标识要使用的连接。套接字不需要有地址(例如仅用于发送数据),但如果程序将套接字绑定到地址,则套接字可用于接收发送到该地址的数据。

transport layer 是 Internet 协议套件和开放系统互连 (OSI) 中网络堆栈中协议分层架构中方法的概念划分。 TCP/IP 最著名的传输协议是传输控制协议 (TCP)

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 2013-12-02
    • 2019-10-03
    • 2012-06-13
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多