岳麓 网站设计,婚纱摄影的网站模板,wordpress目录内容分页显示,seo关键词分析SOCKET、TCP、HTTP之间的区别与联系 一、 Socket
1、什么是socket2、为什么需要socket3、建立socket连接
二、HTTP(基于TCP)
1、HTTP的概念2、HTTP连接的特点 连接请求#xff1a;一次连接连接请求#xff1a;短连接(socket是长连接)
三、TCP/IP协议簇 四、HTTP、Socket…SOCKET、TCP、HTTP之间的区别与联系 一、 Socket
1、什么是socket2、为什么需要socket3、建立socket连接
二、HTTP(基于TCP)
1、HTTP的概念2、HTTP连接的特点 连接请求一次连接连接请求短连接(socket是长连接)
三、TCP/IP协议簇 四、HTTP、Socket、TCP的联系
1、SOCKET 是操作 TCP/IP 的编程接口2、SOCKET与HTTP 长连接与短连接保持数据的实时同步 3、TCP/IP和HTTP协议
五、HTTP、Socket、TCP的区别
Socket套接字Socket长连接什么时候用长连接短连接TCP连接和HTTP连接的区别TCP连接与Socket连接的区别HTTP连接与Socket连接的区别
六、常见问题
什么时候该用HTTP什么时候该用socket ?浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开什么情况下会断开一个TCP 连接可以发多少个 HTTP 请求?一个 TCP 连接中 HTTP 请求发送可以一起发送么比如一起发三个请求再三个响应一起接收为什么有时候刷新页面不需要重新建立 SSL 连接
Long connection, Socket and tomcat containers
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连接双方请求的发送先后限制
一、 Socket
1、什么是socket
套接字socket是通信的基石是支持TCP/IP协议的网络通信的基本操作单元。
它是网络通信过程中端点的抽象表示包含进行网络通信必须的五种信息连接使用的协议本地主机的IP地址本地进程的协议端口远地主机的IP地址远地进程的协议端口。其实就是bind绑定
2、为什么需要socket
应用层通过传输层进行数据通信时TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。
为了区别不同的应用程序进程和连接计算机操作系统为应用程序与TCPIP协议交互提供了套接字(Socket)接口。
应用层可以和传输层通过Socket接口区分来自不同应用程序进程或网络连接的通信实现数据传输的并发服务。
3、建立socket连接
前面在学习socket网络编程的过程中我们已经对这一个过程有了深刻的认识由于本文更多了解的是概念性的东西在这里不做socket编程的展开。
1建立Socket连接至少需要一对套接字socket函数其中一个运行于客户端称为ClientSocket 另一个运行于服务器端称为ServerSocket 。
2bind做网络通信必须的五种信息绑定。
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/IPTransmission Control Protocol/Internet Protocol传输控制协议/网际协议是指能够在多个不同网络间实现信息传输的协议簇。 注意TCP/IP 协议不仅仅指的是 TCP 和 IP 两个协议而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇 只是因为在 TCP/IP 协议中 TCP协议 和 IP 协议最具代表性所以被称为 TCP/IP 协议。 TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。 就像配置串口通信一样通信双方要提前制定好规则这样接受信息的过程、接受到的信息才会正确。 四、HTTP、Socket、TCP的联系
1、SOCKET 是操作 TCP/IP 的编程接口
创建Socket连接时可以指定使用的传输层协议Socket可以支持不同的传输层协议TCP或UDP例如当使用 TCP 协议进行连接时该 Socket 连接就是一个TCP 连接。
从程序员的层面上来说socket 则是对 TCP/IP 协议的封装和应用。
Socket本身并不是协议而是一个调用接口API通过Socket我们才能使用TCP/IP协议。
实际上Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候就希望也能适应其他的网络协议。所以说Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已是对TCP/IP协议的抽象从而形成了我们知道的一些最基本的函数接口比如create、 listen、connect、accept、send、read和write等等。
“TCP/IP只是一个协议栈就像操作系统的运行机制一样必须要具体实现同时还要提供对外的操作接口。TCP/IP也要提供可供程序员做网络开发所用的接口这就是Socket编程接口。”
2、SOCKET与HTTP
长连接与短连接
Socket是长连接由于通常情况下Socket连接就是TCP连接因此Socket连接一旦建立通信双方即可开始相互发送数据内容直到双方连接断开这称为长连接(socket会自动向服务端发送心跳包吧这样可一直保持连接)。
HTTP是短连接HTTP连接使用的是“请求—响应”的方式不仅在请求时需要先建立连接而且需要客户端向服务器发出请求后服务器端才能回复数据。【发送请求 回复 断开】这称为短连接。
保持数据的实时同步
很多情况下需要服务器端主动向客户端推送数据保持客户端与服务器数据的实时与同步。
1此时若双方建立的是Socket连接服务器就可以直接将数据传送给客户端 在实际网络应用中客户端到服务器之间的通信往往需要穿越多个中间节点例如路由器、网关、防火墙等大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致Socket 连接断连因此需要通过轮询告诉网络该连接处于活跃状态。 2若双方建立的是HTTP连接则服务器需要等到客户端发送一次请求后才能将数据传回给客户端。因此客户端定时向服务器端发送连接请求不仅可以保持在线同时也是在“询问”服务器是否有新的数据如果有就将数据传给客户端。
3、TCP/IP和HTTP协议
TPC/IP协议是传输层协议主要解决数据在网络中如何传输而HTTP是应用层协议主要解决如何包装数据。 “我们在传输数据时可以只使用传输层TCP/IP协议但是那样的话如果没有应用层便无法识别数据内容如果想要使传输的数据有意义则必须使用到应用层协议应用层协议有很多比如HTTP、FTP、TELNET等。 五、HTTP、Socket、TCP的区别
这三个概念经常被谈到也是比较容易被混掉的概念。在回顾之前我们先看一下这三者在TCP/IP协议族中的位置关系 HTTP是应用层的协议更靠近用户端TCP是传输层的协议而socket是从传输层上抽象出来的一个抽象层本质是接口。所以本质上三种还是很好区分的。
Socket套接字
现在我们了解到TCP/IP只是一个协议栈就像操作系统的运行机制一样必须要具体实现同时还要提供对外的操作接口。就像操作系统会提供标准的编程接口比如Win32编程接口一样TCP/IP也必须对外提供编程接口这就是Socket。现在我们知道Socket跟TCP/IP并没有必然的联系。Socket编程接口在设计的时候就希望也能适应其他的网络协议。所以Socket的出现只是可以更方便的使用TCP/IP协议栈而已其对TCP/IP进行了抽象形成了几个最基本的函数接口。比如createlistenacceptconnectread和write等等不同语言都有对应的建立Socket服务端和客户端的库。
Socket长连接
所谓长连接指在一个TCP连接上可以连续发送多个数据包在TCP连接保持期间如果没有数据包发送需要双方发检测包以维持此连接(心跳包)一般需要自己做在线维持。 短连接是指通信双方有数据交互时就建立一个TCP连接数据发送完成后则断开此TCP连接。比如Http的只是连接、请求、关闭过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。其实长连接是相对于通常的短连接而说的也就是长时间保持客户端与服务端的连接状态。 短连接操作步骤是 连接→数据传输→关闭连接 长连接操作步骤是 连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接 什么时候用长连接短连接
长连接多用于操作频繁点对点的通讯而且连接数不能太多情况。每个TCP连接都需要三步握手这需要时间如果每个操作都是先连接再操作的话那么处理 速度会降低很多所以每个操作完后都不断开次处理时直接发送数据包就OK了不用建立TCP连接。例如数据库的连接用长连接 如果用短连接频繁的通信会造成Socket错误而且频繁的Socket创建也是对资源的浪费。
TCP连接和HTTP连接的区别
HTTP是基于TCP的客户端往服务端发送一个HTTP请求时第一步就是要建立与服务端的TCP连接也就是先三次握手“你好你好你好”。从HTTP 1.1开始支持持久连接也就是一次TCP连接可以发送多次的HTTP请求。 总结HTTP基于TCP TCP连接与Socket连接的区别
socket层只是在TCP/UDP传输层上做的一个抽象接口层因此一个socket连接可以基于连接也有可能基于UDP。基于TCP协议的socket连接同样需要通过三次握手建立连接是可靠的基于UDP协议的socket连接不需要建立连接的过程不过对方能不能收到都会发送过去是不可靠的大多数的即时通讯IM都是后者。 总结Socket也基于TCP,socket 是实现TCPUDP的。类似于jedisredis的java实现和redis的关系。 HTTP连接与Socket连接的区别
区分这两个概念是比较有意义的毕竟TCP看不见摸不着HTTP与Socket是实实在在能用到的。
HTTP是短连接Socket(基于TCP协议的)是长连接。尽管HTTP1.1开始支持持久连接但仍无法保证始终连接。而Socket连接一旦建立TCP三次握手除非一方主动断开否则连接状态一直保持。
HTTP连接服务端无法主动发消息Socket连接双方请求的发送先后限制。这点就比较重要了因为它将决定二者分别适合应用在什么场景下。HTTP采用“请求-响应”机制在客户端还没发送消息给服务端前服务端无法推送消息给客户端。必须满足客户端发送消息在前服务端回复在后。Socket连接双方类似peer2peer的关系一方随时可以向另一方喊话。
六、常见问题
什么时候该用HTTP什么时候该用socket ? 用HTTP的情况双方不需要时刻保持连接在线比如客户端资源的获取、文件上传等。 用Socket的情况大部分即时通讯应用(QQ、微信)、聊天室、苹果APNs等。
浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开什么情况下会断开
在 HTTP/1.0 中一个服务器在发送完一个 HTTP 响应后会断开 TCP 链接。但是这样每次请求都会重新建立和断开 TCP 连接代价过大。某些服务器在完成这个 HTTP 请求之后不断开 HTTP 请求使用的 TCP 连接。这样的好处是连接可以被重新使用之后发送 HTTP 请求的时候不需要重新建立 TCP 连接以及如果维持连接那么 SSL 的开销也可以避免。 所以结论是默认情况下建立 TCP 连接不会断开只有在请求报头中声明 Connection: close 才会在请求完成后关闭连接。 一个TCP 连接可以发多少个 HTTP 请求?
如果维持连接一个 TCP 连接是可以发送多个 HTTP 请求的。
一个 TCP 连接中 HTTP 请求发送可以一起发送么比如一起发三个请求再三个响应一起接收
在 HTTP/1.1 存在 Pipelining 技术可以完成这个多个请求同时发送但是由于浏览器默认关闭所以可以认为这是不可行的。
在 HTTP2 中由于 Multiplexing 特点的存在多个 HTTP 请求可以在同一个 TCP 连接中并行进行。 那么在 HTTP/1.1 时代浏览器是如何提高页面加载效率的呢主要有下面两点 维持和服务器已经建立的 TCP 连接在同一连接上顺序处理多个请求。和服务器建立多个 TCP 连接。 为什么有时候刷新页面不需要重新建立 SSL 连接
TCP 连接有的时候会被浏览器和服务端维持一段时间。TCP 不需要重新建立SSL 自然也会用之前的。