原创 (5)RARP:逆地址解析協議

一、簡介     無盤系統的RARP實現過程是從接口卡上讀取唯一的硬件地址,然後發送一份RARP請求(一幀在網絡上廣播的數據),請求某個主機響應該無盤系統的IP地址(在RARP應答中)。感覺這個過程和上一章中的免費ARP一樣。 二、RAR

原创 有關Linux文件描述符中的close on exec標誌位

    首先說明下文件描述符,文件描述符標誌,文件狀態標誌的區別:    文件描述符:標識文件用的;    文件描述符標誌(目前就只有一個close-on-exec):僅僅是一個標誌,當進程fork一個子進程的時候,在子進程中調用了exe

原创 (9)IP選路

一、簡介     選路是IP最重要的功能之一。IP層工作流程如下所示: 二、選路的原理     IP搜索路由表的幾個步驟爲:     (1)搜索匹配的主機地址;     (2)搜索匹配的網絡地址;     (3)搜索默認表項(默認表項一

原创 Linux下管道使用的一些限制

    在書上和網上翻了翻,管道是單向的、先進先出的,它把一個進程的輸出和另一個進程的輸入連接在一起。一個進程(寫進程)在管道的尾部寫入數據,另一個進程(讀進程)從管道的頭部讀出數據。Linux管道分爲無名管道和命名管道。 一、無名管道p

原创 (10)動態選路協議

一、簡介     動態選路協議用於路由器間的通信。 二、RIP:選路信息協議     RIP報文包含在UDP數據報中。如下所示:     RIP常用的UDP端口號是520。RIP協議的routed程序正常運行過程如下:     (1)初

原创 (4)ARP:地址解析協議

一、簡介     ARP爲IP地址到對應的硬件地址之間提供動態映射。之所以稱爲動態是因爲這個過程是自動完成的。一般應用程序用戶或系統管理員不必關心。RARP是被那些沒有磁盤驅動器的系統使用,它需要系統管理員進行手動設置。稍後介紹。    

原创 (6)ICMP:Internet控制報文協議

一、簡介     ICMP經常被認爲是IP層的一個組成部分。它傳遞差錯報文以及其他需要注意的信息。ICMP報文通常被IP層或更高層協議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。     ICMP報文是在IP數據報內

原创 (8)Traceroute程序

一、簡介     Traceroute程序可以讓我們看到IP數據報從一臺主機傳到另一臺住進所經過的路由及IP源路由選項。 二、Traceroute程序的操作     爲什麼不使用IP記錄路由選項,而是重新開發一個新的應用程序,原因有以下三

原创 (8)算法設計

一、算法設計     1、問題描述:輸入具有n個浮點數的向量x,輸出是輸入向量的任何連續子向量中的最大和。     有效解決方法:     (1)分治算法:要解決規模爲n的問題,可遞歸得解決兩個規模近似爲n/2的子問題,然後對他們的答案進

原创 通過互斥量和讀寫鎖來實現進程間通信

    一個簡單的進程間鎖的例子,通過在父進程聲明,然後在fork出來的子進程變可以使用這個鎖的對象來進程數據訪問的互斥控制。直接看代碼吧。。 #ifndef _SHARE_LOCK_H_ #define _SHARE_LOCK_H_

原创 (7)Ping程序

一、簡介     Ping程序的目的是爲了測試另一臺主機是否可達。該程序發送一份ICMP回顯請求報文給主機,並等待返回ICMP回顯應答。一般來說,不能Ping到某臺主機,就不能Telnet或FTP到那臺主機。 二、Ping程序     I

原创 fork後的exec

    由fork創建的新進程被稱爲子進程。子進程和父進程繼續執行fork調用之後的指令,子進程是父進程的一個副本。例如,子進程獲得父進程數據空間、堆和棧的副本。注意,這是子進程所擁有的副本。父子進程並不共享這些存儲空間部分。父子進程共享

原创 並查集與十度好友

一、問題簡介     首先說下問題吧,這裏就不做廣告了,在社交網絡中,假設A和B是好友,B和C是好友,如果A和C不是好友,那麼就說C是A的二度好友,在一個有10萬人人際網絡中,如何在時間O(n)時間裏,找到某個人的十度好友。     查了

原创 關於字符編碼:ASCII,Unicode和UTF-8

1、ASCII碼     我們知道,在計算機內部,所有的信息最終都表示爲一個二進制的字符串。每一個二進制位(bit)有0和1兩種狀態,因此八個二進制

原创 (1)開篇

一、抽象問題     作者在被問到一個問題:“怎樣給一個磁盤文件排序”時,起初想到的是一些有關如何在磁盤上實現歸併排序的簡單思想。而當深究問題的細節時會發現,通過磁盤上的歸併排序不能是的問題被很好的解決。於是,對問題進行更客觀、更易用的形