套接字只是两台机器之间的连接吗?如果可以建立套接字,为什么我们甚至使用HTTPConnection?
答案 0 :(得分:18)
我认为这是关于套接字和HTTP连接之间关系的一个非常普遍的问题。我还假设“HTTPConnection”并未引用涉及特定API /运行时/环境的内容,即使删除了空格的camel cased术语的方式也可能另有说明。
现在我已经不在了,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是语音的传输级别,但是你需要使用单词(上层协议)与其他人进行通信。