长连接

网络-tcp

回眸只為那壹抹淺笑 提交于 2019-12-19 17:13:34
1.TCP:面向连接可靠的传输协议 ,全拼:Transmission Control Protocol 2.UDP:用户数据报协议 全拼:User Datagram protocol 不是面向连接的 创建socket就可以直接发送数据,不能保证数据的可靠性,但是速度快 3.TCP的特点 : 3.1 面向连接, 间接验证对方地址的有效性 3.2 可靠性 3.2.1 应答机制, 对方收到数据底层会有回复 3.2.2 超时重传, 隔一段时间会给对方重新发送数据,如果对方一直没有回复那么会认为对 方掉线了。 3.2.3 错误校验, 发送方发送的数据包和接收方接收的数据包序号不一致,tcp会自动对数据 包进行排序,如果数据包重复则会删除重复的数据包。 3.2.4 流量控制, 如果对方的网卡缓冲区达到一定上限,发送方就不能再发送数据,等待数据 开始接收完成以后再给其发送数据,保证电脑不被卡死 4.TCP和UDP的不同点: 4.1 tcp是面向连接的, udp不是 4.2 tcp能保证数据的有序和准确性 udp不能保证 4.3 tcp有超时重传 udp没有 4.4 tcp有错误校验机制 udp没有 4.5 tcp舍弃重复数据包的机制 udp没有 4.6 tcp流量控制 udp没有 4.7 tcp适合做文件上传和下载 4.8 udp适合做广播 4.9 udp输出速度比tcp要快,资源开销比tcp少

长连接、短连接、长轮询和WebSocket

爷,独闯天下 提交于 2019-12-19 09:49:07
原文链接: http://caibaojian.com/http-connection-and-websocket.html 对这四个概念不太清楚,今天专门搜索了解一下,总结一下: · 长连接:在 HTTP 1.1, 客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端再发送请求时,它会使用同一个连接。这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。 优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。 劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。 短连接:在 HTTP 1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。 长轮询:(我自己的理解)客户端不断发送请求,获取服务器上的数据。也有人说是长连接的一种,是这样吗??? WebSocket :客户端发送一次http websocket请求,服务器响应请求,双方建立持久连接,并进行双向数据传输,后面不进行 HTTP 连接,而是使用TCP连接。 什么是长连接、短连接? 在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个 HTML 或其他类型的 web 页中包含有其他的Web资源(如 JavaScript 文件、图像文件、

Connection: Keep-Alive

吃可爱长大的小学妹 提交于 2019-12-18 17:31:28
上午在实验室看书,师弟让我帮忙解决个项目上的问题,问题不难,于是我教他抓包解决,让他电脑下了fiddler不过却显示不出来请求,我尝试了一下也是如此,过滤器也没开,突然意识到可能是360的问题,因为fiddler是通过http代理的方式,360很可能阻止第三方软件对浏览器代理,于是关掉360,重启浏览器终于能愉快的抓包了。 调试过程中我让他F12勾上disable cache,然后眼睛被一个词语吸引住了---Connection: Keep-Alive 当时很疑惑,http明明是无连接无状态的,那么这里的keepalive是指什么? 实际上它是一种TCP复用,每次http请求都需要tcp三次握手,浪费资源和时间,因此我们可以保持tcp通道连接一段时间,这样一次tcp连接就可以维持几次http请求。 在此基础上,还需要搞清楚几个其他的名词:长轮询,段轮询 长连接是为了tcp复用,那么这两个词是做什么的呢?先说个例子: 短轮询相信大家都不难理解,比如你现在要做一个电商中商品详情的页面,这个详情界面中有一个字段是库存量(相信这个大家都不陌生,随便打开淘宝或者京东都能找到这种页面)。而这个库存量需要实时的变化,保持和服务器里实际的库存一致,怎么实现? 长轮询这个时候就出现了,其实长轮询和短轮询最大的区别是,短轮询去服务端查询的时候,不管库存量有没有变化,服务器就立即返回结果了

Django MySQL 数据库连接

