摘要: 命令格式tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] ... 阅读全文
posted @ 2013-01-07 18:28 Geek_Ma 阅读(1465) 评论(0) 推荐(0) 编辑
摘要: nginx代码分析--启动流程一、 nginx的编译安装1. configure时干的事根据configure后面跟的参数,解析auto文件夹下的文件生成Makefile文件。2. 编译时干的事ngx_modules.c文件是在编译过程中生成的,里面定义了ngx_modules[]模块数组,包含了哪些模块。(安装及配置可以参考)http://www.cnblogs.com/geekma/archive/2012/07/28/2612951.html二、 nginx启动流程1. 模块相关ngx_conf_s::module_type有四种类型: NGX_CORE_MODULE,NGX_EVENT 阅读全文
posted @ 2012-12-30 15:30 Geek_Ma 阅读(1927) 评论(2) 推荐(1) 编辑
摘要: 0/1背包 问题描述有N件物品和一个容量为V的背包,第i件物品的体积为c[i],价值为w[i]。求将哪些物品放进背包可以使物品价值总和最大(有两种情况:不要求填满背包和填满背包)。每件商品只有一件,且只能选择放或者不放入背包。 解决方案使用动态规划求解,定义一个递归式opt[i][v]表示前i个物品,在背包容量大小为v的情况下,最大的价值。opt[i][v] = max(opt[i-1][v], opt[i-1][v-c[i]] + w[i])其中opt[i-1][v]表示第i件物品不装入背包中的总价值,而opt[i-1][v-c[i]]+w[i]表示第i件物品装入背包中的总价值。通过初始.. 阅读全文
posted @ 2012-11-28 20:28 Geek_Ma 阅读(1828) 评论(1) 推荐(1) 编辑
摘要: 八、 抓包实践1. 用Android自带浏览器访问m.sohu.com访问DNS服务器221.130.33.60进行DNS解析,将m.sohu.com域名解析成IP:221.179.173.166。在发送真正的HTTP请求前需要建立TCP连接,上图是与服务器221.179.173.166建立连接前的三次握手。客户端通告窗口为14600字节,发送的TCP数据长度为0,MSS为1460。服务端的通告窗口为5792,SYN ACK的TCP数据长度为0。发送HTTP请求,从数据中可以看到请求的数据。上图报文段6为http请求,报文段7为该http请求的ack报文,报文段8为服务器返回的数据的第一个报文 阅读全文
posted @ 2012-10-23 18:15 Geek_Ma 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 六、 名词说明1. 最大报文段长度MSS最大报文段长度(MSS)表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。MSS让主机限制另一端发送数据报的长度。加上主机也能控制它发送数据报的长度,这将使以较小MTU连接到一个网络上的主机避免分段。MSS只是表示TCP数据和选项的长度和,整个IP包的长度还要加上IP和TCP首部的长度。MSS如果没有限制,当然是越大越好,这样传输率会比较高,比如,MSS为256,加上IP和TCP首部,一共296个字节,传输率为256/296=84.5%;而如果MSS为1024,则传输率为1024/1064=96.2%。图:MSS和 阅读全文
posted @ 2012-10-23 18:11 Geek_Ma 阅读(1094) 评论(0) 推荐(0) 编辑
摘要: 由于近期有些tcp层的分析和优化的工作,所以又重新或者说带着些疑问学习了下TCP协议。主要是翻阅了《TCP/IP详解 卷1》,所以很多都是摘自该书,也有些自己的理解,难免有些偏差。 TCP协议的一些认识及实践一、简介引用《TCP/IP详解-卷1》中的介绍,TCP与UDP使用相同的网络层(IP层),TCP却向应用层提供了与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。所谓面向连接的,是指在彼此通信前要先建立连接。同时这种点对点的连接表明了TCP不支持多播和广播。所谓可靠的,是指TCP有一堆保证数据传输准确的机制。所谓字节流,是指TCP接收端并不知道发送端每次向该连接写入了.. 阅读全文
posted @ 2012-10-23 17:54 Geek_Ma 阅读(6241) 评论(5) 推荐(7) 编辑
摘要: 做linux网络编程的同学都清楚,2.6版本以前的linux内核大多都是用select作为非阻塞的事件触发模型,但是效率低,使用受限已经很明显的暴露了select(包括poll)的缺陷了,为了解决这些缺陷,epoll作为linux新的事件触发模型被创造出来。一、epoll相对于select的优点: 1.支持一个进程socket描述符(FD)的最大数目 select支持的单进程socket描述符最大数目只有几千,而epoll支持的数目很大,等于系统最大打开的文件描述符数,这个文件描述符数跟内存有一定关系 2.IO效率不随FD数目增加而线性下降 select对事件的扫描是针对于所有创建的... 阅读全文
posted @ 2012-09-20 17:14 Geek_Ma 阅读(2021) 评论(2) 推荐(0) 编辑
摘要: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module。一、基本介绍 1.ngx_http_limit_req_module 配置格式及说明: 设置一个缓存区保存不同key的状态,这里的状态是指当前的过量请求数。而key是由variable指定的,是一个非空的变量,我们这里使用$binary_remote_addr,表示源IP为key值。limit_req_zone $variable zone=name:size rate=rate; 指定要进行限制的... 阅读全文
posted @ 2012-09-06 12:13 Geek_Ma 阅读(6007) 评论(2) 推荐(1) 编辑
摘要: 今天很有成就感,倒不是做出了多牛的东西,而是终于可以动态的进行编码的各种转换了。 其实这个用到的是网上一搜一大片的iconv,目前有windows版和linux版,linux下的很容易找到,直接装上就可以进行开发了,windows下的包可以通过这个链接下载:win-iconv-0.0.4.zip,直接将放入工程内,就可以使用了。 下面给出我自己的测试代码(基于文件的):#include <iostream>#include <stdlib.h>#include <stdio.h>#include <fstream>#include "i 阅读全文
posted @ 2012-08-29 15:58 Geek_Ma 阅读(2021) 评论(0) 推荐(1) 编辑
摘要: 最近在写正文抽取的过程中,经常用到字符串处理,为了更好的定制,就没使用第三方的字符串处理库,而选择了c++自带的标准库string 真正使用的时候,发现知道方法名,不知道怎么用了(参数),所以在网上找了个方法列表:#include <string>// 注意是<string>using namespace std;//string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化//此外,string类还支持默认构造函数和复制构造函数,如string s1;string s 阅读全文
posted @ 2012-08-27 11:51 Geek_Ma 阅读(253) 评论(0) 推荐(0) 编辑