第一个问题:我为什么学习他
程序员的自我修养—链接、装载与库p88
第二个问题:这个太难了,我不知道如何掌握
https://app.diagrams.net/#G1PhnRks5A6CWAfC_PciixgG7DQYyq6nZv
从htttp协议我没看出有效信息,哪里有扩展了,哪里有分割了。
htttp我整体在用哪里需要学
消息:key/value方式传递
关键部分
应用层协议考虑拆分数据情况
字段代表了内容的类型:
消息头里必然有对消息体 类型,范围 大小描述
看到“TCP粘包”这个专有名词,我表示极度震惊。 连夜打车回到家里,战战兢兢翻开《计算机网络》,拿着放大镜仔细看了半夜,也没看到“粘包”两个字。我的后背不觉地渗出致密的汗水,双手止不住地发抖。匆忙打开电脑,一篇篇地翻着论文,试图寻找关于这个词的信息。可眼看天就要亮了,我依旧一无所获。 我失望的躺在床上,满脑子都是“粘包,粘包,粘包!”,横竖睡不着,不得已打开了知乎,写下了一个问题“究竟什么是TCP粘包”。不一会儿答案就如雪花儿般涌了出来,每一片雪花上都写着一句话“TCP没有粘包”。 我颤抖的双手终于停了下来,一股热流从我心底涌到泪腺。啊,原来我并不孤独。
我用json不就行了,我平时都这样解析的
http://www.cppblog.com/noflybird/archive/2014/05/26/207100.html
为什么使用.proto,这又什么用
Google Protobuf 本身具有很强的反射(reflection)功能,可以根据 type name 创建具体类型的 Message 对象。
RTMP(Real-Time Messaging Protocol, 实时消息传输协议)
是 Adobe 开发的一种用于实时数据通信的应用层网络协议,
基于 TCP 传输。
RTMFP 是 RTMP 基于 UDP 传输的一种协议,用于 P2P 通信。
该协议主要用于解决多媒体数据传输流中的多路复用和分包问题
RTMP 协议中的分块 (Chunk) 可以用来实现流多路复用和分包,其中块大小是可以设置的。
显然,将消息分块传输会带来额外开销,所以需要尽可能减少额外开销。
块越小可能开销越大,块越大可能延迟越大(某些重要优先级的消息到达也缓慢)。
RTMP 消息格式:消息头和负载。 消息头包括消息类型 (Msg Type,第 1-7 位表示)、负载长度 (Payload Length)、消息时间戳 (Timestamp)、 消息流
对于多路复用和分包的处理,RTMP 协议在传输时会用 RTMP Message(消息)来封装数据,而每一条 Message 在发送端会被划分为一个或多个带有 Message ID 的 Chunk(分块)。接收端根据约定格式和 ID 将 Message 还原。
rtmp 推流过程中,很容易出现延迟较大的情况(虽然名字上叫实时协议,但延迟高达 10s 不是梦啊......)。 这主要来源于两部分——网络抖动和 TCP 重传(实际上工程应用中, 还有音视频采集和编码模块的不稳定性、硬件设备受限等各种因素)。 重连策略 RTMP 默认的超时时间是比较长的,在实际应用场景中一般无法忍受。 同样需要开发人员根据业务需求,修改配置并优化重连策略。 主要是针对移动网络下网络断开、延迟过大等情况,需要开发人员按需重连。
RTMP 传输媒体数据的过程中,发送端首先把媒体数据封装成消息,然后把消息分割成消息块,
最后将分割后的消息块通过 TCP 协议发送出去。
接收端在通过 TCP 协议收到数据后,
首先把消息块重新组合成消息,
然后通过对消息进行解封装处理就可以恢复出媒体数据。
到这里可以了,这个话题很大,这里重点来了
Google Protobuf 本身具有很强的反射(reflection)功能,可以根据 type name 创建具体类型的 Message 对象。
问题:如何对一个类进行编解码?
陈硕的文章《一种自动反射消息类型的 Google Protobuf 网络传输方案》中对 GPB 的反射机制做了详细的分析和源码解读
这里重点:
第三个问题:原来平时我一直在用(没有完成,后续)
参考书籍
请在百度网盘下载,关注回复 2020102 免费获取
https://github.com/chenshuo/muduo【必须看】
https://www.cnblogs.com/wade-luffy/p/6165671.html【必须看】
https://www.zhihu.com/question/20210025 【必须看】
https://maimai.cn/web/gossip_detail?gid=28471840&egid=3a2b1250532511eb86de246e96b48088
https://blog.csdn.net/solstice/article/details/6300108
https://www.jianshu.com/p/a176488863f2
https://mp.weixin.qq.com/s/FwxPnggx565sILSzLwltQw
https://docs.google.com/document/d/1gY9-YNDNAB1eip-RTPbqphgySwSNSDHLq9D5Bty4FSU/edit