北战南征 提交于 2019-12-18 15:30:47
Django 1.11 官方文档 常规说明 数据库连接 CONN_MAX_AGE 定义数据库连接时限(ALL) default:0 保存在每个请求结束时关闭数据库连接的历史行为。 None:保持长连接 Other:xx 单位秒 连接管理 Django连接发生在每次请求时,如果没有可用连接便主动建立连接,如果限制了连接时间的话。 警告 每个线程包含自己的数据库连接,数据库必须支持至少和工作线程一样多的同步连接; 有时出现大多数视图无法访问数据库,此时应当试图减少数据库保持连接时间,这样不会有意地维护连接,同时有助于减少数据库同步连接数; 开发服务器会为每个处理的连接创立新的线程,会使长连接失效; 当Django建立一个连接时会设置适当的参数(取决于被使用的后端),如果使能长连接,这些设置便不会在每个请求重复设置,但是如果你定义了比如连接隔离或时区,就应在每次连接断开后还原默认配置,强制写入适当的值或者禁用长连接。 编码 Django 默认假设所有数据库均采用UTF-8编码。 MySQL连接说明 版本说明 支持MySQL 5.5+,期望数据库支持UTF-8编码和事务和参照完整性。 数据库存储引擎 推荐引擎---InnoDB MySQL数据库API驱动 MySQLdb 原生驱动已被开发支持超过10年(不支持Python3); mysqlclient MySQLdb的衍生

长连接和短连接

无人久伴 提交于 2019-12-18 09:03:45
解释1 所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差, 所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接 解释2 长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。 而短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。 解释3 长连接和短连接这个概念好像只有移动的CMPP协议中提到了,其他的地方没有看到过。 通信方式 各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包 发送,需要双方发检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只 完成一对 CMPP消息的发送。 现阶段,要求ISMG之间必须采用长连接的通信方式,建议SP与ISMG之间采用长连接的通信方式。 解释4 短连接:比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。 长连接:有些服务需要长时间连接到服务器,比如CMPP,一般需要自己做在线维持。 来源: https://www.cnblogs.com/dongzhiquan/archive/2013/04/09/3011411.html

轮询、长轮询、长连接、flash socket 的区别

一世执手 提交于 2019-12-17 19:59:11
轮询 : 客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 优点:后端程序编写比较容易。 缺点:请求中有大半是无用,浪费带宽和服务器资源。 实例:适于小型应用。 长轮询: 客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。 优点:在无消息的情况下不会频繁的请求,耗费资源小。 缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。 实例:WebQQ、Hi网页版、Facebook IM。 长连接: 在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对方便。 缺点:服务器维护一个长连接会增加开销。 实例:Gmail聊天 Flash Socket: 在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。 优点:实现真正的即时通信,而不是伪即时。 缺点:客户端必须安装Flash插件;非HTTP协议,无法自动穿越防火墙。 实例

php的swoole和rpc区别

∥☆過路亽.° 提交于 2019-12-14 16:18:03
RPC是远程过程调用(Remote Procedure Call)的缩写形式。 SAP系统RPC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。 推荐学习 (swoole教程) 进程间通信(IPC)是在多任务操作系统或联网的计算机之间运行的程序和进程所用的通信技术。有两种类型的进程间通信(IPC)。 本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。 远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNⅨ操作系统的计算机中。 Swoole框架提供的RPC服务器支持了单连接并发、PHP-FPM下长连接维持等特性。在车轮互联大规模应用,构建了4层架构的服务化架构。 很多企业使用Http Rest实现RPC通信,实现简单可以利用到很多现成的工具和方案。但是Http通信协议存在2个严重的缺陷。 Http不支持单连接并发,如果要同时并发很多请求,必须创建大量TCP连接。如果php-fpm开启500个进程,每次需要128个并发,那么就需要创建64000个TCP连接。 Http对长连接支持不够好,很多Http程序都是设计为短连接的,在请求时创建TCP连接

dubbo的工作原理

