Php 套接字和传输之间有什么区别(如果有的话)

Php 套接字和传输之间有什么区别(如果有的话),php,sockets,networking,network-programming,transport,Php,Sockets,Networking,Network Programming,Transport,“插座”或“传输”之间是否有区别,或者它们是否可互换。我之所以问这个问题,是因为我看到很多库似乎都做同样的事情,但只是名称函数/方法/属性/类的方式略有不同 我的理解是,“套接字”是将服务器/网络设备连接在一起的流,“传输”是连接使用的方案(例如TCP是传输) “套接字”或“传输”之间有区别吗?或者它们是 可互换的 到目前为止,我还没有把运输这个词当作一个词来理解。我总是在传输过程中到处阅读传输层。我想请您提供您引用的外部参考资料(并且感到困惑)。即使在Java的网络库中,我也从未听说/读过传输

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

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

“套接字”或“传输”之间有区别吗?或者它们是 可互换的

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

我之所以问这个问题,是因为我看到很多图书馆似乎也这么做 事物,但仅在名称上略有不同 函数/方法/属性/类

我认为您会因为TLS/SSL而感到困惑。在这里,TLS是SSL的继承者。您不应该将套接字和传输与此关联。顺便说一句,TLS/SSL是应用层协议

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

你的两种说法都是错误的(至少一开始是肯定的)!套接字不是一个流;TCP不是传输协议,而是TCP/IP的传输协议

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


然而,在互联网协议套件和开放系统互连(OSI)的网络堆栈中,是协议分层体系结构中方法的概念划分。TCP/IP最著名的传输协议是传输控制协议(Transmission Control protocol,TCP)

我认为您提出了这个问题,因为PHP以一种令人困惑的方式使用了这些概念。例如,和的概念。 我不是一个PHP程序员,但从我所注意到的,它的名字不是很直观

在操作系统中,套接字是一种操作系统API,用于应用程序通过特定协议进行通信

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

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

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

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

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

从我在上面提到的链接中读到的内容来看,PHP有流套接字的概念,这与一般操作系统的套接字概念不同。它们将您从裸露的操作系统套接字中抽象出来。流套接字允许您选择不同的传输(tcp、udp、ssl、unix等)。我假设它指的是传输数据的不同机制(不仅是协议,还包括unix套接字等机制),如果您读入,您将看到在幕后,它为TCP打开了一个真正的流套接字(称为“传输”),为UDP打开了一个数据报套接字(称为“传输”)

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


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

您的问题是否与这两个词之间的确切区别有关?或者SSL vs TSL。运输和插座是可以互换使用的,有时我能理解这种混淆。它介于这两个词之间。我知道SSL和TLS之间的区别。是的,你是对的,我从PHP(我主要用PHP开发)中发现了这些概念。我一直在努力学习C语言和低级语言的概念,因此产生了混乱。从那以后,我现在对这些概念有了更多的经验。