Recent Posts
-
2019-06-11
Netfilter是如何工作的(一):HOOK点
写在前面本系列不是介绍How to配置iptables的文章。因为网络上已经有很多这类型的教程了,其中一些还不错(比如链接).本系列也不是一般意义上的Netfilter源码分析文章。因为大段粘贴代码也会让人心生畏惧和厌烦!本系列文章的目标是,用尽量少的文字和图片讲明白How Netfilter workNetfilter 的基本概念Netfilter是一套融入在Linux内核网络协议栈中的报文处理(过滤或者修改)框架。它在内核中报文的关键流动路径上定义了5个HOOK点(下图蓝色方框),各个...
-
2019-05-15
packetdrill--测试TCP协议栈行为的利器
摘要:packetdrill是一个非常有用的用于测试网络协议栈的工具,由Google开发,它常用于对网络协议栈进行回归测试,确保新的功能不会影响原有功能。本文主要介绍其基本原理、安装、入门、测试脚本的编写方法。1.简介packetdrill是一个非常有用的用于测试网络协议栈的工具,由Google开发,它常用于对网络协议栈进行回归测试,确保新的功能不会影响原有功能。它支持Linux, FreeBSD, OpenBSD与NetBSD内核。它使用脚本化的语言编写测试语句,预测协议栈输出,官方...
-
2019-05-08
理解 Cgroup
简单的类比Cgroup是Linux内核的一项特性,它可以对进程进行一些系统资源(比如CPU、内存、IO等)限制。为什么要做这样的限制呢? 因为供需关系不平衡!举个例子,假设小明家里有一台台式电脑,爸爸需要用它处理公务,妈妈想用它看电视剧,小明想用它来玩游戏。 于是小明一家人决定,每天爸爸处理一个小时公务,妈妈再看一个小时电视剧,最后小明再玩一个小时游戏。这样一家人都可以得到有限的满足。 如果把上面的人都换成内核中的进程,而将台式电脑换成CPU。那么上面的例子就变成了三个进程都希望获取CPU...
-
2019-04-09
TCP 拥塞控制之基础
TCP 要点有四,一曰有连接,二曰可靠传输,三曰数据按照到达,四曰端到端流量控制。注意, TCP 被设计时只保证这四点,此时它虽然也有些问题,然而很简单,然而更大的问题很快呈现出来,使之不得不考虑和IP网络相关的东西,比如公平性,效率,因此增加了拥塞控制,这样 TCP 就成了现在这个样子。为什么要进行拥塞控制要回答这个问题,首先必须知道什么时候 TCP 会出现拥塞. TCP 作为一个端到端的传输层协议,它并不关心连接双方在物理链路上会经过多少路由器交换机以及报文传输的路径和下一条...
-
2019-04-04
Go中高频问题的FAQ 节选
本文翻译自官方FAQ该链接可能需要科学上网 orz其中一些专有名词为了防止翻译引起的歧义,索性保留英文:)UsageGo程序能和C/C++程序链接在一起吗 ? Do Go programs link with C/C++ programs?可以的,单这并不是很自然的做法,并且需要特别的接口软件。此外,将C与Go链接在一起会丧失原本Go可以提供的安全地内存和栈的管理。有时为了解决一个问题,我们一定要使用C库,但这么做总会引入一些风险,毕竟链接后就不是纯Go程序了,所以千万当心!如果您确实需...