什么是套接字?为什么我们不能使用套接字而不是HTTP?

Car*_*zer 7 sockets httpconnection

套接字只是两台机器之间的连接吗?如果可以建立套接字,为什么我们甚至使用HTTPConnection?

Ric*_*uen 19

我假设这是关于套接字和HTTP连接之间关系的一个非常普遍的问题.我还假设"HTTPConnection"并不涉及涉及特定API /运行时/环境的内容,即使它是带有空格的骆驼套接字的方式也可能暗示其他情况.

现在已经不在了,我向您呈现OSI模型:

OSI模型

OSI模型描述了网络通信的抽象级别.甲插座是这将某处存在于层3,一个概念网络层,作为一部分网际协议(IP) .

HTTP是比IP更高的抽象,通常被认为是在应用层中,在OSI模型的"顶部".

比喻

您可以像定义网络内容一样,在不同的"层"定义城市的交通和交通.

  • 最简单的是,一座城市是一堆建筑物.
  • 随着城市的发展,人们需要从建筑物到建筑物,因此他们开发道路.道路是城市的新"层".
  • 随着越来越多的人使用道路,他们开始需要一套规则和法律来帮助每个人保持安全.
  • 一旦人们在道路上安全,他们希望道路高效快捷,因此灯光和标志系统有助于协调道路上的人.

两件重要的事情:

首先,每层取决于它下面的一个.没有建筑物(目的地)的道路变得愚蠢.没有道路,交通法则很愚蠢.没有交通法规,交通信号灯很傻.

其次,较高层的具体细节取决于您所在的城市:有​​时您发现自己处于人们左侧驾驶的国家,有时他们在右侧驾驶.有时你可以打开红色,有时不打开.有时会有道路,但它们没有法律.

类比结束

因此,在Internet上,有时您会与不同类型的服务器进行通信.在下面,他们可能都依赖于插座(互联网的"道路"),但他们都有自己的"交通规则",你必须尊重 - 像HTTP或FTP或SOAP这样的协议.


Ree*_*sey 12

Http是一个建立在套接字之上的协议.

当你使用Http时,你在套接字上使用了更高级别的抽象.你还在使用套接字.

这有点像说"当你可以使用文件时,为什么要使用.xyz文件?"

  • 或“既然有了算盘,为什么还要用电脑呢?”。 (2认同)
  • 请注意,**HTTP** 建立在 **Sockets** 之上,而不是 **Websockets**。这让我困惑了一段时间! (2认同)

Ela*_*fer 5

可以说,套接字只是两个远程系统之间的流,它使用 TCP/IP 或 UPD 较低层协议来传输数据。HTTP 是更高级别的协议,它指定系统如何通信。

小例子:空中是语音的传输层,但是您需要单词(上层协议)来与其他人进行通信。

但更适合您阅读这里: http: //en.wikipedia.org/wiki/OSI_model


Eri*_*son 5

阅读有关网络通信的OSI模型:http://en.wikipedia.org/wiki/OSI_model 它应该很好地解释每个组件适合的位置.