原创 網絡端口號的綁定,以及分類

一、計算機"端口"是英文port的義譯,可以認爲是計算機與外界通訊交流的出口。其中硬件領域的端口又稱接口,如:USB端口、串行端口等。軟件領域的端口一般指網絡中面向連接服務和無連接服務的通信協議端口,是一種抽象的軟件結構,包括一些數據結構和

原创 I/O多路複用之select

一、select    I/O多路轉接(select)是高級I/O的一種,阻塞IO,紀錄鎖,系統V流機制,I/O多路轉接(poll/epoll),readv和writev函數以及存儲映射IO(mmap),這些統稱爲高級IO。select系統

原创 C函數指針與回調函數

一、函數指針    簡單聲明一個函數指針並不意味着它馬上就可以使用,和其它指針一樣,對函數指針執行簡接訪問之前必須把它初始化爲指向某一個函數。int f(int);int (*pf)(int)=&f;    第二個聲明創建了函數指針pf,並

原创 ARP的一次請求與應答

ARP:    我們知道,網絡層和網絡層以上使用的是IP地址,但在實際網絡的鏈路上傳送數據幀時,數據包首先是被網卡接受到再去處理上層協議的,所以最終還是必須使用該網絡的硬件地址。但IP地址和下面的網絡的硬件地址之間由於格式不同而不存在簡單的

原创 I/o多路複用之poll

一、poll    不同與select使用三個位圖來表示三個fdset的方式,poll使用一個 pollfd的結構體指針實現。 函數原型如下:其中nfds表示結構體數組中關心的文件描述符的個數,當加入新的文件描述符的時候需更新nfds的值。

原创 線程安全與可重入函數

一、線程安全        在目前線程是操作系統調度的最小單元,進程是資源分配的最小單元。在大多數操作系統中,一個進程可以同時派生出多個線程。這些線程獨立執行,共享進程的資源。線程主要由控制流程和資源使用兩部分構成,因此一個不得不面對的問題

原创 Linux下線程的同步與互斥

 一、線程的互斥  多個線程同時訪問共享數據時可能會衝突,跟之前信號量的可重如性是同樣的問題。如兩個線程都要把某個全局變量增加1,這個操作在某平臺需要三條指令完成:  1. 從內存讀變量值到寄存器2. 寄存器的值加1 3. 將寄存器的值寫回

原创 代理服務器與網絡地址轉換NAT

一、代理服務器    代理服務器是介於瀏覽器和Web服務器之間的一臺服務器。其功能是代理網絡用戶去取得網絡信息。網絡信息則是通過代理服務器進行中轉的。更重要的是:Proxy Server(代理服務器)是Internet鏈路級網關所提供的一種

原创 TCP的三次握手與四次揮手過程的每一步的具體狀態變換

一、TCP的運輸連接管理        TCP是面向連接的協議。運輸連接是用來傳送TCP報文的。TCP運輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程,運輸連接有三個階段,即:連接建立,數據傳送和連接釋放。運輸連接的管理就是使運輸

原创 數組問題 1.行列有序二維數組中查找2.在一組數成對出現的數中有兩個數只出現一次3.在移位數組中查找一個數

一、在一個二維數組中,每一行都按從左到右遞增的順序排序,每一列都按從上到下的遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。思路:首先選取數組中右上角的數字。如果該數字等於要查找的的數字,查找過程

原创 Linux下用環形buf以及POSIX版本信號量解決生產者消費者問題

一、Semaphore(信號量)    Mutex變量是非0即1的,可看作一種資源的可用數量,初始化時Mutex是1,表示有一個可用資源, 加鎖時獲得該資源,將Mutex減到0,表示不再有可用資源,解鎖時釋放該資源,將Mutex重新加到1,