TCP/IP、Http、Socket的区别

TCP/IP、Http、Socket的区别

 1. 网络由下往上分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

2. 关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。如果想要使传输的数据有意义,则必须使用到应用层协议。应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

3. 而我们平时说的最多的socket是什么呢, 实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。通过Socket,我们才能使用TCP/IP协议。实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”


4. Scoket与Http的区别: Scoket是一种对TCP/IP协议的封装,方便应用层调用; Http是应用层的一种协议

5. Scoket连接与Http连接的区别:由于通常情况下Socket连接就是TCP连接(所谓的长连接,但会由于环境因素断开),因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。而HTTP连接(短连接:即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉.)使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

6. TCP连接
  • TCP提供一种面向连接、可靠的字节流服务。
  • 面向连接意味着两个使用TCP的应用(通常是一个客户,一个服务器)在彼此交换数据之前先建立一个TCP连接。和打电话很相似。
  • 在一个TCP连接中,仅有两方进行彼此通信。
  • TCP为应用层提供全双工服务。这意味数据能在两个方向上独立的进行传输。
  • 每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。

原文地址:https://www.cnblogs.com/Demrystv/p/9297783.html