Switch-Router

Recent Posts

  • 2019-08-10

    IP地址是主机的还是网卡的?

    读大学时,宿舍每个人都买了电脑,为了节约网费,整个宿舍又从二手市场淘了台TP-LINK路由器。这样每个人的电脑就通过路由器连接到学校网管中心,再连接到外网。从路由器后台界面可以看到,路由器为每个人的电脑分配了一个IP地址。这看上去IP是属于主机的.进入职场以后,公司的电脑都安装了两个物理网卡,通过两根网线分别接入了两个网络(10.X.X.X/8 和 192.X.X.X/24).从适配器管理界面可以看到,两个网卡都有各自的IP地址.这样看上去,IP地址是属于网卡的。那么,究竟哪种说法正确呢 ...

  • 2019-08-02

    锁与无锁

    当我们在编写多线程程序时,常常会涉及到多个线程对共享数据的访问。如果不对这种访问加以限制,往往会导致程序运行结果与预期不符锁编写代码时,我们以及习惯了用锁去保护数据。那么,这里的锁是什么?为什么它能满足我们的要求?它存在于哪里?让我们从一个最简单的例子出发—多个线程并发修改一个全局变量:/* 全局变量 */int g_sum = 0;/* 每个线程入口 */void *thread(void* arg){ for(int i = 0; i < 100; i++) { g_s...

  • 2019-07-16

    TCP Fast Open(TFO)

    TCP Fast Open 的来源网络的速度与两个因素相关:传输时延(transmission delay)和传播时延(propagation delay)。transmission是指将报文灌入网络电缆的时间,这是与带宽连接有关系的概念,比如千兆网络(网卡)比百兆网络(网卡)的transmission delay更小;而propagation delay是指电信号在网络端到端的时延,它的大小只与端到端的距离有关(电信号以光速传播),TCP 中的往返时间Round Trip Time也就是...

  • 2019-06-19

    TAILQ之一二事

    TAILQ队列是FreeBSD内核中的一种队列数据结构,在一些著名的开源库中(如DPDK,libevent)有广泛的应用。TAILQ队列的定义TAILQ队列有HEAD和ENTRY两种基本的数据结构#define TAILQ_HEAD(name, type) \struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last...

  • 2019-06-17

    深入理解同步机制---内核自旋锁

    进程(线程)间的同步机制是面试时的常见问题,所以准备用一个系列来好好整理下用户态与内核态的各种同步机制。本文就以内核空间的一种基础同步机制—自旋锁开始好了自旋锁是什么自旋锁就是一个二状态的原子(atomic)变量: unlocked locked当任务A希望访问被自旋锁保护的临界区(Critical Section),它首先需要这个自旋锁当前处于unlocked状态,然后它会去尝试获取(acquire)这个自旋锁(将这个变量状态修改为locked),如果在这之后有另一个任务B同样希...