网络编程
文章平均质量分 59
LinuxG_G
90年程序员,坐标深圳某IT公司。对新技术充满兴趣,使用的编程语言:C/C++,python, Linux shell;
熟悉常见数据结构及算法,Linux编程,了解java,Android开发。
技能库:
STL, python, 多线程编程, TCP/IP, Linux shell
java, android, 数据库
爱好运动,兴趣比较广泛:basketball,badminton,swim,running等
博客主要用Github 及 csdn,欢迎交流。
联系方式:qq 754860961
展开
-
网络io零拷贝好文推荐
简述 Linux I/O 原理及零拷贝(下) — 网络 I/O原创 2023-02-01 09:33:56 · 152 阅读 · 0 评论 -
seastar
Seastar is an advanced, open-source C++ framework for high-performance server applications on modern hardware. Seastar is used in Scylla, a high-performance NoSQL database compatible with Apache Cassandra. Applications using Seastar can run on Linux or OSv原创 2021-08-20 14:58:11 · 210 阅读 · 0 评论 -
[转]CPU中的cache结构以及cache一致性
timer实现https://cloud.tencent.com/developer/article/1553274转载 2021-08-15 23:06:26 · 637 阅读 · 0 评论 -
网络框架的Timer实现
业界的Timer实现有两种方式:时间堆(最小堆):可以使用std::priority_queue c++11的优先队列来实现最小堆方式的时间堆,详情请参考高性能定时器概述(包含时间堆的实现)相关应用:brpc框架,具体见bRPC Timer时间轮:基本思想为将时间分片(如最小间隔为500us),添加timer时,将timer挂到时间轮上对应时刻的定时器链表上,然后将按时间推进时间轮并执行该时间点的所有timer;由于运行过程中,只需要执行时间轮上对应时刻定时器即可(无需经过logN复杂度的查询,因原创 2021-08-15 22:54:20 · 322 阅读 · 0 评论 -
Go gRPC
先mark一些文档:Go gRPC教程原创 2021-08-15 22:35:02 · 207 阅读 · 0 评论 -
彻底弄懂EPOLLOUT事件
epoll是linux下实现IO multiplex的利器。一般编程实现方式如下:使用epoll_create创建一个epoll fd使用epoll_ctl往epoll fd里添加需要监听的fd,并注册需要监听的事件(由于EPOLLLET边缘触发方式更加高效,所以一般都使用边缘触发方式)使用epoll_wait等待事件,然后依次处理各个事件,反复循环其最常用的网络事件为EPOLLIN和EPOLLOUT,EPOLLIN对应为有socket缓冲区数据可读(当又收到了对端的一些数据,就会触发;或者作为原创 2021-03-21 12:16:02 · 9377 阅读 · 2 评论 -
Linux epoll详解
文章目录epoll接口函数创建epoll实例管理epoll事件等待epoll事件epoll实例mac下的epollepoll源码实现epoll机制相比select/poll机制能更有效地实现描述符的多路复用(支持更多的描述符,处理效率更高[具体机制这边不展开了]),本文从编程的角度做一个介绍。epoll接口函数头文件: #include<sys/epoll.h>可以通过man ...原创 2020-03-01 14:50:15 · 1437 阅读 · 0 评论 -
tcp释放连接的close_wait, FIN_WAIT2, TIME_WAIT大量存在的原因及解决办法
文章目录存在close_wait的原因和解决办法存在FIN_WAIT2的原因和解决办法存在TIME_WAIT的原因和解决办法处理这类问题的实用命令存在close_wait的原因和解决办法close_wait这个状态存在于服务端,当服务端发送FIN(之前客户端已经发送过fin),请求关闭连接之后进入close_wait,然而没有收到客户端的响应,可能由于客户端掉线了(如网络故障或者掉电),没有及...原创 2020-02-23 16:32:20 · 4557 阅读 · 0 评论 -
SO_RESUSEPORT和SO_REUSEADDR的区别
Q:同一个IP/port,可以允许多个进程同时监听吗?ans:可以,需要设置SO_REUSEPORT选项,否则会报错(有的系统不支持);但是如果服务端多个相同类型的socket(指协议相同)绑定到同一个地址的话,只有一个进程的socket会收到请求;当处理进程退出后,另外的进程才会收到请求。 Q:SO_REUSEPORT和SO_REUSEADDR的区别SO_REUSEADDR允许将...原创 2018-11-02 23:17:19 · 877 阅读 · 0 评论 -
Nginx开发从入门到精通
ngnix是一个采用c代码编写的高性能web服务器,可作为使用c/c++的程序猿很好的学习例子,其入门文章Nginx开发从入门到精通先收藏下。原创 2017-11-19 16:17:40 · 335 阅读 · 0 评论 -
epoll源码实现分析[整理]
本文转载自epoll源码实现分析[整理]epoll用法回顾先简单回顾下如何使用C库封装的3个epoll相关的系统调用。更详细的用法参见http://www.cnblogs.com/apprentice89/archive/2013/05/06/3063039.htmlint epoll_create(int size);int epoll_ctl(int epfd, int op,转载 2017-10-30 22:55:26 · 550 阅读 · 0 评论 -
(网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)
转载链接:http://www.cnblogs.com/kzang/tag/网络/ 其中网络协议的文章写的不错,故分享下。目录IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMPIP 数据报首部IP数据报首部格式:最高位在左边,记为0 bit;最低位在右边,记为31转载 2017-09-20 23:39:09 · 497 阅读 · 0 评论 -
syslog-ng详解——安装syslog-ng
日志管理模块作为软件系统的一个重要子模块,其记录着系统运行的有关信息。当系统故障时,日志是用于问题定位的必备信息。所以,一个设计良好的日志模块及其重要,在Linux系统上往往用syslog(rsyslogd及klogd程序)来管理系统的日志。本文介绍的syslog-ng是syslog的next generation,具有比syslog更强大的功能和性能,优势在以下几个方面:兼容syslog的功原创 2017-09-12 21:53:21 · 5603 阅读 · 1 评论 -
linux内核网络栈---socket调用内核路径
一、linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构: BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件 主要有:/net/socket.c /net/protocols.c etcINET socket层:BSD socket是个可以用转载 2017-09-02 21:36:34 · 3179 阅读 · 1 评论 -
高性能后台服务器架构设计
本文转自高性能后台服务器架构设计如何设计高性能的大型网站系统?在移动互联网时代,客户端应用开发本身,并不是体验的决胜之处,真正对团队挑战的地方,还在于后端,无论是承压能力,还是安全性等方面,如果这些地方过不了关,整个应用的基础是不扎实的。 提高服务器性能最简单粗暴的方式,就是增加机器和升级硬件配置。虽然现在的硬件越来越便宜,但是一味地通过增加机器来解决并发量的增长,成本转载 2017-09-09 23:18:54 · 674 阅读 · 0 评论 -
HTTP协议简介
HTTP是一个基于请求和响应模式的无状态,应用层的协议,常基于TCP的连接方式,广泛应用于B/S(浏览器/服务器)模式。http工作流程1、 首先客户端和服务器建立tcp连接。 2、 客户端发送请求报文,请求相关URL3、 服务器接收到请求之后,返回应答,即响应报文4、 客户端将内容显示在浏览器上,然后断开连接http报文特点1、 支持客户/服务器模式 C/S 2、 简单快速:客...原创 2015-08-02 09:48:04 · 549 阅读 · 0 评论 -
close和shutdown的区别
close只是减少描述符的引用计数,计数为0才真正关闭套接字;shutdown为立即关闭。close并不保证文件写入磁盘,如需要的话要调用sync 或fsync. shutdown可以指定参数,只关闭读端或者写端。而close是双端关闭(请求断开连接,认为另一端也没有需要传送的内容了)。 close之后tcp将尝试发送已排队等待发送到对端的任何数据,发送完毕原创 2016-05-14 22:05:46 · 1028 阅读 · 0 评论 -
网络编程read, write, recv, send函数返回值
1.1 read>0 : 正常情况下返回读入的字节数,read 读取数据时有水位控制,当可读数据大于水位时,就返回。=0 : 当关闭socket连接时且缓冲区中没数据可读时,返回0;当文件操作时,读取到文件尾EOF,也返回0其man帮助如下:1.2 write>0 : 正常情况下返回写入的字节数,阻塞的write调用将检测写缓冲区的大小,当写缓冲大于writ原创 2016-05-22 17:06:20 · 4877 阅读 · 0 评论 -
证书相关概念及使用openssl生成自认证证书
1 基本概念 根证书:根证书负责其他可信任证书的颁发,不同的CA机构具有不同的根证书。通过openssl我们可以自建CA证书(不属于权威机构颁发的,但经常部署证书测试需要用到),用于颁发其他证书(用根证书的私钥对其他证书进行签名,从而保证其他证书的可信性)。证书认证原理:根证书用自己的私钥签署了服务端的证书,验证时要根证书的公钥解密服务端的证书,从而达到了身份验证。这种方式也叫做数原创 2016-07-03 17:48:54 · 1178 阅读 · 0 评论 -
域名解析
linux 域名解析的原理:1、 查找本地中的配置文件配置文件/etc/hosts域名服务器地址文件:/etc/resolv.conf文件2. 通过发送DNS解析请求给DNS服务器,返回应答相关结构为:struct hostent { char *h_name; //主机名 char **h_aliases; //别名 in原创 2017-06-29 23:22:24 · 382 阅读 · 0 评论 -
udp程序设计
几点注意事项:1、 使用recvfrom 接收应答方地址,对应答方进行身份检测 利用memcpy函数比较地址是否一致。2、 sendto 操作成功返回仅仅表示在接口输出队列中具有存放所形成的IP数据报的空间。而不检验目的地址是否可达。如果需要检查目的地址的话应使用connect3、 当服务端无应答时,recvfrom会一直阻塞,解决的方法有三种: 1) 利用中段SIGAL原创 2017-06-29 23:24:31 · 365 阅读 · 0 评论 -
syslog-ng详解——运行syslog-ng
安装完syslog-ng后,就是如何使用的问题了。在https://syslog-ng.org 上可以下载syslog-ng的说明文档syslog-ng-ose-guide-admin.pdf,文档中介绍了syslog-ng的用法,很详细。下面介绍下如何使用syslog-ng。安装目录结构介绍在syslog-ng安装目录下,文件夹及作用如下: bin 存放一些用于测试s原创 2017-09-15 21:05:11 · 4513 阅读 · 0 评论 -
OpenSSL 与 SSL 数字证书概念贴
本文转自 http://seanlook.com/2015/01/15/openssl-certificate-encryption/SSL/TLS 介绍见文章 SSL/TLS原理详解。如果你想快速自建CA然后签发数字证书,请移步 基于OpenSSL自建CA和颁发SSL证书 。首先简单区分一下HTTPS、SSL、OpenSSL三者的关系:SSL是在客户端和服务器之间建立转载 2017-09-16 10:24:51 · 1289 阅读 · 1 评论 -
TLS encryption and mutual authentication using syslog-ng Open Source Edition
TLS encryption and mutual authentication using syslog-ng Open Source EditionThe tutorial is organized as follows:Section 1, Creating self-signed certificates describes how转载 2017-09-16 10:27:14 · 1298 阅读 · 0 评论 -
SSL/TLS原理详解
本文转自http://seanlook.com/2015/01/07/tls-ssl/关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 ,如果你想快速自建CA然后签发数字证书,请移步 基于OpenSSL自建CA和颁发SSL证书 。SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次转载 2017-09-16 10:31:47 · 857 阅读 · 0 评论 -
syslog-ng详解——syslog-ng配置语法
在“运行syslog-ng”中我们简单介绍了一个基本配置文件的大概结构,保证syslog-ng能正常运行起来。这边将详细介绍下syslog-ng的日志配置及如何进行高效的配置,先介绍下syslog的一些基本知识:日志级别及日志设备syslog-ng和syslog一样,日志级别都有以下8种:级别越低代表越重要的日志。设备号有以下几种:由设备号和日志级别原创 2017-09-16 10:41:06 · 18621 阅读 · 1 评论 -
socket通信服务端编程
当开发一个Unix服务器程序时,需要处理的1对多或者多对更多的问题,我们有如下类型的进程控制可供选择:多进程通过调用fork派生出一个子进程来处理客户端请求,但子进程的最大数目受限于由于操作系统对用户可以派生的子进程数的限制(这种情况可以使用预先派生子进程的进程池技术)。 缺点:执行fork是一个耗时操作,且最多数目有限制 整体流程图如下:编程注意点:父进程需要处理子进原创 2017-09-09 15:43:43 · 433 阅读 · 0 评论 -
常用的一些加密算法
对称密钥体系 DES 、AES、 3DES ,通信双方用相同的密钥进行加密与解密,需要防止密钥泄露公钥加密体系 RSA,数字签名签名用的就是这个加密算法。只要密码长度够长,RSA加密的信息实际上是无法破解的。比起对称密钥体而言,RSA加密要慢得多。所以经常用来加密较短的关键信息,而基本信息则采用对称密钥体系算法进行加密。这种加密算法经常用于加密对称密钥体原创 2015-08-09 20:59:52 · 645 阅读 · 0 评论