1.2 源代碼表示不考慮主題,列舉 15 000行源代碼本身就是一件難事。下面是所有源代碼都使用的文本格式:1.2.1 將擁塞窗口設置為13 8 7 - 3 8 8 這是文件t c p _ s u b r . c中的函數t c p _ q u e n c h。這些源文件名引用4 . 4 B S D - L i t e發布的文件。4 . 4 B S D在1 . 1 3節中討論。每個非空白行都有編號。正文所描述的代碼的起始和結束位置的行號記于行開始處,如本段所示。有時在段前有一個簡短的描述性題頭,對所描述的代碼提供一個概述。這些源代碼同4 . 4 B S D - L i t e發行版一樣,偶爾也包含一些錯誤,在遇到時我們會提出來并加以討論,偶爾還包括一些原作者的編者評論。這些代碼已通過了 G N U縮進程序的運行,使它們從版面上看起來具有一致性。制表符的位置被設置成 4個欄的界線使得這些行在一個頁面中顯示得很合適。在定義常量時,有些 # i f d e f語句和它們的對應語句 # e n d i f被刪去(如:G A T E W A Y和M R O U T I N G,因為我們假設系統被作為一個路由器或多播路由器 )。所有r e g i s t e r說明符被刪去。有些地方加了一些注釋,并且一些注釋中的印刷錯誤被修改了,但代碼的其他部分被保留下來。這些函數大小不一,從幾行 (如前面的t c p _ q u e n c h)到最大11 0 0行(t c p _ i n p u t)。超過大約4 0行的函數一般被分成段,一段一段地顯示。雖然盡量使代碼和相應的描述文字放在同一頁或對開的兩頁上,但為了節約版面,不可能完全做到。本書中有很多對其他函數的交叉引用。為了避免給每個引用都添加一個圖號和頁碼,書封底內頁中有一個本書中描述的所有函數和宏的字母交叉引用表和描述的起始頁碼。因為本書的源代碼來自公開的 4 . 4 B S D _ L i t e版,因此很容易獲得它的一個拷貝:附錄 B詳細說明了各種方法。當你閱讀文章時,有時它會幫助你搜索一個在線拷貝 [例如U n i x程序grep ( 1 )]。描述一個源代碼模塊的各章通常以所討論的源文件的列表開始,接著是全局變量、代碼維護的相關統計以及一個實際系統的一些例子統計,最后是與所描述協議相關的 S N M P變量。全局變量的定義通常跨越各種源文件和頭文件,因此我們將它們集中到的一個表中以便于參考。這樣顯示所有的統計,簡化了后面當統計更新時對代碼的討論。卷 1的第2 5章提供了S N M P的所有細節。我們在本文中關心的是由內核中的 T C P / I P例程維護的、支持在系統上運行的S N M P代理的信息。TCP IP詳解 卷1協議 :http://dl.21ic.com/download/tcpip-288223.html TCP IP詳解 卷2實現 :http://dl.21ic.com/download/tcpip-288224.html TCPIP詳解卷三:TCP事務協議,HTTP,NNTP和UNIX域協議 :http://dl.21ic.com/download/tcpip-288225.html
第1章 引 言產業界人士和觀察家(甚至包括那些經過多年外層空間旅行剛剛返回這個世界的人)都已經很清楚,因特網( I n t e r n e t)發展所達到的地位和其所產生的現象都不同于本世紀或上世紀所提出的任何一種技術。 I n t e r n e t的延伸和影響范圍、有關 I n t e r n e t 出版物、以及包括美國在線(A O L)、美國電報電話公司( AT & T)和微軟公司等I n t e r n e t產業界的大量風險投資者,這一切都會使我們有一種紛繁迷亂的感覺。所有這些都是通過這樣或那樣的方式與 I n t e r n e t連接起來。I n t e r n e t也是Joe Sixpack和Fortune 1000這樣的網站每天都關心、考慮和使用的唯一技術。或許I n t e r n e t是世界上少有的幾個能夠以相同的平等程度來對待每一個用戶的實體組織之一。一個企業的首席執行官( C E O)如果想給公司提供更好的網絡服務保證,他必須建立一個專用網絡。而在I n t e r n e t中,每一個人對網絡的訪問都是平等的。I n t e r n e t的發展并沒有損害到那些在過去 1 5 0年中所發展起來的其他技術。的確,電話技術是相當重要的,它可以使我們能夠在雙方不見面的情況下通過聲音與線路另一端的人通話。同樣,汽車也改變了我們的生活,汽車的出現能夠使我們在一天之內跨越更大的距離,而這個距離要比任何其他動物多出一個數量級。電燈、無線電和電視都曾經是改善我們日常生活的十分重要的技術,擴展了我們在非睡眠狀態的時間,向我們傳播各種信息,使我們享受更多的娛樂。我們已經在很大程度上解決了生存問題。大多數人的飯桌上有足夠的食品、有溫暖的住所,并且都有一個工作場所,可以每天早出晚歸地工作。我們也可以不必被動地接收各種電視節目,而可以輕松地使用遙控器選擇欣賞自己喜愛的頻道。I n t e r n e t除了有把事情變得更好的能力外,也可能會把事情搞得更糟。在好的一方面,I n t e r n e t能夠使我們在世界范圍同人們進行對等通信;使我們能夠訪問那些存儲在數以百萬計的網絡計算機上的幾乎無限的大量信息。一些功能強大的搜索引擎能夠使我們更加簡單和迅速地實現對有用、有意義的信息資源的定位。不同階段的商務活動,包括從最初的偶然興趣直到成熟的采購定單等,都可以在 I n t e r n e t上完成。甚至于許多人已經開始幻想在將來的某天,I n t e r n e t能使我們不再需要每天早起去上班了。人們可以靠在枕頭上使用一臺膝上型計算機(或許將來可能出現的任何先進的計算機)通過撥接 I n t e r n e t對所有的商務活動和某些消遣娛樂進行管理和維護。在不利的一方面,I n t e r n e t也可能使我們成為有電子怪癖的人,使我們缺乏與其他人進行直接交流的能力。人們僅有的非睡眠時間都將被耗費在計算機的熒光屏前,不停地鍵入I n t e r n e t地址(U R L)或指向其他的超級鏈接。最令人不安的是,由于“等待回應( W F R E,waiting for reply)”而浪費的時間是不可挽回的。 W F R E現象的出現是由于I n t e r n e t上太擁塞、太慢,以至于你的瀏覽器似乎進入了一個永久“等待回應”的狀態。有時候它只是幾秒鐘的問題;另一些情況下可能是幾分鐘。你在 W F R E狀態下盯著計算機熒光屏等待所花費的時間第一部分 概 述是相當大的,這些時間的總和可能會是一個令人吃驚的數字,其數量級或許是幾個月甚至幾年。我們所討論的要點在于:1) Internet已經經歷了巨大的增長過程,并且這種增長將會繼續。2) 不論是居民用戶或者是團體用戶, I n t e r n e t都受到了同等的歡迎。對于后者, I n t e r n e t還意味著新的收入增長點。3) 一些實力很強并且有創造力的產業巨頭正在致力于 I n t e r n e t的應用,以便為其企業自身及其消費者提供有利條件。無庸置疑,不論是偶爾對 I n t e r n e t的臨時使用還是正式規范地應用I n t e r n e t,都將導致對I n t e r n e t更多的興趣和廣告宣傳。與此同時,也將伴隨著 I n t e r n e t應用和及其流量的成比例的增長。4) 目前I n t e r n e t的帶寬和容量還是缺乏的,這導致了 I n t e r n e t上不穩定的響應時間和不可預知的性能。同時產生的問題是, I n t e r n e t是否有能力支持未來的、高帶寬需求的、時延敏感的應用?或者說I n t e r n e t是否有能力支持居民對帶寬容量的適度增長的需求?我們是如何進入了這樣一個不穩定的狀態呢?這個問題有若干答案,但其中沒有一個是真正有權威性的解釋,或許還有一些是可以根本不考慮的。首先, I n t e r n e t是其自身成功的一個受害者。每一天都有新的用戶加入到 I n t e r n e t中,越來越多的人不停地使用瀏覽器通過一個We b站點搜尋他們所感興趣的下一個 We b站點。由于訪問 I n t e r n e t的價格僅是電話的市話費用附加一個適度的費率,因此并沒有一個價格上的保護手段來防止某些瀏覽者對 I n t e r n e t資源的長時間占用。另一種資源的缺乏不一定是由于網絡資源的不足引起的,而更大程度上是由于服務器的資源不足造成的。對某些服務器或服務器陣列來說,突發性的連接請求所引起的負荷和突發的頻度可能大大超過了這些服務器的處理能力。這種突發的大量的連接請求一般發生在大量的客戶試圖同時訪問同一個 We b服務器的時候。這個問題可以被認為是一個臨時性的問題,因為服務器的供應商通常會不斷地提供新型的內容服務器主機、負載平衡器、 We b緩存器等來使該問題得到緩解 。另一個問題是某些鏈路可能正好沒有足夠的帶寬來支持業務所提供的流量負荷。這個問題的部分解決方案當然是增加更多的帶寬;一些新的技術,如波分復用( W D M)技術,似乎可以為用戶提供幾乎無限的帶寬。所有這些我們上述所討論的問題都是造成 I n t e r n e t及I n t r a n e t(I n t r a n e t是I n t e r n e t在企業范圍內的一個著名的復制品)性能極其不穩定的重要因素。在這些問題中,有很多都已經被研究清楚了;雖然其中有些諸如價格等問題是不可能在一夜之間得到解決的,但是我們至少已經知道解決方案是存在的,并且可以在不久的將來得到應用。然而,有關I n t e r n e t性能和基于I P協議進行網絡互連的最基本問題,很大程度上還在于基本 I P路由轉發處理過程和該功能的實現平臺。