协议

如何实施开源协议,以及如何遵守开源协议的要求

网上有很多开源协议的介绍,但是很少有说明如何在你自己开发的软件中使用开源协议,保护自己的代码;以及当你使用别人开源项目时,如何遵守开源协议里面约定的行为。文本从github上找了些项目举例描述下这2个问题。至于各个协议的具体说明网上一搜一大堆,本文不再描述。…

    

internet协议入门

前言

劳于读书,逸于作文。

博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析了不同网络协议的传送的数据和传送的方式。而此篇博客则用来作为一个大纲式的内容,按照层级划分,逐步介绍各层级的协议以及他们所起的作用。若有错误之处,欢迎批评指正。…

        

主程的晋升攻略(4):TCP、消息分包和协议设计

在《主程的晋升攻略(3):IP、DNS和CDN》中,一次网络请求经过DNS解析知道了目的IP,现在就要发出网络包,这里我们说一说TCP的相关话题。

TCP是一种流式协议

讲网络编程的教科书一般都会对TCP的可靠传输,api用法做详细说明,但对于TCP是一种流式协议讲解的不多,但这背后隐藏着很重要的一个知识点。先做个名词定义方便交流,这里的“消息”是指应用层的一个完整的协议包。

流式协议的特点是什么?就像流水连续不断那样,消息之间没有边界。例如send了3条消息,分别是100字节、50字节、80字节,recv时可能收到的是230字节,就是说一次recv收到了3条消息,需要应用逻辑自己对recv到的数据进行分析,得出完整的消息。能一次recv到多个消息,也可能一次recv到一个半消息或半个消息,都是有可能的,这就是流式协议的特点。有的文章讲的粘包也是这个概念。…