网络
文章平均质量分 90
一缕阳光a
(1)、从2018年8月开始从事分布式数据库内核开发工作,包括自研分布式分析型数据库OLAP、自研分布式数据库HTAP,根据开源数据库实现本公司集群型的OLTP产品,以及现在正在做的根据opengaussDB开发的HTAP类型数据库。
(2)、乐于专研,对分布式数据库有强烈的兴趣。
个人邮箱: zgaoq@163.com。
展开
-
网卡驱动收发包过程图解
网卡网卡工作在物理层和数据链路层,主要由PHY/MAC芯片、Tx/Rx FIFO、DMA等组成,其中网线通过变压器接PHY芯片、PHY芯片通过MII接MAC芯片、MAC芯片接PCI总线PHY芯片主要负责:CSMA/CD、模数转换、编解码、串并转换MAC芯片主要负责:1. 比特流和帧的转换:7字节的前导码Preamble和1字节的帧首定界符SFD2. CRC校验3. Packet Filtering:L2 Filtering、VLAN Filtering、Manageability /转载 2021-12-22 19:21:14 · 3408 阅读 · 0 评论 -
epoll原理详解
原文链接:https://blog.csdn.net/daaikuaichuan/article/details/83862311设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linu转载 2021-06-07 14:08:58 · 542 阅读 · 0 评论 -
谈谈CLOSE_WAIT
TCP 有很多连接状态,每一个都够聊十块钱儿的,比如我们以前讨论过TIME_WAIT和FIN_WAIT1,最近时不时听人提起 CLOSE_WAIT,感觉有必要梳理一下。所谓 CLOSE_WAIT,借用某位大牛的话来说应该倒过来叫做 WAIT_CLOSE,也就是说「等待关闭」,如果你还不理解其含义,可以看看 TCP 关闭连接时的图例:TCP Close不要被图中的 cli...转载 2020-04-23 21:03:09 · 1194 阅读 · 0 评论 -
服务器开发中网络数据分析与故障排查经验漫谈
转载大牛的文章: https://mp.weixin.qq.com/s/6ZmiKUz4ZQvwLXkzzBrFcg转载 2019-11-28 19:52:19 · 110 阅读 · 0 评论 -
如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
转载:http://blog.csdn.net/stpeace/article/details/41922115openssl的库的用法, 前面已经介绍了, 所以不再啰嗦, 直接给出代码:[cpp] view plain copy// openssl的库的用法, 前面已经介绍了, 所以不再啰嗦, 直接给出代码转载 2017-07-06 22:45:36 · 2267 阅读 · 0 评论 -
boost.asio防止恶意空连接的方法
转载:http://blog.csdn.net/educast/article/details/13167847网络服务器通常要应对一些意外情况,如空连接行为,指在遇到客户端连接后不进行任何操作,并很可能在大量空连接情况下导致服务器资源耗尽而无法工作。以下代码主要工作在连接后首次接收客户端消息的环节添加一个timer,并在指定时间后检测是否已接收到消息(验证转载 2017-07-06 19:43:20 · 475 阅读 · 0 评论 -
判断输入的IP地址是否合法
判断输入的IP地址是否合法,ip地址的值在0~255之间,先把输入的IP的地址转换为一个字符串。#define LEN (sizeof(xx)/sizeof(xx[0]))const char *xx[] = {"192.168.1.1", "10.0.0.1", "127.256.0.1", "iugerjiogjioe", "172.16,0.1", "4", "0"};c原创 2017-07-06 11:36:00 · 3910 阅读 · 0 评论 -
UDT源码剖析(六):UDT::socket()过程代码注释
调用路线UDT::socket()->CUDT::socket()->CUDTUnited::newSocket()1UDTSOCKET CUDT::socket(int af, int type, int)2{3 // 如果垃圾收集没启动原创 2017-07-02 19:00:03 · 478 阅读 · 0 评论 -
UDT源码剖析(五):UDT::cleanup()过程代码注释
调用路线UDT::cleanup()->CUDT::cleanup()->CUDTUnited::cleanup()1int CUDTUnited::cleanup()2{3 // 锁保护4原创 2017-07-02 18:55:13 · 525 阅读 · 0 评论 -
UDT源码剖析(四):UDT的GC线程相关过程代码注释
着UDT::Startup()的启动,GC线程也随之运行了。GC主要关注的就是UDTSocket的释放,下面我们来看看这个GC线程是怎么实现的。查看源代码打印帮助1#ifndef WIN322 void* CUDTUnited::garbageCollect(原创 2017-07-02 18:49:18 · 363 阅读 · 0 评论 -
UDT源码剖析(三):UDT::startup()过程代码注释
调用路线UDT::startup()->CUDT::startup()->CUDTUnited::startup()1int startup()2{3 return CUDT::startup();4原创 2017-07-02 18:39:08 · 482 阅读 · 0 评论 -
UDT源码剖析(二):UDT自带例程recvfile注释
这几天学习了UDT自带的例子,结合源码进行了测试如下:#ifndef WIN32 #include #include #else #include #include #endif#include #include #include #include #include using namespace std;原创 2017-07-02 18:24:17 · 753 阅读 · 0 评论 -
UDT源码剖析(一):UDT自带例程sendfile注释
#ifndef WIN32 #include #include #else #include #include #endif#include #include #include #include using namespace std;#ifndef WIN32void* sendfile(void*);#原创 2017-07-02 18:16:32 · 823 阅读 · 0 评论 -
UDT源代码下载链接
对UDT有兴趣的可以下载UDT对应的源码进行研究,下面给出了一个开源中国的连接:UDT最新源码下载地址:http://sourceforge.net/projects/udt/files/latest/download?source=directory.原创 2017-07-02 17:53:16 · 1118 阅读 · 0 评论 -
利用openssl来计算sha1, sha224, sha256, sha384, sha512
转载:http://blog.csdn.net/stpeace/article/details/42371079利用openssl来计算sha1, sha224, sha256, sha384, sha512,前提是已经配置了openssl的环境:代码如下:[cpp] view plain copy#inclu转载 2017-07-06 22:22:36 · 3086 阅读 · 0 评论 -
基于boost asio实现的支持ssl的通用socket框架
情景分析 现已存在一个可用稳定的异步客户端类http_client_base,该类基于boost asio实现了连接服务器,发送请求,获取响应和解析http数据等操作,该类的大致实现框架如下 1class http_client_base 2{ 3public: 4 http_client_base(boost::asio::io_service& i转载 2017-07-06 19:56:58 · 1893 阅读 · 0 评论 -
socket api中send()和recv()函数工作原理与要点
send()和recv()函数是网络编程中经常使用到的函数,下面详细的比较两者的不同之处send函数工作原理: send函数只负责将数据提交给协议层。 当调用该函数时,send先比较待发送数据的长度len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR; 如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲...原创 2018-03-15 17:49:39 · 3291 阅读 · 1 评论 -
Socket api接口--Send(),Recv()的长度问题
一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系统)的缓冲区,8k的数据由底层分片,而应用层看来只是一次发送。而windows的缓冲区经验值是4k。 Socket本身分为两种,流(TCP)和数据报(UDP),你的问题针对这两种不同使用而结论不一样。甚至还和你是用阻...原创 2018-03-15 17:31:44 · 2370 阅读 · 0 评论 -
socket buffer套接字缓存
最近公司在开发机器人与服务器调度端的通信时需要使用socket,因此找到了该文章作为深刻理解socket内部运作。Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据:供内核处理报文的额外数据,这些数...转载 2018-03-15 16:40:55 · 7313 阅读 · 0 评论 -
OpenSSL原理与实现
1. 概念 1.1. SSL(Secure Sockets Layer安全层套接字)/TLS(Transport Layer Security传输层套接字)。 最常见的应用是在网站安全方面,用于http数据传输的加密。 1.2. 安全的目标:保密性(confidentiality),完整性(integrity),可用性(availability)转载 2018-02-05 11:33:17 · 1755 阅读 · 0 评论 -
HTTP与HTTPS的安全性讨论
转载文章:http://blog.csdn.net/xifeijian/article/details/546679891、http为什么不安全?http协议属于明文传输协议,交互过程以及数据传输都没有进行加密,通信双方也没有进行任何认证,通信过程非常容易遭遇劫持、监听、篡改,严重情况下,会造成恶意的流量劫持等问题,甚至造成个人隐私泄露(比如银行卡卡号和密码泄露)等严重的安全问题。可以转载 2017-12-30 22:19:15 · 2718 阅读 · 0 评论 -
TCP协议-相关面试题
一、TCP协议简介一般问到TCP协议的时候 最常见的是TCP连接建立和断开的过程,也就是三次握手和四次挥手,两张图足矣。1.1 三次握手1.2 四次挥手二、常见面试题2.1 TCP连接阶段2.1.1 发送序号和确认序号问题例: TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请转载 2017-04-07 15:05:22 · 1249 阅读 · 0 评论 -
TCP通信过程大讨论
转载地址:http://www.cricode.com/3568.html本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便转载 2017-08-10 20:27:11 · 629 阅读 · 0 评论 -
几种常用加密算法比较
由于计算机软件的非法复制,通信的泄密、数据安全受到威胁,解密及盗版问题日益严重,甚至引发国际争端,所以在信息安全技术中,加密技术占有不可替代的位置,因此对信息加密技术和加密手段的研究与开发,受到各国计算机界的重视,发展日新月异。现在我们就几种常用的加密算法给大家比较一下。几种常用加密算法比较DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是转载 2017-07-06 23:11:32 · 1240 阅读 · 0 评论 -
如何利用openSsl来计算一个文件的md5值?
openssl环境的配置, 我就不再说了。在本文中, 我们来讨论一个文件的md5值, 废话少说, 直接给大家代码, 上点干货:[cpp] view plain copy#include #include // 如果你直接拷贝我的程序运行, 那注定找不到md5.h #pragma comment(lib, "libeay32.l原创 2017-07-06 20:31:27 · 1485 阅读 · 0 评论 -
UDT中select异常
转载:http://blog.csdn.net/seebit/article/details/6050428select, selectEx的参数采用了stl的容器,在DLL方式下,会发生异常。select传入的容器内的对象在DLL内部发生释放操作时,会抛出异常,因为主程序和DLL申请的内存不能互相传递释放。同样的问题是selectEx传出的容器对象是在DLL内转载 2017-07-02 17:50:31 · 268 阅读 · 0 评论 -
RCF的优势--分布式应用
RCF(远程调用框架)是一个可以移植的C++进程间通信框架,使用C++语言特性,提供了一个简单高效的编写分布式C++软件的途径。RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORBA,DCOM,.NETRemoting,WCF,WS-*,等所支持的面向对象方式不一样,RCF提供了一种面向接口的方式。RCF让你明确指定接口和数据,而不是产生复杂的对象模型和不透明的串行化代码,这样原创 2017-07-02 17:47:58 · 1271 阅读 · 0 评论 -
UDT内部代码分析
一. 报文发送1.CSndQueue::worker中调用CChannel::sendto发送数据报文。2.CSndQueue::sendto中调用CChannel::sendto发送其他报文, 种类较多主要有:1)CUDT::connect中调用CSndQueue::sendto发送建立连接请求。2) CUDT::sendCtrl中调用CSndQueue::sendto发送控制报原创 2017-07-02 17:31:26 · 540 阅读 · 0 评论 -
三次握手 四次握手 与socket函数的关系
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下: 作者:吴秦出处:http://www.cnblogs.co转载 2017-03-27 00:00:36 · 1654 阅读 · 0 评论 -
HTTP和HTTPS详解
转自:http://www.cnblogs.com/ok-lanyan/archive/2012/07/14/2591204.htmlHTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTT转载 2017-03-26 23:20:39 · 278 阅读 · 0 评论 -
HTTP代理协议 HTTP/1.1的CONNECT方法
我们平时使用HTTP协议无非就是GET、POST这些方法,但是HTTP的内容远不止那些。今天就来说说HTTP代理使用的CONNECT。这个不是在网页开发上用的,如果没兴趣就跳过吧。 APACHE只是作为网页的服务器被使用的,不会支持这个方法。如果要使用它必须在服务器上安装相应的软件。这样的软件很多,百度一下HTTP代理服务器就可以找到一大把。 CONNECT这个方法的作用就是把服务器作转载 2017-03-26 23:19:40 · 1175 阅读 · 0 评论 -
TCP传输过程中丢包问题
TCP协议本身是保证传输的数据完整性不会丢数据的。如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题。例如服务器给客户端发大量数据,Send的频率很高,那么就有可能在Send时发生错误(原因可能是又多种,可能是程序处理逻辑问题,多线程同步问题,缓冲区溢出问题等等)如果没有对Send失败做处理重发数据,那么客户端收到的数据就会比理论应该收原创 2017-03-27 23:32:12 · 15542 阅读 · 0 评论 -
TCP拥塞控制详解
为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成,后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”算法,再后来在TCP NewReno原创 2017-03-27 23:23:53 · 1164 阅读 · 0 评论 -
TCP如何保证可靠性
TCP传输控制协议 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议(如IP 协议)是非可靠的,其自身提供机制保证数据的可靠性传输。在目前的网络栈协议族中,在需要提供可靠性数据传输的应用中,TCP 协议是首选的,有时也是唯一的选择。TCP协议使用的是网络层协议(如IP协议)提供的服务。 网络层协议主要完成对上层协议的数据的传递,转载 2017-03-27 22:42:16 · 354 阅读 · 0 评论 -
如何实现android和服务器长连接呢?推送消息的原理
转载地址:http://blog.csdn.net/q376420785/article/details/8653958前言:现在的大多数移动端应用都有实时得到消息的能力,简单来说,有发送消息的主动权和接受消息的被动权。例如:微信,QQ,天气预报等等,相信好处和用户体验相信大家都知道吧。提出问题:这种功能必须涉及client(客户端)和server(服务器),所以到底client如转载 2017-03-09 22:52:24 · 558 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
该面试题大全可以很好地提高C++/C程序员的技术综合实力1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那转载 2017-02-11 16:55:24 · 4797 阅读 · 0 评论 -
Json的优缺点
转载自:http://blog.csdn.net/liaomin416100569/article/details/5480825XML——这种用于表示客户端与服务器间数据交换有效负载的格式,几乎已经成了Web services的同义词。然而,由于Ajax和REST技术的出现影响了应用程序架构,这迫使人们开始寻求`XML的替代品,如:JavaScript Object Notation原创 2017-02-07 14:19:46 · 4781 阅读 · 0 评论 -
HTTP Specification_1.1 译文
http1.0/1.1The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypermediainformation systems. HTTP has been in use by the World-Wide Web global翻译 2017-02-07 09:56:57 · 397 阅读 · 0 评论 -
tcp为什么需要3次握手和3次握手的过程
网络上关于tcp的3次握手相关的文章很多,再次不再重复,个人总结下:tcp“三次握手”的目的是: 为了防止已经失效的请求报文段突然又传送到了服务器端,因而产生错误。tcp的3次握手过程:(1)、客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;(2)、服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己原创 2017-02-05 19:20:47 · 518 阅读 · 0 评论 -
UNIX TCP回射服务器/客户端之使用epoll模型的服务器
程序简介:这是一个运用epoll系列函数进行IO复用的服务器模型。它是目前UNIX与LINUX平台上效率最高,最受欢迎的IO复用传输模型。其他的不说了,直接粘贴代码吧!服务器端:#include "my_unp.h" int main(void) { int listenfd, connfd, sockfd, epfd; int i, ma原创 2017-05-23 20:05:29 · 481 阅读 · 0 评论