Jump to Navigation

Network

网络,互联网

115syncd项目介绍

115网盘是个比较好用的网盘,提供比较大的磁盘容量。

该115syncd项目主要提供以下功能,
自动模拟登陆115网盘api。
以服务模式运行。
指定本地目录以及对应的115网盘目录。
监控指定目录,如有目录或者文件发生变化,则自动上传到115网盘对应的目录。
指定目录对可配置多个。
本地目录与网盘目录能够保持一到,在缺少目录时自动创建。
支持任务队列式并发上传控制,默认3个并发上传。
文件上传采用POST协议方式,有上传文件大小限制。
能够自动过滤掉一些指定的临时文件。
能够实现仅上传模式功能,即本地删除而网盘不删除,这样保持本地空间远小于网盘空间。
反复修改重复上传的文件,根据哈希去重,只保留最近一次上传的文件。

该实现使用PyQt5,在linux系统上安装使用都非常简便。
项目地址:https://github.com/kitech/115syncd

ToxCore 客户端基本处理流程图

每一个使用toxcore的程序,都可以算是一个toxcore客户端程序。
而这个客户端大都有一个共有的处理流程,以下提供一个简单流程图,仅供参考:

ToxCore API本次升级总结

在2015年早些时候,ToxCore完成了一次比较大的升级API升级,影响到所有的使用原API的程序。
最近又拾起来了toxcore项目,在些基础上做些项目与研究,在升级API的过程中整理了一下,公布在之儿。如有不完善不正确之处,请指正。

这次api从外面看主要是命名的规范化的提升,其中也不乏大的改动,像文件API部分,有API的增删。

cgo封装C库总结

简介

cgo是go语言提供的一种与C语言相互调用的方式。

cgo能够让开发者直接在.go源代码文件中嵌入C代码。

在嵌入的C代码比较长的时候,还允许在分离.c文件中编写C代码。

cgo的基本处理机制是,根据特定格式的cgo指令,解析出C源代码和编译参数,

调用gcc编译并把结构合并到最终二进制程序中。

带来的问题,编译速度慢了很多。 两种模型,

cgo用法:

声明使用cgo

在.go文件中,插入这么几行,表示开启cgo功能:

/*

*/

import "C"

其实这并不是一个简单的开关,而是特定的语法序列标识,当go解析器遇到该语法序列时,

自动进入cgo模式,处理与cgo有关的功能。

注意,这个注释确实是注释,并没有写错。在这个注释段能够添加C源代码。

一般把这个块叫做“C语言嵌入注释块”。

还有一个需要注意的是在注释结尾处,要紧跟着import "C"语句,否则这块注释会被当作注释忽略了。

Tox API - 开始C API

开始C API

现在给出一个简单的C客户端程序的基本结构,后面详细解释每个重要的部分。

Category:

Tox核心概念

核心概念

Tox ID

public key

以下是一个典型Tox ID,你可以把他给一个好友。它是一个public key,nospan 值和校验值连接起来的十六进制格式字符串。最终结果就是上显示的76个字符的字符串。 public key bd

Public Key

public key 是由NaCl的crypto_box_keypair函数生成的。

它的介绍在这儿 。在当前的NaCl实现中,它是32个字节(64个16进制字符)。

nospan值

nospan值是一个随机生成的追加到public key上的数字。一个未带nospan值的好友请求会被忽略。

Category:

当前环境使用IPv6的完全解决方案

目前IPv6已经有小范围的应用。
但国内除了几所高校有IPv6网络之外,互联网上的使用范围还非常少。
现在的操作系统都已经支持IPv6协议,可以使用标准的6over4协议,
实现现在就用IPv6的功能。
现在的网络软件也大多数支持IPv6协议,不过优先支持使用IPv4地址。

除了操作系统之外,还需要DNS的支持,服务器的支持。

这里讨论一种可尽量使用 IPv6协议的客户端系统配置。
这一配置包括以下几项:
1、查看当前的操作系统是否支持IPv6并开启IPv6
2、6over4 隧道的实现程序安装
3、支持IPv6的公用DNS服务器
4、本地DNS缓存服务器,dnsmasq
5、本地DNS劫持服务器,kdns
6、软件的IPv6参数
7、测试与测试工具
8、注意事项

总结P2P程序中UDP穿透难点

最难的一种NAT,这是从对称型NAT演变过来折和中NAT,叫做动态类型NAT。

使用traceroute/tcptraceroute确定动态NAT网络到目标主机的出口IP,为对方的NAT打洞提供目标IP信息。

有一种动态类型的NAT,这种NAT的网络出口IP是一个出口IP池中选出来的。

Category:

自己实现类RUDP协议

UDP协议是一种无状态,不可靠协议,这个描述指的是UDP包之间没有前后顺序关系,也不一定所有的包都能达到目标地址。
在UDP协议由于附带额外包数据小,不需要做包验证等特点,UDP协议效率还是比较高的。
所以,RFC结合TCP和UDP两种协议的优点,制订了RUDP协议标准。

RUDP的核心部分包括,加入包编号,包重传,包确认机制,模拟连接操作与断开连接操作。
标准RUDP协议为UDP包加了8字段的状态数据。

我在实现可靠UDP的时候,参考这RFC RUDP协议同标准,实现了包编号,包重传,包确认机制,
但没有实现模拟连接操作与断开操作。

之所以没有实现模拟三次握手连接,是发现连接包与其他数据包发送接收方式并不一致,
需要额外的方式保证连接包的可靠性。因为连接包参与编号和重传的话,控制上比较复杂,
还不如直接发送数据包,加上编号和和重传、确认,系统的可靠性就已经非常好了。

对stun/turn协议的认识与理解过程笔记

stun协议的全称是 Session Traversal Utilities for NAT,NAT会话传输应用程序

页面

订阅 RSS - Network


Main menu 2

by Dr. Radut