北战南征 提交于 2019-12-12 05:05:28
1、面试题 说一下的dubbo的工作原理?注册中心挂了可以继续通信吗?说说一次rpc请求的流程? 2、面试官心里分析 MQ、ES、Redis、Dubbo,上来先问你一些思考的问题,原理(kafka高可用架构原理、es分布式架构原理、redis线程模型原理、Dubbo工作原理),生产环境里可能会碰到的一些问题(每种技术引入之后生产环境都可能会碰到一些问题),系统设计(设计MQ,设计搜索引擎,设计一个缓存,设计rpc框架), 当然比如说,hard面试官,死扣,结合项目死扣细节,百度(深入底层,基础性),阿里(结合项目死扣细节,扣很深的技术底层),小米(数据结构和算法)。 那既然开始聊分布式系统了,自然重点先聊聊dubbo了,毕竟dubbo是目前事实上大部分公司的分布式系统的rpc框架标准,基于dubbo也可以构建一整套的微服务架构。但是需要自己大量开发。 当然去年开始spring cloud非常火,现在大量的公司开始转向spring cloud了,spring cloud人家毕竟是微服务架构的全家桶式的这么一个东西。但是因为很多公司还在用dubbo,所以dubbo肯定会是目前面试的重点,何况人家dubbo现在重启开源社区维护了,未来应该也还是有一定市场和地位的。 既然聊dubbo,那肯定是先从dubbo原理开始聊了,你先说说dubbo支撑rpc分布式调用的架构是啥

HTTP协议篇(一):多路复用、数据流

浪子不回头ぞ 提交于 2019-12-10 04:39:00
1.管道机制、多路复用 1.1 管道机制(Pipelining) HTTP 1.1 引入了管道机制(Pipelining),即客户端可通过同一个TCP连接同时发送多个请求。如果客户端需要请求两个资源,以前的做法是在同一个TCP连接里面,先发送A请求,然后等待服务器做出回应,收到后再发出B请求;而管道机制则允许浏览器同时发出A请求和B请求,但是服务器还是按照顺序,先回应A请求,完成后再回应B请求。 1.2 多路复用(Multiplexing) 虽然 HTTP 1.1 默认启用长TCP连接,但所有的请求-响应都是按序进行的(这里的长连接可理解成半双工协议。即便是HTTP 1.1引入了管道机制,也是如此)。复用同一个TCP连接期间,即便是通过管道同时发送了多个请求,服务端也是按请求的顺序依次给出响应的;而客户端在未收到之前所发出所有请求的响应之前,将会阻塞后面的请求(排队等待),这称为"队头堵塞"(Head-of-line blocking)。 HTTP/2复用TCP连接则不同,虽然依然遵循请求-响应模式,但客户端发送多个请求和服务端给出多个响应的顺序不受限制,这样既避免了"队头堵塞",又能更快获取响应。在复用同一个TCP连接时,服务器同时(或先后)收到了A、B两个请求,先回应A请求,但由于处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后

微信扫描二维码登录网页的原理

社会主义新天地 提交于 2019-12-10 04:23:45
1.微信扫描二维码登录网页过程 [电脑] 打开 http://wx.qq.com ,得到二维码; [手机] 手机登录微信,点开扫一扫,扫描PC端二维码,并且扫描成功; [电脑] 手机扫描成功后,提示“登录网页版微信”;网页上显示“成功扫描 请在手机点击确认以登录”; [手机] 手机端点击“登录网页版微信”,网页跳转到用户的微信操作界面; 2.微信扫描二维码登录网页的原理 1. 每次打开微信网页版的时候,都会生成一个含有唯一 uid 的二维码,而且每次刷新后都会改变。这样可以保证一个 uid 只可以绑定一个账号和密码,确定登录用户的唯一性。可以通过手机上的UC浏览器提供的扫码功能查看二维码里面的信息,但并不会自动打开该地址, 微信客户端针对 http://weixin.qq.com/x/ 开头的地址做了特殊处理,会自动获取相关信息并提示确认。 在手机版微信访问这个页面进行确认时,Server已经同时获得了客户端信息,并通过之前保持的长连接告知浏览器。 返回的唯一 id,目的是为了识别用户身份,而且实际上打开这个页面的时候浏览器已经和 Server 创建了一个长连接等待确认信息。 查看 http://wx.qq.com 的源码可以看到,这个页面在加载完毕时,也已经把很多登录后才需要的相关资源都预先加载进来了,所以长连接等待登录用户得到确认后展示用户信息的速度很快