原创 【Linux 內核網絡協議棧源碼剖析】connect 函數剖析(一)

TCP客戶用 connect 函數來建立與 TCP 服務器的連接,其實是客戶利用 connect 函數向服務器端發出連接請求。 1、應用層——connect 函數 #include <sys/socket.h> int connect(

原创 【Linux驅動】阻塞型I/O(一)

校招結束很久了,回顧校招,除了阿里的筆試沒通過以後,其餘的均通過了筆試拿到面試機會(海康威視由於進錯考場考錯了試卷,沒有拿到面試資格,不過後面去霸面,最後順利拿到offer),在拿到幾個還算重量級的offer以後,後面就開始休息了

原创 【數據結構】圖的鄰接矩陣存儲實現

圖的鄰接表存儲實現:http://blog.csdn.net/wenqian1991/article/details/24667287 圖的鄰接表DFS和BFS算法:http://blog.csdn.net/wenqian1991/art

原创 【數據結構|劍指Offer】單向鏈表的各項操作實現

本博文着重實現《劍指Offer》上面的單向鏈表操作。 //數據結構 struct ListNode { int data; ListNode *next; ListNode(int x) :data(x), next(NULL) {

原创 【Linux 內核】文件系統(結構篇)

ok,繼前面概念篇之後,我們開始正式的探討下Linux的文件系統。 文件系統是對一個存儲設備上的數據和元數據進行組織的機制(教材式還是需要的),在前面的概念篇有說到,Linux支持大多數文件系統,可以預料到Linux文件系統接口

原创 【Linux 內核網絡協議棧源碼剖析】listen 函數剖析

listen 函數僅供服務器端調用,把一個未連接的套接字轉換爲一個被動套接字,指示內核應接受指向該套接字的連接請求。 1、應用層——listen 函數 #include <sys/socket.h> int listen(int soc

原创 【Linux 內核網絡協議棧源碼剖析】ARP地址解析協議

ARP地址解析協議理論前篇參見ARP與RARP,這裏則通過源碼(Linux kernel 1.2.13;net\inet\arp.c)來剖析其內部原理及實現過程。 一、ARP表項 /* * This structure defines

原创 【Linux 內核網絡協議棧源碼剖析】recvfrom 函數剖析

繼前篇介紹完sendto 數據發送函數 後,這裏介紹數據接收函數 recvfrom。 一、應用層——recvfrom 函數 對於這個函數有必要分析一下,先看看這個dup例子。服務器端中調用recvfrom函數,並未指定發送端(客戶端)的地

原创 【Linux驅動】字符設備驅動

,本文假定讀者具備一定linux基礎以及對linux驅動基礎有所瞭解。 ➜ ~ cat /proc/version Linux version 3.13.0-43-generic (buildd@akateko) (gcc v

原创 【Linux 內核網絡協議棧源碼剖析】accept 函數剖析

好,tcp 協議建立連接的幾個函數到這,就還差個accept 函數,這裏直接貼代碼了,不再向前面那般贅述了。 一、應用層——accept 函數 該函數返回一個已建立連接的可用於數據通信的套接字。 #include <sys/socket.

原创 【Linux 內核網絡協議棧源碼剖析】數據包接收(含TCP協議狀態變換)

接前文connect 函數剖析(一) 接收數據包函數,release_sock 函數是在 sock.c中,該函數是在 inet socket 層,其內部的數據結構爲 sock 結構 值得說明的是:雖然該函數放在connect篇幅裏介紹,但

原创 【Linux驅動】阻塞型I/O(二+併發控制)

承接上文,這裏繼續學習linux內核驅動併發控制阻塞型I/O。 廢話不多說,直接看代碼,基礎接口函數請自行查閱相關資料,比如《LDD》。 另外併發控制信號量和linux應用層的信號量概念和原理是差不多的,在內核態使用有所差別而

原创 【Linux 內核網絡協議棧源碼剖析】connect 函數剖析(二)

網絡層——ip_build_header 函數 前篇(跳躍有點大,記得理清思路找到被調用位置,參見connect(一))介紹的 tcp_connect 函數內部調用了 build_header函數,實則是ip層的 ip_build_hea

原创 【Linux 內核網絡協議棧源碼剖析】數據包發送

由於在connect函數中涉及數據包的發送與接收問題,事實上,發送與接收函數不限於connect函數,所以這裏單獨剖析。 承前文繼續剖析 connect 函數,數據包的發送和接收在 ip_queue_xmit 函數和 release_so

原创 【Linux 內核】文件系統(進階篇)

前面相繼介紹文件系統的概念以及Linux內核中與文件系統相關的數據結構及文件系統內部大致關聯以及虛擬文件系統,這裏我們進一步剖析我們應用操作時是如何與文件系統掛鉤的。 上一篇最後有說道,要訪問一個文件就得先訪問一個目錄,才能根據文