http、https、TCP/IP、UDP、SOCKET之间的联系?
知识有些碎片化,希望读者自己能在脑中形成一套自己理解的体系吧
TCP/IP (Transmission Control Protocol 传输控制协议)
1、在TCP/IP协议中,TCP协议提供可靠的连接服务,通过三次握手来建立起一个连接。
2、TCP层是位于IP层之上,应用层之下的中间层。属于传输层协议。
3、TCP的缺点 慢,效率低,占用系统资源高,易被攻击。
4、TCP的应用场景:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。
5、TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。
UDP(User Datagram Protocol的简称, 中文名是用户数据报协议)
1、UDP是一个无状态、无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。但它在传递数据时非常快。
2、应用场景是,当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快。常见的应用有:QQ语音、QQ视频、TFTP等。
http/https
1、http协议属于应用层协议,在传输层之上。
2、HTTP协议,是从Web服务器传输 超文本 到本地浏览器的传送协议。
3、HTTP协议,利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。可以理解成在利用http传输数据时,会调用TCP的API(这个编程接口就是下文要说的socket),因为TCP能够保证数据的有效传输。
4、HTTP是短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。
5、HTTP连接使用的是”请求-响应”方式。先建立连接。然后,客户端向服务器端发出请求。最后,服务器返回数据。
6、HTTP是应用层协议,主要解决如何包装数据。
7、应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。
8、很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
9、"Socket连接"不是Socket,"Http连接"也不等于"Http协议"。
10、虽然HTTP本身是一个协议,但其最终还是基于TCP的。
6、http和https两者之间的区别:
SOCKET
1、Socket协议 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
2、建立网络通信连接至少要一对端口号(socket)。
3、Socket本质是编程接口(API),对TCP/IP的封装。TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。
4、一个不是很恰当的比喻(因为没有讲清楚http和socket之间的联系):HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
5、Socket是对TCP/IP协议的抽象,是操作系统对外开发的接口。可以这么理解,主机是硬件,操作系统是软件。那么如何利用操作系统传输信息呢,需要调用socket接口,接口背后还是TCP/IP协议.
6、套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
7、多个应用程序都需要使用TCP传输数据,为了区别不同应用程序进程和连接,操作系统为应用程序提供了套接字(Socket)接口。
8、套接字(socket)进行网络通信必须有五点信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
9、创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。
10、实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
11、实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等。
12、TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。 我个人感觉,TCP/IP协议好像说的是机制(路上的车),但是这个基于这套机制怎么用(这个车怎么开),需要有一套方法socket(加油门、刹车、离合器)
13、而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。
14、Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
15、HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
16、"Socket连接"不是Socket,"Http连接"也不等于"Http协议"。
总结和形象的比喻:
1、TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等
2、IP就像高速公路,TCP,UDP就像一辆辆卡车。卡车里边装的东西就是HTTP,FTP这样的货物。
3、需要IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,使用TCP协议(传输层)来传输数据的HTTP协议是Web服务器和客户端使用的应用层协议。HTTP基于TCP协议,但却需要使用socket去建立一个TCP连接。
各个层上的协议有:
参考文献:
1、TCP、UDP、HTTP、SOCKET之间的区别与联系 - 潘正 - 博客园
2、TCP、UDP、HTTP、HTTPS、Socket协议之间的联系_hukehukehukehuke的博客-CSDN博客
3、Socket通信、Http、Https、TCP/IP、UDP笔记 - 简书
4、HTTP、TCP、UDP以及SOCKET之间的区别/联系!!!看这篇就够了! - 程序员大本营
5、