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

时间:2011-01-22 02:49:08

标签: sockets httpconnection

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

4 个答案:

答案 0 :(得分:18)

我认为这是关于套接字和HTTP连接之间关系的一个非常普遍的问题。我还假设“HTTPConnection”并未引用涉及特定API /运行时/环境的内容,即使删除了空格的camel cased术语的方式也可能另有说明。

现在我已经不在了,OSI model

The OSI Model

OSI模型描述了网络通信的抽象级别。 socket是第3层某处的概念Network Layer,作为Internet Protocol (IP)的一部分。

HTTP是比IP更高的抽象,通常被视为在应用层中,位于OSI模型的“顶部”。

类比

您可以像定义网络内容一样,在不同的“层”定义城市的交通和流量。

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

两件重要的事情:

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

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

类比结束

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

答案 1 :(得分:12)

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

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

有点像说“为什么在使用文件时会使用.xyz文件?”

答案 2 :(得分:5)

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

答案 3 :(得分:3)

让我们说套接字只是两个远程系统之间的流,它使用TCP / IP或UPD低级协议来传输数据。 HTTP是更高级别的协议,它指定HOW系统正在进行通信。

小例子:air是语音的传输级别,但是你需要使用单词(上层协议)与其他人进行通信。

但最好在这里阅读:http://en.wikipedia.org/wiki/OSI_model