`
文章列表
if ( (nread = recvfrom( fd, ptr, nleft, 0, (sockaddr*)&m_addrSourceIp, &sizeSock) ) < 0) int CSynScan::CheckSyn(const char* _buffPackage) { assert( _buffPackage!=NULL); cout<<"pTcp->tcp_flags:"<<pTcp->tcp_flags<<endl; c ...
说是详解,实在是有愧。只不过是自己前段时间不理解,花费了点时间来总结下而已。因此此篇文章完全代表自己主观的观点^_^ 关于"大小字节序"方面的知识详见BLOG前一篇文章<<大字节序 小字节序>> 那么,先理清下在网络传输里这个字节序转换的过程。假设是一台小字节序的PC机,构造好包后,以大字节(即网络流)方式传输,接着达到终端。我一开始以为传输的时候把高低字节替换,其实不是,只是一个读取值的顺序不同而已。本着这个,来看看IP头格式的定义: 标准的IP头的第一个字节里,是先版本,后首部长度,后来在很多代码里看到这两个是相反的。当时就很纳闷。比如这个定 ...
from: http://www.sf.org.cn/Article/base/200709/20502.html Endian 的由来 一、引子   在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了 计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、 字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方 将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采 用的字节存储机制主要有两种: big-edian和little-endian。本文简要描述这两种存储机制的来历、特点和区别。      为了叙述方便,下面 ...
在调试一个地址时无意中发现 g++代码,inet_nota情况也一样,后来为了验证就换成如下 char *fun_test(char* c) { static char s_buff[10]; char *p_buff=s_buff; strcpy(p_buff, c); return s_buff; } //main函数 char c1[]="abc",c2[]="def"; cout<<fun_test(c1)<<endl <<fun_test(c2)& ...
execl函数功能如下:启动一个可执行文件,并且对他进行传送参数。一些原型如下 #include <unistd.h> extern char **environ; int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg , ..., char * cons ...
在《unp》书上,stevent一开始的一个服务器小例子这样介绍到:一个TCP的服务器和客户 端,客户端puts进行阻塞式的输入消息。暴露的问题是,当用户进行阻塞到puts输入时,对方 的服务器关闭,那么用户可能发了一大断消息按下发送时,发现程序崩溃了。。阻塞的出现的 另一种意义就是各司职。 最近在负责的一个项目中,需要频繁的进行TCP吞吐,我一时认为不 需要什么阻塞,都是即时的消息,而且又很频繁。结果暴露的问题出来了:(9060为服务端) 1、如 tcp 0 16385 218.66.25.238:32821 218.66.25.238:9060 F ...
time_wait状态的解释和验证:在TCP同步双工断开连接中,假设没有time-wait这个状态,那么在最后一个FIN N发送时,主动关闭方接到后,返回ack N+1.那么这个时候如果N+1这个包在没有正确达到,那么对方会一直处于LAST ACK的状态,而发送方因为没tim_wait这个状态,已经认为是正确发送了就退出了,造成接收方一直等待。 加入time_wait后,time_wait本身这个值也代表这个一个包在网络上能生存的时间,接收方就可以简单认为在这个时间内没收到N+1的包就可以认为 这次断开是失败的,那么要重新发送FIN N的序列号。而这个时候time_wait端也要将状态改为接 ...
今天加了个87年的程序员群,发现87年后学C++的好少啊。。都是javaer.. 做个计划在这里,不然每天看似忙碌,其实都是瞎忙 5月份:利用业务时间把代码大全兴趣的地方先过一遍 6月份:把linux shell编程指南过一遍
    一个小憩醒来,又是浑身的劲。看来我最适合的方法原来是睡觉^_^.可恶的CSDN,改版下, 不知道可用分在哪里转了,可怜的MM程序员,不能捐赠给你。。     坚持下来了。我对自己这样说到。这几天除了BUG,几乎什么都没碰。有时找着找着都有点绝望,想想自己是不是真的适合做这行,怀疑自己以前的热情和自信到哪儿去了,周围的同事不断的汇报自己工作的情况,真怕解决不了这几个问题,周五的任务报告怎么写。。虽然还是实习生,这次承蒙组长信赖,在这次启动项目上分了一个独立的模块过来。但是我真的不想拿这些拿做借口。     不断对自己安慰着,不断的看着和自己同龄却强自己好多的牛人BLOG来刺激自己(这个超有 ...
遇到这样一个情况 用pcap_loop进行循环抓包 loop_break退出时,总要等到最后一个包到达了才能退出。 应该不是程序库的问题,tcpdump都是好好的。 是不是我用法用错了? 好不容易再国外搜到一个类似的问题,但是作者却联系不到了。 后来BUG找到原来是return 0和exit 0区别 在CSDN发的讨论帖 http://topic.csdn.net/u/20080520/16/7244d981-12b3-42db-a3f1-208f6cc3ffe0.html 自己总结了下 首先从语意上来讲,return表示一个函数的调用返回,比如你可以在一函数体里一般就返回,其主旨 ...
问题如下:之前网络用tcpdump用得好好的。为了赶做毕业设计,冲忙向公司请假了两天回学校。在宿舍网络用tcpdump却无法抓包。打印出来信息如下: [root@localhost tcpdump-3.9.8]# tcpdump ip tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes 18:02:54.090670 IP 192.168.0.238.s ...
#include <stdarg.h> #include <iostream> using namespace std; void TestPrint(char *fmt, ...) { va_list args; va_start(args, fmt); while(fmt!="e") { cout<<fmt<<endl; fmt=va_arg(args,char*); } //注意,这里va_list并 ...
gmt2local.c: int32_t gmt2local(time_t t) { register int dt, dir; register struct tm *gmt, *loc; struct tm sgmt; if (t == 0) t = time(NULL); gmt = &sgmt; *gmt = *gmtime(&t); loc = localtime(&t); dt = (loc->tm_hour - gmt->tm_hour) * 60 * 60 + (loc->tm_ ...
发表于:2008年5月1日 18时50分26秒阅读(0)评论(0)本文链接:http://user.qzone.qq.com/242106764/blog/1209639026 我把他命名为守护 晚上去吃饭时,很平常一样来到同家快餐店。打好菜,选了个位置坐下来。就看到了这幕 :一个约莫7、8岁的孩子坐在椅子上,头向后仰,嘴巴微微张着,睡着了;对面的椅子上放着一个袋子,里面放着 几个玩具;旁边似乎是他的父亲,身子侧着对着孩子的方向,用手托着下巴,慈祥的注视着孩子;桌上还放着碗 快。 一个服务员经过时,父亲用手指了指桌上的碗块,轻声的说到这边。 今天是五一,大概他们玩了一天了吧。 ...
libpcap体现的不是捕捉技术上的难点,而是对细节的控制上,对跨平台代码的编写上,对过滤机制的优化上。 因为做毕业设计缘故初次拿到了这个包,作为一个入门者来说突然变得不知所措。而且国内中文资料不多,又要面对着大堆的英文。一开始也是盲目的本着英文而去,通篇看了一个早上也没什么重点的结果。晚上看了个影片,讲到大象的命门是在脚筋,也就是支撑的地方。 很显然,我得先对接口的流动和他的数据结构有个了解。而且在这套库里面看到了好多人的代码和自己的功能说明,感觉着一种合作开放的精神。 剪枝删节,将其中linux部分提了出来,涉及到的文件大概有:     inet.c  fad-getad.c pcap-li ...
Global site tag (gtag.js) - Google Analytics