套接字只是两台机器之间的连接吗?如果可以建立套接字,为什么我们还要使用 HTTPConnection ?
4 回答
我认为这是一个关于套接字和 HTTP 连接之间关系的非常普遍的问题。我还假设“HTTPConnection”不是指涉及特定 API/运行时/环境的东西,即使它是一个删除空格的驼峰式术语的方式可能暗示其他情况。
现在已经不碍事了,我向您介绍OSI 模型:
OSI 模型描述了网络通信的抽象级别。套接字是作为Internet 协议 (IP)的一部分存在于第 3 层网络层某处的概念。
HTTP是比 IP 更高的抽象,通常被认为在应用层中,处于 OSI 模型的“顶部”。
类比
你可以定义一个城市的交通和交通在不同的“层”,就像我们定义网络的东西一样。
- 简单来说,一座城市就是一堆建筑物。
- 随着城市的发展,人们需要在建筑物之间穿梭,因此他们开发了道路。道路是城市的新“层”。
- 随着越来越多的人使用道路,他们开始需要一套规则和法律体系来帮助确保每个人的安全。
- 但是,一旦人们在道路上安全,他们希望道路高效快捷,因此灯光和标志系统有助于协调道路上的人们。
两个重要的事情:
首先,每一层都依赖于它“下面”的一层。没有建筑物(目的地)的道路变得愚蠢。没有道路,交通法就是愚蠢的。没有交通法规,红绿灯是愚蠢的。
其次,较高层的具体情况因您所在的城市而异:有时您会发现自己身处一个人们在左边开车的国家,有时他们在右边开车。有时你可以打开红色,有时不能。有时有道路,但没有法律。
类比结束
因此,在 Internet 上,有时您会与不同类型的服务器进行通信。在下面,它们可能都依赖于套接字(互联网的“道路”),但它们都有自己的“交通规则”,您必须遵守这些规则——HTTP、FTP 或 SOAP 等协议。
Http 是建立在套接字之上的协议。
当您使用 Http 时,您在套接字之上使用了更高级别的抽象。您仍在使用套接字。
这有点像说“当你可以使用文件时,为什么还要使用 .xyz 文档?”
阅读有关网络通信的 OSI 模型:http ://en.wikipedia.org/wiki/OSI_model 它应该很好地解释了每个组件的适合位置。
假设套接字只是两个远程系统之间的流,它使用 TCP/IP 或 UPD 较低级别的协议来传输数据。HTTP 是更高级别的协议,它指定系统如何通信。
小例子:air 是语音的传输层,但你需要单词(上层协议)来与其他 ppl 通信。