![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
章志强
资深软件工程师,C/C++全栈技术专家,证券金融科技行业专家,mdb、zqdb、mytrader作者
展开
-
Socks4协议
SOCKS4协议主要是如下几个RFC标准:http://ftp.icm.edu.pl/packages/socks/socks4/SOCKS4.protocolhttp://www.rfc-editor.org/rfc/rfc1928.txthttp://www.smartftp.com/Products/SmartFTP/RFC/socks4a.protocolSOCKS 4只支持TCP转发...转载 2019-12-11 09:16:36 · 7787 阅读 · 0 评论 -
(RFC1928)SOCKS V5
SOCKS V5(RFC1928 SOCKS Protocol Version 5)本备忘录状态:本文档讲述了一种Internet社区的Internet标准跟踪协议,它需要进一步进行讨论和建议以得到改进。请参考最新版的“Internet正式协议标准” (STD1)来获得本协议的标准化程度和状态。本备忘录的发布不受任何限制。知识背景这个备忘录描述了从同一协议的前一版本(版本4[1])发展...转载 2019-12-11 09:13:19 · 348 阅读 · 0 评论 -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
闲话少说,我们先看一下技术背景:Internet的迅速发展以及IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。NAT设备允许处于同一NAT后的多台主机共享一个公网(本文将处于同一NAT后的网络称为私网,处于NAT前的网络称为公网) IP 地址。一个私网IP 地址通过NAT设备与公网的其他主机通信。公网和私网IP地址域转载 2012-12-02 11:33:43 · 995 阅读 · 0 评论 -
TCP/UDP穿越NAT实例
实例:UDP穿越NAT: A登录Server,NAT A分配端口11000,Server得到A的地址为100.10.10.10:11000 B登录Server,NAT B分配端口22000,Server得到B的地址为200.20.20.20:22000 此时B会把直接来自A的包丢弃,所以要在NAT B上打一个方向为A的洞,那么A就可以向200.20.20.20:220转载 2012-12-02 16:21:49 · 1346 阅读 · 0 评论 -
[转]UDP/TCP穿越NAT的P2P通信方法研究(UDP/TCP打洞 Hole Punching)
内容概述:在p2p通信领域中,由NAT(Network Address Translation,网络地址转换)引起的问题已经众所周知了,它会导致在NAT内部的p2p客户端在无论以何种有效的公网ip都无法访问的问题。虽然目前已经发展出多种穿越NAT的技术,但相关的技术文档却很少,用来证明这些技术的稳定性和优点的实际数据更少。本文的目的在于描述和分析在实际中运用得最广泛、最可靠同时也是最简单的一种NA转载 2012-12-02 11:32:04 · 798 阅读 · 0 评论 -
HTTP长连接
一般服务器都支持长连接.只是通过代理出去的时候,要带上代理的长连接头,这个头不是RFC标准,但是大部分服务器都支持.如果是直接用SOCKET"Connection: Keep-Alive\r\n""Proxy-Connection: Keep-Alive\r\n"如果是用wininetHttpOpenRequest(Hc,"POST",NULL,NULL原创 2013-01-14 09:36:06 · 767 阅读 · 0 评论 -
COOKIE格式与读写相关
1、Cookie文件的实质Cookie实际上是Web服务端与客户端(典型的是浏览器)交互时彼此传递的一部分内容,内容可以是任意的,但要在允许的长度范围之内。客户端会将它保存在本地机器上(如IE便会保存在本地的一个txt文件中),由客户端程序对其进行管理,过期的Cookie会自动删除。每当客户端访问某个域下某个目录中的网页时,便会将保存在本地并且属于那个域下对应目录的有效Cookie信息转载 2013-01-29 16:02:16 · 926 阅读 · 0 评论 -
UILite——C++类库(XLib非界面功能库+UI和DirectUI库)简介
UILite是一款继承自WTL以及和界面无关的功能库的合集,能够生成很小的可执行文件。如果你也象我一样希望自己的程序又小又快的话,UILite就是你的选择。当然,我们还要克服一些障碍: 1) ATL/WTL样式的模板类初看起来有点怪异 2) 没有类向导的支持,所以要手工处理所有的消息映射。 3) MSDN没有正式的文档支持,你现在看到的就是UILite的最权威的文档4原创 2013-06-14 13:29:48 · 4391 阅读 · 5 评论 -
常用网络命令
如果你玩过路由器的话,就知道路由器里面那些很好玩的命令缩写。例如,"sh int" 的意思是 "show interface"。 现在 Windows 2000 也有了类似界面的工具,叫做 netsh。 我们在 Windows 2000 的 cmd shell 下,输入 netsh就出来:netsh> 提示符,输入 int ip 就显示:interface ip> 然后输入 dump ,我转载 2013-06-24 14:15:02 · 829 阅读 · 0 评论 -
Internet API 使用代理
1. 相关函数: HINTERNET WINAPI InternetOpen( LPCTSTR lpszAgent, DWORD dwAccessType, LPCTSTR lpszProxy, LPCTSTR lpszProxyBypass, DWORD dwFlags); BOOL WINAPI InternetSe转载 2013-06-26 15:32:21 · 2006 阅读 · 0 评论 -
Winet API 支持HTTPP/SOCKS代理
源程序1、Winet API 支持使用IE代理、或者不使用代理、或者使用自定义代理三种方式。2、使用自定义代理的话,支持HTTP代理,SOCKS代理,但是SOCKS代理不知支持用户名密码,HTTP代理支持3、这里写了一个使用Winet API写的测试程序,测试Winet API对各种代理的支持,截图如下:4、下面是程序源码:void GetLastErrorMe原创 2013-06-27 14:22:34 · 3149 阅读 · 0 评论 -
获取IE默认代理配置
BOOL GetWinetProxy(LPSTR lpszProxy, UINT nProxyLen){unsigned long nSize = 4096;char szBuf[4096] = { 0 };INTERNET_PROXY_INFO* pProxyInfo = (INTERNET_PROXY_INFO*)szBuf;i原创 2013-07-04 09:50:16 · 1941 阅读 · 0 评论 -
综合交易平台API技术开发指南
综合交易平台API技术开发指南 第一章CTP 产品特性 1. 如何获取综合交易平台(Comprehensive Transaction Platform 以下简称 CTP)证券(期货)交易及行情 API 发布包、文档以及开发实例? 【答:】所有 CTP 相关资料都在 CTP_API 开发技术群(59216315)及 CTP_API 开发技术2 群(102497247)群转载 2015-04-22 11:04:54 · 8096 阅读 · 0 评论 -
高速行情交易系统
中国现在处于深刻变革的时代,一切变化都是围绕着人和经济的变化,其中最重要的变化莫过于金融系统的变化。中国现在面临着经济全球化,人民币国际化,国内金融行业全面融入国际市场的大环境下,对于从事金融行业的从业人员来说巨大的机遇。金融行业是一个很大的概念,其中证券交易是金融行业绕不开的领域,中国现在有1亿多股民、几百万期货从业者,其他金融从业也是无数,可以说证券交易已经融入了人民的生活之中了。原创 2015-11-02 15:56:44 · 3107 阅读 · 3 评论 -
Linux网络编程
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是转载 2015-12-23 10:23:16 · 681 阅读 · 0 评论 -
Linux的socket IO模型
前言之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型;老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们小区门口的收发室里。这和Socket模型非常类似。下面就以老陈接收信件为例讲解linux的 Socket I/O模型。一、同步阻塞模型老陈的女儿转载 2015-12-23 10:43:42 · 956 阅读 · 0 评论 -
Linux中select、poll和epoll
在Linux Socket服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select、poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加入了epoll之后,在高性能服务器领域得到广泛的应用,现在比较出名的nginx就是使用epoll来实现I/O复用支持高并发,目前在高并 发的场景下,nginx越来越收到欢迎。这里有个文章参考。Ngin转载 2015-12-23 10:46:23 · 743 阅读 · 0 评论 -
用OpenSSL编写SSL,TLS程序 - Win32版
一、简介:SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输 不 被监听,伪造和窜改.转载 2016-03-02 14:03:14 · 869 阅读 · 0 评论 -
非阻塞/异步(epoll) openssl
前段时间在自己的异步网络框架handy中添加openssl的支持,当时在网络上搜索了半天也没有找到很好的例子,后来自己慢慢的摸索,耗费不少时间,终于搞定。因此把相关的资料整理一下,并给出简单的例子,让后学者可以少费些力气。同步的openssl调用网上已经有许多的例子,这里就不再详细介绍,大家也可以直接读源代码:同步客户端:https://github.com/yedf/openss转载 2016-03-02 14:21:16 · 2061 阅读 · 0 评论 -
Boost Asio介绍
一 简介 Boost Asio ( asynchronous input and output)关注异步输入输出。Boost Asio库提供了平台无关性的异步数据处理能力(当然它也支持同步数据处理)。一般的数据传输过程需要通过函数的返回值来判断数据传输是否成功。Boost Asio将数据传输分为两个独立的步骤:采用异步任务的方式开始 数据传输。将传输结果通知调用端转载 2016-03-02 14:38:38 · 643 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程
OpenSSL API 的文档有些含糊不清。因为还没有多少关于 OpenSSL 使用的教程,所以对初学者来说,在 应用程序中使用它可能会有一些困难。那么怎样才能使用 OpenSSL 实现一个基本的安全连接呢? 本教程将帮助您解决这个问题。学习如何实现 OpenSSL 的困难部分在于其文档的不完全。不完全的 API 文档通常会妨碍开发人员 使用该 API,而这通常意味着它注定要失败。但 Op转载 2016-03-02 18:07:53 · 947 阅读 · 0 评论 -
Openssl之BIO系列
1.BIO-抽象的IO接口其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不同实现函数控制,我初步估计了一下,大概有14种,包括4种filter型和10种source/sink型。BIO是在底层覆盖了许多类型I/O接口细节的一种应用接口,如果你在程序中使用BIO,那么就可以和SSL、非加密的网络以及文件IO进行透明的连接。有两种不通的BIO接口,一种是sour转载 2016-03-03 10:30:46 · 16570 阅读 · 1 评论 -
Boost.Asio的使用技巧
最近尝试使用了一下Boost.Asio,不知道是否因为各大公司都有自己相对成熟的网络库的缘故,网络上Asio相关的资料实在不多,而且很多翻来覆去就是那几个简单的示例,所以打算自己小结一下。总的来说Boost.Asio是个非常易用的库,避免了你在各种系统底层API之间的挣扎,让你可以非常迅速的开发出高并发的网络服务器程序。基本概念asio基于两个概念:I/O服务,抽象了操转载 2016-03-03 13:16:03 · 803 阅读 · 0 评论 -
使用API判断网络是否连通(InternetGetConnectedState / IsNetworkAlive)
// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "test.h"#include #include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic转载 2016-05-26 09:52:05 · 6263 阅读 · 1 评论 -
nginx openssl 的集成代码流程
说明:一、这里个人测试完全和nginx处理流程和返回的数据完全一致二、这里做了只是做了简要抽取,如果作为服务器,能实现这些步骤整体ssl处理应该没有任何问题。三、这里包含三个文件:NGXSSL.c 为主文件,source.h为头文件,source.c为部分代码文件。source.h点击(此处)折叠或打开/* * source.转载 2016-06-02 12:10:53 · 1981 阅读 · 0 评论 -
SSL握手通信详解及linux下c/c++ SSL Socket代码举例
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。 安全证书既包含了用于加密数据的密钥,又包含了用于证实身份的数字签名。安全证书采用公钥加密技术。公钥加密是指使用一对非对称的密钥进行加密或解密。每一对密钥由公钥转载 2016-06-02 12:12:09 · 7476 阅读 · 1 评论 -
Linux epoll详解
Linux epoll详解一、什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好转载 2016-07-11 14:39:24 · 780 阅读 · 0 评论 -
自由网络-去中心化分布式网络
去中心化分布式网络的核心架构技术:1、DHT技术2、区块链技术通过DHT技术和区块链技术实现分布式数据安全可靠存储服务。实现DHT和区块链核心架构需要用到的技术细节:1、基础网络技术2、UPNP、NATServer,组播等节点技术3、分布式HASH技术4、安全密码技术5、区块链存储技术实现了自由网络的核心技术之后,就可以在这个网络上实现自由网原创 2016-08-04 10:04:32 · 4000 阅读 · 0 评论 -
Winsock中名称解析和地址解析
随着IPv6添加了两个既能解析IPv4又能解析IPv6的函数:getnameinfo和getaddrinfo。这两个函数定义在头文件WS2TCPIP.H。1.getaddrinfo其提供独立于协议的名称解析。其定义如下:[cpp] view plain copyint getaddrinfo( const char FAR转载 2016-08-01 18:32:10 · 889 阅读 · 0 评论 -
使用多点传送
使用多点传送只有类型为 SOCK_DGRAM 和 SOCK_RAW 的 AF_INET6 和 AF_INET 套接字支持 IP 多点传送。IP 多点传送仅在接口驱动程序支持多点传送的子网中受到支持。发送 IPv4 多点传送数据报要发送多点传送数据报,请在 224.0.0.0 到 239.255.255.255 的范围中指定一个 IP 多点传送地址作为 sendto(转载 2016-09-09 15:12:01 · 2128 阅读 · 0 评论 -
TCP通信流程解析
B/S通信简述整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet的核心协议,HTTP协议是比TCP更高层次的应用层协议。HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。浏览器(转载 2016-08-31 12:18:54 · 3058 阅读 · 1 评论 -
epoll/et例子
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #defineMAX_EVENTS 10 #definePORT 8080 //设置转载 2016-09-06 15:24:45 · 559 阅读 · 0 评论 -
TCP连接的状态详解以及故障排查
我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容)1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lsof -i:port 可以检测到打开套接字的状况3)、 sar -n SOCK 查看tcp创建的连接数4)、tcpdum转载 2016-09-08 10:42:00 · 1915 阅读 · 0 评论 -
获取MAC地址大全
获取MAC地址有很多方法,这里大概列举7种方法:方法1:解析命令ipconfig /allBOOL GetMacByCmd(LPSTR lpszString, int nMaxStringLen){ //命令行输出缓冲大小 const long MAX_COMMAND_SIZE = 10000; //获取MAC命令行 WCHAR szFetCmd[] = L"ipconf原创 2016-10-24 14:13:09 · 30593 阅读 · 2 评论 -
关于TCP连接时间
对于TCP连接需要多长时间,可以分几种情况,情况1、对方IP和端口都不存在,这时由于路由表找不到对应的主机,需要不停的往外路由,会很慢,如果还要dns解析就会更慢,基本只能等TCP连接超时情况2、对方IP存在,端口不存在,这时依赖对方IP和本地主机的物理位置和网络环境了,一般情况下都会立马返回连接错误情况3、对方IP存在,端口存在,这时也是同情况2类似,依赖当时的网络环境,一般情况下都原创 2016-10-24 14:30:11 · 6620 阅读 · 0 评论 -
HTTP/1.1 100 Continue
使用HTTP/1.1协议的curl,发送一个请求,在post数据量超过1K的时候,接口会返回: HTTP/1.1 100 Continue HTTP/1.1 200 OK Date: Sat, 07 Dec 2013 10:09:11 GMT Server: Apache/2.2.24 (Unix) PHP/5.3.25 X-Powered-By: PHP/5.3.25转载 2016-11-04 17:48:50 · 5923 阅读 · 0 评论 -
制作自己的xmpp/gtalk客户端
本文作者的这个研究过程跟我的好像,我也在xmpp和libjingle之间辗转研究,用了xmppframework,libjingle,gloox,其中libjingle我是以前都研究过,所有基于它的P2P进行数据传输这部分没有问题,也是会遇到用户系统的问题,我们需要使用自己的用户系统,又不想建立自己的STUN,而xmppframework这个又实现的不完整而且也没什么资料,所以最后又使用gloox转载 2016-10-25 17:28:37 · 1035 阅读 · 0 评论 -
XMPP协议的原理介绍
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;转载 2016-10-26 13:10:00 · 424 阅读 · 0 评论 -
XMPP基本概念
概述XMPP是一个开放式的XML协议,设计用于准实时消息和出席信息以及请求-响应服务。通用的架构通常采用客户端服务器架构进行实现,其中客户端通过TCP方式使用XMPP访问服务器,服务器之间也采用TCP方式进行通信。xmpp通用架构服务器充当xmpp通信的一个智能抽象层,负责对受验证的客户端,服务器以及其他实体之间以xml流的形式的连接和会话进行管理。在这转载 2016-10-26 13:11:15 · 1250 阅读 · 0 评论 -
Get IT技能知识库 50个领域一键直达
成长的因素有很多,你知道知识图谱的作用吗?本文GET了当下最热门、最火爆的技术知识点,让你一库在手,技术全有!众所周知,我们的每个知识库都是邀请专家精心绘制图谱,并依据每个图谱的知识结构,筛选该技术分支知识点下的优质资源,经特邀编辑一一审核、精心挑选后,形成该技术点的知识库。节省开发者学习时间和成本,最大化的满足和解决大家的日常技能问题,开发者还可以在上面绘制专属于自己的技能图谱(图谱+干转载 2016-10-28 12:47:53 · 1387 阅读 · 0 评论