原创 面試必備進程同步機制--內核自旋鎖

進程(線程)間的同步機制是面試時的常見問題,所以準備用一個系列來好好整理下用戶態與內核態的各種同步機制。本文就以內核空間的一種基礎同步機制---自旋鎖開始好了 自旋鎖是什麼 自旋鎖就是一個二狀態的原子(atomic)變量: unlocke

原创 Netfilter 是如何工作的(二):表(table)與規則(rule)

在(一)中說到,報文在內核協議棧中會途經5個HOOK點,在每個HOOK點上會依次執行鏈表上的鉤子函數,那麼這些鉤子函數是如何與用戶使用iptables下發的各個rule聯繫起來的呢?這些rule又是如何存儲的呢? 本文詳細描述這個問題。 表

原创 Netfilter 是如何工作的(一):HOOK點

寫在前面 本系列不是介紹How to配置iptables的文章。因爲網絡上已經有很多這類型的教程了,其中一些還不錯(比如鏈接). 本系列也不是一般意義上的Netfilter源碼分析文章。因爲大段粘貼代碼也會讓人心生畏懼和厭煩! 本系列文章的

原创 通俗理解IP路由

日常工作環境中,我們習慣於使用ping去測試網絡的連通性。如果ping不通,我們往往會去懷疑是不是路由配置錯了。 路由是什麼 我們知道,IP地址是網絡世界裏的門牌號。你可以通過IP地址訪問遠在天邊的網站,那麼數據是如何到達網站的呢?靠的就

原创 packetdrill:測試TCP協議棧行爲的利器

1.簡介 packetdrill是一個非常有用的用於測試網絡協議棧的工具,由Google開發,它常用於對網絡協議棧進行迴歸測試,確保新的功能不會影響原有功能。它支持Linux, FreeBSD, OpenBSD與NetBSD內核

原创 TCP擁塞控制基礎

TCP要點有四,一曰有連接,二曰可靠傳輸,三曰數據按照到達,四曰端到端流量控制。注意,TCP被設計時只保證這四點,此時它雖然也有些問題,然而很簡單,然而更大的問題很快呈現出來,使之不得不考慮和IP網絡相關的東西,比如公平性,效率

原创 mTCP:一款面向多核系統的用戶態網絡協議棧

mTCP 是一款面向多核系統的用戶態網絡協議棧 內核態協議棧的缺陷 互聯網的發展,使得用戶對網絡應用的性能需求越來越高。人們不斷挖掘CPU處理能力加強,添加核的數量,但這並沒有使得網絡設備的吞吐率線性增加,其中一個原因是內核協

原创 深入淺出TCP中的SYN-Cookies

本文漸進地介紹TCP中的syn-cookie技術,包括其由來、原理、實例測試。 SYN Flood 攻擊 TCP連接建立時,客戶端通過發送SYN報文發起向處於監聽狀態的服務器發起連接,服務器爲該連接分配一定的資源,併發送SYN+ACK報文

原创 神奇的backlog參數對TCP連接建立的影響

曾經有人問我套接字編程中listen的第二個參數backlog是什麼意思?多大的值合適?我不假思索地回答它表示服務器可以接受的併發請求的最大值。然而事實真的是這樣的嗎? TCP通過三次握手建立連接的過程應該都不陌生了。從服務器的角度看,它

原创 packetdrill--測試TCP協議棧行爲的利器

摘要:packetdrill是一個非常有用的用於測試網絡協議棧的工具,由Google開發,它常用於對網絡協議棧進行迴歸測試,確保新的功能不會影響原有功能。本文主要介紹其基本原理、安裝、入門、測試腳本的編寫方法。 1.簡介 packetdr

原创 TCP擁塞控制之基礎

TCP要點有四,一曰有連接,二曰可靠傳輸,三曰數據按照到達,四曰端到端流量控制。注意,TCP被設計時只保證這四點,此時它雖然也有些問題,然而很簡單,然而更大的問題很快呈現出來,使之不得不考慮和IP網絡相關的東西,比如公平性,效率,因此增加了

原创 走進 mTCP

mTCP 是一款面向多核系統的用戶態網絡協議棧 內核態協議棧的缺陷 互聯網的發展,使得用戶對網絡應用的性能需求越來越高。人們不斷挖掘CPU處理能力加強,添加核的數量,但這並沒有使得網絡設備的吞吐率線性增加,其中一個原因是內核協議棧成爲了限

原创 epoll 是如何工作的

本文包含以下內容: epoll是如何工作的 本文不包含以下內容: epoll 的用法 epoll 的缺陷 我實在非常喜歡像epoll這樣使用方便、原理不深卻有大用處的東西,即使它可能已經比較老了 select 和 poll 的缺

原创 探索runC (下)

回顧 本文接 探索runC(上) 前文講到,newParentProcess() 根據源自 config.json 的配置,最終生成變量 initProcess ,這個 initProcess 包含的信息主要有 cmd 記錄了要執行

原创 密碼學初學者可以理解的密碼學庫

區塊鏈、加密貨幣、VPN、數字證書……這些概念的背後基石都是密碼學,瞭解密碼學的原理和經典實現方法對於學習理解前面的應用是大有裨益的。 cryptoC 作爲一個供密碼學初學者入門的密碼學庫,實現了以下經典的密碼系統: 對稱密碼系統 D