10

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

4

4 回答 4

21

我认为这是一个关于套接字和 HTTP 连接之间关系的非常普遍的问题。我还假设“HTTPConnection”不是指涉及特定 API/运行时/环境的东西,即使它是一个删除空格的驼峰式术语的方式可能暗示其他情况。

现在已经不碍事了,我向您介绍OSI 模型

OSI 模型

OSI 模型描述了网络通信的抽象级别。套接字是作为Internet 协议 (IP)的一部分存在于第 3 层网络层某处的概念。

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

类比

你可以定义一个城市的交通和交通在不同的“层”,就像我们定义网络的东西一样。

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

两个重要的事情:

首先,每一层都依赖于它“下面”的一层。没有建筑物(目的地)的道路变得愚蠢。没有道路,交通法就是愚蠢的。没有交通法规,红绿灯是愚蠢的。

其次,较高层的具体情况因您所在的城市而异:有时您会发现自己身处一个人们在左边开车的国家,有时他们在右边开车。有时你可以打开红色,有时不能。有时有道路,但没有法律。

类比结束

因此,在 Internet 上,有时您会与不同类型的服务器进行通信。在下面,它们可能都依赖于套接字(互联网的“道路”),但它们都有自己的“交通规则”,您必须遵守这些规则——HTTP、FTP 或 SOAP 等协议。

于 2011-01-22T04:25:51.747 回答
13

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

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

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

于 2011-01-22T02:57:54.277 回答
6

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

于 2011-01-22T03:00:40.610 回答
4

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

小例子:air 是语音的传输层,但你需要单词(上层协议)来与其他 ppl 通信。

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

于 2011-01-22T02:59:56.690 回答