简而言之,TCP是传输层协议,HTTP是运行在TCP上的应用层协议。
详细来说,要理解区别(以及许多其他网络主题),您需要了解分层网络模型的概念。基本上,有不同的协议可以让计算机以不同的距离和抽象层次进行通信。
在网络堆栈的底部是物理层。这是电信号、光脉冲或无线电波实际传输信息的地方。物理层没有真正的协议,而是具有电压、频率和其他物理属性的标准。您可以直接通过这种方式传输信息,但需要大量功率或专用线路,并且如果没有更高的层次,您将无法共享带宽。
上面一层是链路层。这一层涵盖与共享物理通信介质的设备的通信。在这里,诸如Ethernet、802.11a/b/g/n和Token Ring等协议指定如何处理对物理介质的多个并发访问以及如何将流量引导到一个设备而不是另一个设备。在典型的家庭网络中,这是您的计算机与家庭“路由器”通信的方式。
第三层是网络层。在大多数情况下,这由Internet Protocol(IP)主导。这是互联网的魔力所在,您可以与世界各地的计算机进行通信,而无需知道它在哪里。路由器处理将您的流量从本地网络引导到另一台计算机所在的网络,在那里它自己的链路层处理将数据包发送到正确的计算机。
现在我们正在取得进展。我们可以与世界各地的计算机进行通信,但该计算机正在运行许多不同的程序。它应该如何知道将您的消息交付给哪个程序?传输层通常使用端口号来处理此问题。最受欢迎的传输层协议是TCP和UDP。TCP执行许多有趣的操作,以平滑网络层分组交换通信中的粗糙点,例如重新排序数据包、重传丢失的数据包等。UDP更不可靠,但开销更小。
因此,我们已将您的浏览器连接到另一端的Web服务器软件,但服务器如何知道您想要哪个页面?您如何发布问题或答案?这些是应用层协议处理的事情。对于Web流量,这是超文本传输协议(HTTP)。有数千种应用层协议:电子邮件的SMTP、IMAP和POP3;聊天的XMPP、IRC和ICQ;远程管理的Telnet、SSH和RDP等。
这些是TCP/IP网络模型的五个层次,但它们实际上只是概念性的。OSI模型有7个层次。在现实中,一些协议在各种层之间进行切换,或者可以同时工作在多个层上。例如,TLS/SSL提供了网络层和传输层之间的加密和会话信息。在应用程序层以上,应用程序编程接口(API)管理与Web应用程序(如Quora、Twitter和Facebook)的通信。