参考:网络编程知识预备(3) ——SOCKET、TCP、HTTP之间的区别与联系_行稳方能走远的博客-CSDN博客
SOCKET、TCP、HTTP之间的区别与联系
联系
两个计算机进行网络通讯时使用TCP协议就够了,双方就能收发数据,但是无法解析数据;
HTTP协议解决了浏览器和服务器之间通讯协议的数据格式解析;
HTTP协议基于TCP协议,通过TCP协议传输数据;HTTP协议是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
Socket套接字是通信的基石,是程序员能够进行 TCP/IP 编程的最小单位。是支持TCP/IP协议的网络通信的基本操作单元。当使用 TCP 协议进行连接时,该 Socket 连接就是一个TCP 连接。
区别
HTTP是应用层的协议,更靠近用户端;TCP是传输层的协议;而socket是从传输层上抽象出来的一个抽象层,本质是接口
HTTP是短连接,Socket(基于TCP协议的)是长连接
HTTP连接服务端无法主动发消息,客户端发送的每次请求服务器都需要回送响应。Socket连接双方请求的发送先后限制
目录
浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么情况下会断开?
一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?
一、 Socket
1、什么是socket
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。
它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。(其实就是bind绑定)
2、为什么需要socket
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。
为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。
应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
3、建立socket连接
前面在学习socket网络编程的过程中,我们已经对这一个过程有了深刻的认识,由于本文更多了解的是概念性的东西,在这里不做socket编程的展开。
(1)建立Socket连接至少需要一对套接字(socket函数),其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
(2)bind做网络通信必须的五种信息绑定。
(3)套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
二、HTTP(基于TCP)
1、HTTP的概念
HTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
2、HTTP连接的特点
连接请求:一次连接
HTTP连接最显著的特点是客户端发送的每次请求服务器都需要回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
(1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
(2)在HTTP> 1.1中,则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
连接请求:短连接(socket是长连接)
由于HTTP在每次请求结束后服务端都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,客户端需要向服务器不断地发起连接请求。
若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
通常的做法是即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一保持连接的请求(心跳包),服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。
三、TCP/IP协议簇
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。
注意:TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在 TCP/IP 协议中 TCP协议 和 IP 协议最具代表性,所以被称为 TCP/IP 协议。
TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。
就像配置串口通信一样,通信双方要