python-高级编程-04
【http协议】
断句 :
由于tcp协议是基于流的传输协议,也就是在传输层本身是做不到断句的功能的,
于是断句需要在应用层协议实现。
最初用回车和换行来标示一套命令的结束 如果信息里面有 \r\n的情况呢
可以通过转义来解决这个问题,但是转义工作量太大,而且会增加传输大小,
因为转义字符一般情况比原始字符更大。而且这样也会有一个问题,如果接受到了
数据了,我们需要转义了第三个字符,吧 %20 转换成 = 那么在内存里buffer里
%20后面的所有字符都要向前移动。
当然后来在smtp的协议中有人提出可以用base64进行编码,这样的话就能避免上述问题,
但是使用base64会增加传输数据本身的内容。就会膨胀1/3。
但是如果在http协议中也使用这种东西,那么就太浪费带宽了,
于是在http协议里面,固定增加一个 Content-length字段 用来表示后续数据的大小
Header和content用 \r\n\r\n分割,这样就解决了问题。
但是随着互联网的日益发达,有很多情况使用这种方式不能解决问题,比如在线直播,
于是来提供了trunk模式,就是将内容分段
【长连接和短连接,网络推送】
如果我们要实现一个类似微信易一样的app 怎么实现推送机制
我们有两种选择
1 Client轮训Server端,类似每隔个n秒 Client 去Server上面查询
2 Server端主动联系Clinet端 有效期的情况下Server通知Client端 ,让Client去取
然而第一种方法是一个两难的问题
n大了 就比较节省资源,但是消息的实时性比较低
n小了 实时性比较高 但是比较浪费资源
而第二种方法也有自己的问题,
大部分的NAT的实现,会导致局域网用户可以主动想Interbet发起TCP连接,但是局域网外部的ip不可以想内部ip主动发起连接。
在网络层心跳中,心跳时间过长,两分钟,那么我们应该在应用层再加一次心跳。这种情况就是为了防止网络的不稳定。
长连接主要解决的问题是 tcp握手连接的开销。
python-高级编程-04的更多相关文章
- Python网络编程04 /recv工作原理、展示收发问题、粘包现象
Python网络编程04 /recv工作原理.展示收发问题.粘包现象 目录 Python网络编程04 /recv工作原理.展示收发问题.粘包现象 1. recv工作原理 2. 展示收发问题示例 发多次 ...
- python高级编程:有用的设计模式3
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"&qu ...
- python高级编程:有用的设计模式2
# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一 ...
- python高级编程:有用的设计模式1
# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言 ...
- python高级编程技巧
由python高级编程处学习 http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr ...
- python高级编程之选择好名称:完
由于时间关系,python高级编程不在放在这边进行学习了,如果需要的朋友可以看下面的网盘进行下载 # # -*- coding: utf-8 -*- # # python:2.x # __author ...
- python高级编程读书笔记(一)
python高级编程读书笔记(一) python 高级编程读书笔记,记录一下基础和高级用法 python2和python3兼容处理 使用sys模块使程序python2和python3兼容 import ...
- python高级编程之列表推导式
1. 一个简单的例子 在Python中,如果我们想修改列表中所有元素的值,可以使用 for 循环语句来实现. 例如,将一个列表中的每个元素都替换为它的平方: >>> L = [1, ...
- Python高级编程之生成器(Generator)与coroutine(二):coroutine介绍
原创作品,转载请注明出处:点我 上一篇文章Python高级编程之生成器(Generator)与coroutine(一):Generator中,我们介绍了什么是Generator,以及写了几个使用Gen ...
- Python高级编程-Python一切皆对象
Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 ""&qu ...
随机推荐
- 关于ECSHOP中sql注入漏洞修复
标签:ecshop sql注入漏洞修复 公司部署了一个ecshop网站用于做网上商城使用,部署在阿里云服务器上,第二天收到阿里云控制台发来的告警信息,发现ecshop网站目录下文件sql注入漏洞以及程 ...
- Vmware Player 比较
.wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertica ...
- (笔记)快速入门PADS logic 到 layout
以前从未接触过画板,先是硬着头皮边学边操作<Layout2007中文教程之PADS_Logic>,刚好在中秋节前把这个教程从头到尾通学了一遍,随后感觉这个教程有了方方面面但没有工程的系统性 ...
- Android(java)学习笔记122:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1)有序广播> 接受者有优先级, ...
- 3. Netbackup 7.6客户端的安装(windows/linux)
1 客户端的安装 1.1 Windows客户端安装 1.1.1 客户端hosts修改 windows xp/2003/vista/2008/7/8用户HOSTS文件是在“c:\windows\syst ...
- JS编程规范指南
原文:github.com/ryanmcdermott/clean-code-javascript 说明:本文翻译自 github 上的一个项目,只取部分精华. 一.变量 用有意义且常用的单词命名 / ...
- Nat Nanotechnol | 朱涛/陈春英等合作发现碳纳米管呼吸暴露后的延迟毒性导致小鼠原位乳腺肿瘤的多发性广泛转移
碳纳米管(Carbon nanotube, CNT)是重要的一维纳米材料,由于其良好的力学.电学和化学性能,可用作超强纤维.隐身材料.大功率超级电容器.传感器等,在纳米材料.信息.光电.能源.传感及生 ...
- java基础—面向对象2
一.JAVA类的定义
- db2的定时备份
定时任务: db2.bat db2cmd -i -w db2_backup.bat exit db2_backup.bat db2 connect to TEST db2 force applicat ...
- Linux运维笔记--第三部
第三部 3. Linux系统文件重要知识初步讲解 # ls -lhi (i: inode,每个文件前的数字代表文件身份ID:h: human 人类可读) 显示:25091 -rw-r--r-- ...