http协议之长连接与短连接服务器,长连接短连接
HTTP 协议与 TCP/IP 协议的关系
HTTP 协议是应用层的协议,而 TCP 协议是传输层的协议,IP 协议是网络层的协议。
IP 协议主要解决网络路由以及寻址等问题,而 TCP 协议主要解决如何在 IP 层之上如何更加可靠地进行数据包的传递,即在接收端收到发送端发出的所有包,并且顺序与发出顺序一致。
所以说 TCP 是可靠的,面向连接的协议。
HTTP 协议是无状态的
无状态是指 HTTP 对事务的处理没有记忆能力,服务端并不知道客户端的状态(也就是说,你现在打开一个网页,和你之前打开同一个服务器的网页之间,并没有任何的关系)。
HTTP 是无状态的面向连接的协议。(无状态并不是说明 HTTP 协议无法保存 TCP 连接,也不能代表 HTTP 使用的是 UDP 连接–无连接)
HTTP 的长连接和短连接HTTP/1.0 默认使用短连接
HTTP/1/1 默认使用长连接
短连接:例如浏览器每一次和服务器进行一次 HTTP 操作,就会建立一次连接,当任务结束的时候,该连接就会断开。
长连接:保持连接特性。每当一个网页打开,客户端和服务端用于 HTTP 数据传输的 TCP 连接将不会被关闭,如果客户端再次访问这个服务端,将会继续使用该 TCP 连接。
使用长连接的 HTTP 协议,会在响应头加上这个属性:1
Connection:keep-alive
Keep-Alive 不会永远保持连接,它会有一个失效时间,可以在服务器上进行设置。
而实现长连接的客户端和服务端都要能够支持长连接。
HTTP 的长连接和短连接的本质,其实就是 TCP 的长连接和短连接。
TCP 连接
当网络使用 TCP 的方式来进行网络连接的时候,在读写之前需要 server 和 client 之间建立起一个连接,当读写操作完成后,再去释放这个连接。
TCP 的连接需要三次握手,而释放需要四次挥手。
从上面的图可以看出,每一次连接都是很损耗资源和时间的。
TCP 的短连接
我们来模拟一下 TCP 的短连接。首先是 Client 向 Server 发送连接请求,Server 接收到请求后建立连接,此时 Client 向 Server 发送消息,Server 回应 Client,这就是一个读写操作完成了,此时两端都可以发起 close 请求,而一般是 Client 发起,因为一般 Server 不会回应完 Client 后立马关闭连接。
这就是短连接,每次连接只能进行一次读写操作。
TCP 的长连接
同样来模拟长连接。首先一样的 Client 会向 Server 发起连接请求,Server 接收到请求后建立连接。不一样的是,此时 Client 和 Server 进行一次读写操作后,两端都不会去主动发起 close 请求,即不会主动断开连接,这样后续的读写操作都会去使用到这个连接。
长连接和短连接的优缺点
长连接因为不用对此进行握手挥手等操作,所以可以省下很多的资源和时间。
但是,由于它的存活时间较长,如果遇到恶意破坏的连接时(在短时间内多个客户端发起连接请求,且这些连接都只是占用资源而已),那么这个服务器崩溃的概率就会增大。
这时的服务器应该采取一些措施来防止这样的情况发生,例如关闭一些长时间没有进行读写操作的连接,限制每一个客户端发起的连接数等。
短连接的优点显而易见,那就是易于管理,它所存在的连接都是有用的连接,不需要额外的控制手段。
但是其缺点也是很显然,当用户在频繁地发起请求的时候,将会在 TCP 的建立和关闭上浪费相当多的资源和时间。
对长连接和短连接的选择
长连接一般用于在操作频繁,点对点的通讯,而且连接数不能太多。
例如数据库的连接就可以使用长连接。
而像 Web 上的网页之类的操作就使用短连接。它适用于连接频繁的操作。
http协议之长连接与短连接服务器,长连接短连接相关推荐
- 将serversocket 写在按钮事件中连接不上_Java服务器的模型—TCP连接/流量优化
本文很长哦,但请给我一点时间. 通常,我们的应用程序不需要并行处理成千上万的用户,也不需要在一秒钟内处理成千上万的消息.我们只需要应付数十或数百个并发连接的用户,就可以在内部应用程序或某些微服务应用程 ...
- 光猫连接水星路由器显示服务器,水星mw300r路由器连接光猫的设置方法步骤
水星mw300r无线路由器因其出色的性能.配置简单和超高的性价比,深受广大用户的喜欢;不过对于没有网络基础的用户来说,完成水星mw300r路由器与光猫的连接设置,任然有一定的困难,下面是学习啦小编给大 ...
- 无线网络怎么连接绝地球生服务器,手机无线网络连接方法 手机Wifi无线网络设置的操作步骤组图...
随着智能手机无线上网的流行,如今很多家庭都会组建Wifi无线网络,目前组建Wifi网络,大致有两种情况,一种是使用无线路由器,另外一种是将笔记本变身无线无路由器,从而实现智能手机也可以免费Wifi上网 ...
- android linux网络连接,Android和Linux服务器之间的TCP连接
我正在编写一个代码,需要每秒从Android移动设备向台式计算机(linux服务器)发送数据.由于数据经常发送,通过Http命中无法实现(因为会消耗时间),所以Tcp通信似乎是更好的选择,因为andr ...
- 树莓派蓝牙连接手机显示没有服务器,求助树莓派蓝牙连接问题
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在一块Raspberry Pi 3的板子与一个带蓝牙的血氧检测板子连接时出现一些问题:板子如图所示 这个板子在与手机蓝牙连接时只需要输入六位000000p ...
- ipad显示连接不到商店服务器,iPad Pro无法连接应用商店(App Store)如何解决?
ipad pro无法连接应用商店(app store)如何解决? 首先在 ipad pro 主屏上找到并打开「设置」,如图所示. 在设置列表中,在左侧边栏中找到并点击「无线局域网」一栏,如图所示. 随 ...
- 无线网主服务器连接异常,vivox9plus主服务器异常怎么办。连接不上网络?
满意答案 酋长stadium 2020.09.24 采纳率:40% 等级:9 已帮助:261人 一.使用数据网络无法上网排查方法: 1.确认手机是否欠费或开通数据上网功能: 2.进入设置--双卡 ...
- mysql连接提示错误_服务器经常提示mysql连接错误,有木有解决方法?
网络是联通的,因为在同一主机内,本地连接到mysql服务器,和运行环境无关,php,python连接数据库都有这种情况出现 提示Can't connect to MySQL server on 'lo ...
- DTU连接自建MQTT服务器
DTU连接自建MQTT服务器 DTU串口助手连接电脑 ,图片中485端口被变送器占用,飞线用来测试 配置参数如图: 重启DTU 网络连接正常. 启动 java 服务端 启动连接成功 发送透传测试数据 ...
最新文章
- 【机器学习】特征工程概述
- leetcode算法题--预测赢家★
- C#多线程 我的第一个多线程程序
- 仿MIUI音量变化环形进度条实现
- 如何将爬虫获得的数据变为字典的key_Python爬虫第二战 爬取500px图片
- 【angularjs】pc端使用angular搭建项目,实现导出excel功能
- 解决办法:undefined reference to symbol 'pthread_mutexattr_settype@@GLIBC_2.2.5'
- html5论文参考文献合集
- 一线工程师如何看待《没了美国的EDA软件,我们就不能做芯片了》
- 填坑之路 DirectX11(二)使用 DirectXTex 读取 DDS 文件时报错解决方案
- 数据库设计4-概念结构设计
- 安装系统之三 U盘启动盘建立磁盘分区教程
- android 在线预览pdf文件(目前最全)
- 高效率使用日历提醒事项备忘录便签,完成日程规划
- 初学3D制作,先学C4D还是Blender?
- 【测验1 编程题】: Python基本语法元素 (第1周)
- 计算机基础知识集体备课,计算机集体备课(三)
- 【BUG解决】sudo apt-get update 报错 E: The repository ‘http://xxx Release‘ does not have a Release file.
- 无刷直流电机介绍及单片机控制实例
- 2290亿美元,卡塔尔世界杯中国和卡塔尔 都赢了