自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Netfilter,iptables/OpenVPN/TCP guard:-(

我不会编程,但也不是一点都不会,我稍微会一些 :-)

原创 linux的进程树

<br />linux的树形进程结构为管理进程提供了很大的方便,不管是内核对进程的管理还是用户对进程的管理都受惠不少,对于审计也是很有用的,不管运行的什么进程,都会有一条不会断的线索将之绑在系统内部。整个系统的情况就是首先内核启动,接着内核线程0派生出init,然后init派生出万物,...

2010-07-28 22:26:00 6059 1

原创 shc程序的原理--以实例分析

<br />有人想加密自己的perl脚本,有人想加密自己的php,有人认为bash编程并不是真正的编程,因为它们的源代码都是可见的,不像c程序那样,一旦经过编译就再也不可读了...其实这是一种误区,其一就是c语言编译而成的平台相关的elf或者pe文件并不是完全不可读,只是对于应用者不可...

2010-07-28 22:08:00 6628 2

原创 ASN1标准对OID的编码

<br />asn1对OID的编码有一些规定,形如a.b.c.d.e的OID被编码的时候,完全可以按照der的编码规则将整个oid的类型设定为object,然后将每一个点分数字的类型设定为integer,最终编码为[obj|length[[int|lena[a]]][int|lenb[...

2010-07-27 21:00:00 5132 0

原创 ssl握手协议中的CipherSuite

<br />下面是一个ssl握手的过程,没有进行客户端验证:<br /> 1.C-S:ClientHello---cipher-suit-list<br /> 2.S-C:ServerHello---selected-cipher-suit<br /&...

2010-07-20 22:34:00 11041 1

原创 PKCS#11的应用--USBKEY

ssl是一个安全协议,为互联网应用提供了安全,数字证书被证明能够带来比单纯的密码或者指纹,瞳孔认证之类的方式更安全的保护,可是如此安全的机制需要一个安全的基层平台,事实证明计算机并不是一个足够安全的平台,计算机好比公共汽车,而操作系统以及C库的调用规范或者安全级别的设计被视为道德,众做周知道德不是...

2010-07-19 22:04:00 5930 0

原创 tcp关闭连接时的四次挥手

<br />众所周知,tcp要3次握手来建立连接,而断开连接却需要4次挥手,为何需要4次挥手,同时需要那么多的wait状态,比如wait1和wait2状态,那是因为在建立连接的时候,收发双方都是“纯净”的,客户端发送syn的时候,服务器并没有什么数据要发送,而只是需要发送一个synac...

2010-07-19 21:29:00 6589 2

原创 linux关于tcp协议ack的实现--总结和公平性问题

<br />tcp是一个可靠连接的协议,但不要指望它是什么理论的实现,它是实践的东西,任何实践的东西背后都不是一个理论,而是一大堆理论,tcp正是单一停等,GBN(回退N)以及SR(选择重传)的结合体,单一停等是最原始的理论,但是带宽利用率太低了,后面的GBN实现了流水线式的数据发送和...

2010-07-18 10:06:00 3812 0

原创 linux关于tcp协议ack的实现--发送端对ack的处理

<br />前面的文章分析了接收端如何发送ack给发送端,总结一下就是立即ack,捎带ack和延迟ack,现在看一下tcp的发送端是如何处理ack的,本质上tcp所谓的有连接就是双方对于seq和ack的处理,对于seq,发送方是主动的,而接收端是被动的,但是对于ack则相反,因此参照t...

2010-07-17 10:50:00 6753 0

原创 linux关于tcp协议ack以及乱序报文暂存的实现--立即ack/延迟ack/捎带ack

tcp需要ack,可是为了效率,并不是每发送一个数据都要等待ack,而是利用窗口机制,积累发送ack的,当然在某些特殊情况下还是需要马上发送ack的,比如接收到乱序的数据,这种情况下,虽然接收端可以将乱序的数据包暂存,但是接收方必须发送一个ack号为按序的期望的序列号的ack给发送端,另外就是接收...

2010-07-15 22:26:00 9188 0

原创 将stunnel修改成一个透明代理--附:setjmp/longjmp

<br />stunnel的代码很简单,简单得没法形容,其执行过程分为下面几个部分:<br /> 1.main-loop:<br /> while(1) {<br />     fd = accept<br />     do_c...

2010-07-15 21:24:00 7687 0

原创 关于linux的段错误(Segmentation fault)

<br />1.Segmentation fault这个字符串在shell中是谁打印的?<br /> 这个字符串实际上是bash(或者别的shell)打印的,而不是当前出错的进程,也不是内核,参见bash源代码的WAITPID (-1, &status, 0))语...

2010-07-14 21:19:00 8765 0

原创 纯用户空间抢占式多线程的设计

<br />纯用户空间的抢占式多线程库其实是很麻烦的一件事,在设计之前首先必须明白抢占式多线程的意义,其本质就是古老的unix多道程序设计,策略可以是分时的,也可以是其它任何的调度策略,不管什么策略,机制要素都是底层的OS内核和机器硬件提供的,对于x86上的linux来说,这些要素包括...

2010-07-14 21:17:00 4283 4

原创 拥有奢侈品的人不一定是强者

<br />这个世界从来不是依据一个人得到了什么东西而定位一个人的价值的,而是依赖他/她/它创造了什么。在原始社会,男女是平等的,女人采集的果品虽没有男人带回的肉食美味,可是数量却多很多,因此男女平等,后来人口增加了,男人们发动了大规模的战争,于是拿不动武器,干不了农活的女人便自此开始...

2010-07-10 10:24:00 2236 2

原创 透明代理与ssl协议

<br />透明代理实质上类似一种拦截,客户端以为自己访问的是自己要访问的服务器,实际上这次访问早已被所谓的透明代理接管了,透明代理主机将用户的访问重定向到本机的应用层代理进程,从用户发出的http协议头中得到用户需要访问的地址信息,然后代理用户去访问或者按照本地的配置给予策略化的服务...

2010-07-10 10:03:00 4943 0

原创 网络协议设计的一点思考

<br />分层协议一般都提供一种或几种固定的服务,这些服务中高层一些的大多数都是通过“握手”动作来协商的,另外一些比较底层的服务则是协议本身提供的,比如udp服务,ip服务等。下层的握手过程对上层不可见,握手其实就是协商一条带有一定功能(可以提供一定服务)的虚拟链路,握手完成之后,下...

2010-07-08 20:47:00 3363 0

原创 linux中nat的若干细节--基于2.6.8和2.6.17内核分析

在netfilter的nat模块中有一个alloc_null_binding函数,该函数在local_in这个hook点上会被调用,在nat没有初始化的时候也会被调用,在这两种情况会被调用,netfilter规定可在postrouting和local_in执行snat,但是local_in的时候t...

2010-07-07 22:43:00 3847 0

原创 没有#!的bash脚本的执行

<br />有些bash脚本写的不规范,没有在文件开头写#!,但是却能直接执行,可是如果看内核代码,shell脚本的加载函数中的开头就会判断,如果没有#!的话就会返回错误:<br /> static int load_script(struct linux_binprm ...

2010-07-07 22:08:00 3798 0

原创 ssl协议中的dh算法的pre-master-secret

ssl3_send_client_key_exchange是openssl中客户端确定密钥的函数,同时也发送了“一部分”数据给服务器,这一部分数据就是所谓的pre_master,不管是客户端还是服务器都根据对端传过来的pre_master和自己计算出来的另一部分数据来生成最终的对称密钥,生成过程中...

2010-07-06 22:35:00 22148 6

原创 mozilla的分层IO架构

<br />mozilla的IO实现是分层的,本质上和BIO是一样的,只是写法不同罢了,最上层,mozilla封装了一个结构体:<br /> struct PRFileDesc {<br />     const PRIOMethods *methods; ...

2010-07-06 22:30:00 2475 0

原创 mozilla的安全架构

<br />mozilla在安全方面主要分为三大块:1.SSL协议的实现;2.Crypto库的实现;3.PKCS#11的实现最顶层是ssl的实现,和openssl不同,mozilla是自上而下设计的,因此mozilla并没有抽象出诸如BIO或者EVP之类的通用机制,可以它实现了一个PR...

2010-07-06 22:29:00 2532 0

原创 SVR4/4.3BSD与Linux对待伪终端的不同方式

<br />打开伪终端意味着打开了一个“终端对”,这个终端对的其中一个是主终端,另一个是从终端,简单说主终端和类似sshd,telnetd等用户空间的远程协议处理进程连接,而从终端则和shell之类的实际进程连接,在处理远程登录的时候,一般都是由远程协议处理进程打开主终端和从终端,然后...

2010-07-05 21:20:00 3248 0

原创 unix流架构到底是个什么东西

<br />仅有理论而无实例只是纸上谈兵,unix的流机制是很妙的机制,但是unix流究竟是如何实现以及如何使用的呢,虽然unix流已经提出了很久很久,但是时至今日它也没有普遍被使用,出了solaris和windows等操作系统外,几乎没有什么系统在使用它,当今世上操作系统无非也就几家...

2010-07-04 17:07:00 2839 0

原创 再谈UNIX流机制和tty驱动

<br />忍不住再次说一下unix的流机制。周末在家调试linux的终端驱动,发现linux并没有按照unix流机制的建议来实现tty驱动,虽然我对windows内核理解不如对linux深刻,可是还是略知一二,windows的分层驱动模型倒是和unix流机制甚是相似,如出一辙。win...

2010-07-03 17:14:00 3649 0

原创 用文字描述TCP的流量控制和拥塞控制

<br />TCP在发送端和接收端有两个窗口,发送端的是拥塞窗口而接收端的就叫做接收窗口,两个窗口的作用不同 ,所谓的流量控制就是收发端的速率要匹配,决定权在接收端而不在发送端,因为发送的慢了可以提速,而 接收不了就意味着丢包,这就好比冷了可以穿衣而热了只有扒皮一样。因此对于收发端...

2010-07-02 20:13:00 5366 1

原创 syslog的点滴--集中处理日志

<br />syslogd和klogd是很有意思的守护进程,syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括从klogd接收到的日志,klogd首先接收内核的日志,然后将之发送给syslogd,klog...

2010-07-01 22:32:00 3320 0

原创 使用 linux的几个需要注意的问题(之二)

<br />1.在shell脚本中改变当前目录<br /> cd只能改变current目录,因此不能指望在一个脚本中实现cd ...(long path)的目的,脚本是通过fork/exec执行的,等于说在一个新的进程环境中执行的,一旦这个脚本执行完毕,当前进程的pwd还...

2010-07-01 22:28:00 1948 0

提示
确定要删除当前文章?
取消 删除