- 博客(94)
- 资源 (2)
- 收藏
- 关注
转载 网络层攻击防御
网络层攻击防御网络层攻击防御主要分为以下三类:TCP类报文攻击防御UDP类报文攻击防御ICMP类报文攻击防御TCP类报文攻击防御TCP正常的交互过程:图:TCP正常交互过程在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送SYN包到服务器,等待服务器确认。第二次握手:服务器收到SYN包,回应一个SYN-ACK包。第三次握手:客户端收到服务器的SYN-ACK包,向服务器发送确认包ACK,此包发送完毕,完成三次握手。
2020-07-06 14:32:27
544
转载 windows环境下C语言socket编程
最近由于实验需要,要求写一个c程序与java程序通信的软件,为了测试首先写了一个windows环境下c语言的socket(tcp)通信程序。首先socket通信的步骤: 图一 socket通信步骤(转载) 图二 三次握手协议(转载) 图三 三次握手协议(转载)代码 ...
2019-12-24 10:56:16
506
转载 Windows下编译openssl库
1、概述OpenSSL是一个开放源代码的软件库包,它实现了 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议,所以应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。SSL是啥?大家知道我们访问网站的时候,以HTTPS开头的表示你和服务器之间传输的数据经过了加密,...
2019-11-07 19:57:28
417
转载 Gdb 调试core文件详解
一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆...
2019-09-16 09:07:22
1233
转载 linux下源码安装vsftpd-3.0.2
1)在http://vsftpd.beasts.org/网站中查找并下载vsftpd-3.0.2.tar.gz源码包2)如果自己的机器上安装有yum可以用yumgrouplist|less指令查看以下开发环境,当然这一步不做也行3)拆解源码包4)查看源码包5)编辑builddefs.h文件6)编译7)建立匿名账号8)建立空目录...
2019-06-21 16:09:13
3137
转载 iptables详解和练习
防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关。对于TCP/IP...
2019-03-20 10:38:18
362
转载 浅谈iptables防SYN Flood攻击和CC攻击
何为syn flood攻击: SYN Flood是一种广为人知的DoS(拒绝服务攻击)是DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式(TCP协议的缺陷,所以没办法根除,除非重做TCP协议,目前不可能)。 正常原理是:1、TCP三次握手,客户端向服务器端发起连接的时候发送一...
2019-03-20 10:03:44
611
转载 libpcap讲解与API接口函数讲解
ibpcap(Packet Capture Library),即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。一、libpcap工作原理libpcap主要由两部份组成:网络分接头(Network Tap)和数据过滤器(Packet Filter)。网络分接头从网络设备驱动程序中...
2019-03-16 15:42:42
467
转载 iptables:tproxy做透明代理
什么是透明代理客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发。因此对于客户端与服务器来说,代理机都是透明的。如何建立透明代理本地socket捕获数据包nat方式iptables -t nat -N MY_TCP #在nat表上新建名为MY_TCP自定义链iptables -t nat -p tcp -A MY_TCP -...
2019-03-15 14:54:52
1758
转载 ip route / ip rule /iptables 配置策略路由
Linux 使用 ip route , ip rule , iptables 配置策略路由要求192.168.0.100以内的使用 10.0.0.1 网关上网,其他IP使用 20.0.0.1 上网。首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关。ip route add default gw 20.0.0.1之后通过 ip route 添...
2019-03-15 14:51:11
2304
转载 iptables 的mangle表
mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。内网的客户机通过Linux主机连入Internet,而Linux主机与Internet连接时有两条线路,它们的网关如图所示。现要求对内网进行策略路由,所有通过TCP协议访问80端口的数据包都从ChinaNet线路出去,而所有访问UDP协议53号端口的数据包都从Cernet线...
2019-03-15 14:08:23
407
转载 线程池原理及C语言实现线程池
备注:该线程池源码参考自传直播客培训视频配套资料;源码:https://pan.baidu.com/s/1zWuoE3q0KT5TUjmPKTb1lw 密码:pp42引言:线程池是一种多线程处理形式,大多用于高并发服务器上,它能合理有效的利用高并发服务器上的线程资源;在Unix网络编程中,线程与进程用于处理各项分支子功能,我们通常的操作是:接收消息 ==> 消息分类 ==> 线...
2019-03-05 10:03:18
1080
转载 sys/queue.h分析(图片复制不过来,查看原文)
这两天有兴趣学习使用了下系统头文件sys/queue.h中的链表/队列的实现,感觉实现的很是优美,关键是以后再也不需要自己实现这些基本的数据结构了,哈哈!我的系统环境是正好需要使用队列,那么本篇就以其中的尾队列(tail queue)为例,结合实际的测试程序和示意图(亿图软件)来说明。测试程序tailq.c如下:#include <stdio.h> #inclu...
2019-02-13 14:14:25
404
转载 sys/queue.h
概述 sys/queue.h是LINUX/UNIX系统下面的一个标准头文件,用一系列的数据结构定义了一队列。包括singly-lined list, list, simple queue(Singly-linked Tail queue), tail queue, circle queue五种。 引用此头文件对这五种数据结构的描述:A singly-link...
2019-02-13 14:06:09
438
转载 linux网络编程九:splice函数,高效的零拷贝
1. splice函数 #include <fcntl.h> ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags);splice用于在两个文件描述符之间移动数据, 也是零拷贝。fd_in参数是待输入描述符。如...
2019-02-13 14:03:49
433
转载 OPENSSL X509证书验证
openssl实现了标准的x509v3数字证书,其源码在crypto/x509和crypto/x509v3中。其中x509目录实现了数字证书以及证书申请相关的各种函数,包括了X509和X509_REQ结构的设置、读取、打印和比较;数字证书的验证、摘要;各种公钥的导入导出等功能。x509v3目录主要实现了数字证书扩展项相关的函数。在进行身份认证时,首先要对发送给服务器进行认证的x509证书有效性...
2019-02-13 08:49:03
4115
转载 彻底学会使用epoll(一)——ET模式实现分析
注:之前写过两篇关于epoll实现的文章,但是感觉懂得了实现原理并不一定会使用,所以又决定写这一系列文章,希望能够对epoll有比较清楚的认识。是请大家转载务必注明出处,算是对我劳动成果的一点点尊重吧。另外,文中如果有不全面或者不正确的地方还请大家指出。也可以私信或者发邮件:lvyilong316@163.com1. ET模式实现分析1.1 ET和LT的实现区别 首先给出下面一张...
2019-01-16 09:30:14
1034
转载 Linux下的I/O复用与epoll详解(ET与LT)
前言 I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。为什么会是EPOLLselect的缺陷 高并发的核心解决方案是1个...
2019-01-16 09:25:05
9251
转载 linux非阻塞的socket发送数据出现EAGAIN错误的处理方法
一、非阻塞socket 非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的。 int32_t flags = fc...
2018-12-24 12:45:40
1456
转载 linux下recv 、send阻塞、非阻塞区别和用法
非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。 非阻塞IO:: ...
2018-12-23 12:24:50
530
转载 TCP send 阻塞与非阻塞
http://blog.chinaunix.net/uid-8489474-id-2031025.html tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据.在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送就返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发...
2018-12-23 12:23:20
4034
转载 linux下查看系统socket读写缓冲区
一:linux下查看系统socket读写缓冲区大小配置:http://blog.youkuaiyun.com/herecles/article/details/8146017 1. tcp 收发缓冲区默认值[root@ www.linuxidc.com]# cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 416153687380 :tcp接...
2018-12-23 12:22:03
3800
转载 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程
其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给大家分别介绍一下这三种特殊的进程! 1.孤儿进程 如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这是子进程的父进程就是init进程(1号进程).其实还是很好理解的....
2018-12-19 16:53:54
143
转载 C/C++内存问题检查利器——Purify
C/C++内存问题检查利器——Purify一、 引言 我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有这么一种说法,即使是最优秀测试专家设计出来的测试案例,也无法彻底地检测到内存上的问题。 使用C/C++开发的团队一定有被其内存问题折磨过的经历,内存问题一直是C/...
2018-12-19 09:07:39
3769
1
转载 muduo网络库源码阅读Step by Step
Posted on: Nov 26 2015 Categories: muduo C++ Tags: muduo一般写服务端程序都需要有一个称手的网络库来帮我们处理琐碎的网络通信细节,比如连接的建立、关闭,读取数据,发送数据,接收、发送缓冲区的管理等,常用的C/C++网络库有libevent,asio,libev,我们项目组使用的是muduo网络库。muduo是陈硕写的,基于非阻塞IO和事件驱...
2018-12-13 14:44:19
480
转载 timefd & epoll
#include <stdio.h> #include <sys/epoll.h> #include <pthread.h> #include <time.h> #include <sys/timerfd.h> static void epollAddEvent(int epol...
2018-12-07 15:59:02
394
转载 linux ethtool 查看网卡状态
ethtool 工具关于网络协商功能介绍; ethtool - Display or change ethernet card settings(ethtool 是用来显示和更改网卡设置的工具);这个工具比较复杂,功能也特别多。由于洋文比较难懂。所以我们还是把网络设备协商方式的设置方法说一说。2.1 ethtool 显示网络端口设置功能;这个功能比较好办。就是ethtool 后面直...
2018-11-23 13:57:49
1934
转载 系统级性能分析工具perf的介绍与使用
系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能。 在性能剖析阶段,需要借助于现有的profiling工具,如perf等。在代码优化阶段往往需要借助开发者的经验,编写简洁高效的代码,甚至在汇编级别合理使...
2018-11-22 10:51:13
1836
转载 nginx处理stale event - epoll
If using an event cache… If you use an event cache or store all the file descriptors returned from epoll_wait(2), then make sure to provide a way to mark its closure dynamically (i.e., caused by a pr...
2018-11-20 10:27:35
248
转载 Linux下send错误代码32
问题描述:今天写程序,socket后send出现这个问题,send的返回值为-1,而errno为32,这个错误代码为broken pipe,即管道破裂。 问题形成原因:后来通过排查研究,发现出现该种问题出现的可能性为以下两种:1.socket失败,与服务器端的链接没有成功,从而管道破裂。2.服务端将客户端的socket断开,一样造成这样的问题。 此时这样的程序收...
2018-11-01 13:56:52
1763
转载 EAGAIN、EWOULDBLOCK、EINTR与非阻塞
EWOULDBLOCK:用于非阻塞模式,不需要重新读或者写EINTR:指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。 例如,以 O...
2018-10-12 10:34:08
236
转载 nginx源码阅读(二).初始化:main函数及ngx_init_cycle函数
前言在分析源码时,我们可以先把握主干,然后其他部分再挨个分析就行了。接下来我们先看看nginx的main函数干了些什么。main函数这里先介绍一些下面会遇到的变量类型:ngx_int_t: typedef intptr_t ngx_int_t; 64位机器上,intptr_t为long int, 即typedef long int intptr_t;在32位机器上,intptr_t...
2018-10-10 18:08:43
228
转载 nginx源码阅读(一).综述
前言nginx作为一款开源的轻量级高性能web服务器,是非常值得立志从事服务端开发方向的人学习的。现今nginx的最新版本是nginx-1.13.6,代码量也日渐庞大,但是由于其核心思想并没改变,为了降低阅读难度,我选择的是nginx-1.0.15版本,并且由于时间和水平有限,重点关注的是nginx的启动以及进程模型、事件模块中的epoll模块、负载均衡以及整体的框架等方面。这里先推荐两本有...
2018-10-10 17:53:41
396
转载 linux 信号signal和sigaction理解
今天看到unp时发现之前对signal到理解实在浅显,今天拿来单独学习讨论下。 signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下: 1 #include <signal.h> 2 #include <stdio.h> 3 #include &l...
2018-10-09 16:40:59
143
转载 处理SIGCHLD信号
在上一讲中,我们使用fork函数得到了一个简单的并发服务器。然而,这样的程序有一个问题,就是当子进程终止时,会向父进程发送一个SIGCHLD信号,父进程默认忽略,导致子进程变成一个僵尸进程。僵尸进程一定要处理,因为僵尸进程占用内核中的空间,耗费进程资源。这里通过signal函数处理信号。1、信号是啥?信号(signal)就是告知某个进程发生了某个事件的通知,有时也叫软件中断(softwar...
2018-10-09 11:02:12
4065
转载 详细解释signal和sigaction以及SIG_BLOCK
signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函数例子如下: [cpp] view plain copy 1 #include <signal.h> 2 #include <stdio.h> 3 #include <unistd.h> 4 5 v...
2018-09-29 16:34:29
792
原创 北京加密机现场select问题
问题描述北京项目通过调用我们提供的库libsigxt.a与加密机通信,c/s架构,客户端启用多个线程,每个线程流程有以下三步,连接加密机,签名,关闭链接。在正常运行一段时间后会出现不能连接加密机服务问题。连接服务器代码如下:setnonblocking(sk_fd);ret = connect(sk_fd, (struct sockaddr *)&sa_serv, serv...
2018-09-20 18:58:03
306
转载 Inotify机制
描述Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象。此种机制的出现的目的是当内核空间发生某种事件之后,可以立即通知到用户空间。方便用户做出具体的操作。Inotify APIinotify_init(void)用于创建一个inotify的实例,然后返回in...
2018-09-08 14:57:28
1678
转载 nginx epoll详解
nginx epoll 事件模型 nginx做为一个异步高效的事件驱动型web服务器,在linux平台中当系统支持epoll时nginx默认采用epoll来高效的处理事件。nginx中使用ngx_event_t结构来表示一个事件,先介绍下ngx_event_t结构体中成员的含义: struct ngx_event_s { void *data; //...
2018-09-08 14:44:14
3789
转载 C语言指针转换为intptr_t类型
C语言指针转换为intptr_t类型1、前言 今天在看代码时,发现将之一个指针赋值给一个intptr_t类型的变量。由于之前没有见过intptr_t这样数据类型,凭感觉认为intptr_t是int类型的指针。感觉很奇怪,为何要将一个指针这样做呢?如是果断上网查查,发现我的感觉是错误的,所以,任何事情不能凭感觉,要弄清楚来龙去脉。先总结一下intptr_t类型,然后介绍指针与intptr_...
2018-09-05 14:51:14
508
精通python设计模式与源码
2018-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人