CSAPP 12章 網路程式設計

2021-09-25 12:01:27 字數 2671 閱讀 3125

所有的網路應用都是基於相同的基本程式設計模型有相似的整體邏輯結構,並且依賴相同的程式設計介面

模型,邏輯結構,程式設計介面。

由乙個伺服器程序和多個客戶端程序組成。

伺服器管理某種資源(resource),並通過操作這種資源來為它的客戶端提供某種服務(service)例子

web伺服器,resource:一組磁碟檔案,service:檢索和執行

ftp伺服器,resource:一組磁碟檔案,service:儲存和檢索

電子郵件伺服器,resource:乙個spool檔案,service:讀和更新

模型中的基本操作:事務(transaction)

四步:1、當客戶端需要乙個服務時,它向伺服器傳送乙個請求(request),發起乙個事務。如,當web瀏覽器需要乙個檔案時,它就傳送乙個請求給web伺服器

2 伺服器解析請求,以適當的方式操作它的資源。如,web伺服器收到瀏覽器發出的請求後,就讀取乙個磁碟檔案

3 伺服器給客戶端傳送乙個響應(response),並等待一下請求。如,web伺服器將檔案傳送給客戶端瀏覽器

4 客戶端收到響應並處理它。如,當web瀏覽器收到響應後,就在螢幕上顯示此頁面。

客戶端和伺服器通過網路相連。

對主機而言,網路是一種i/o裝置。

網路---網路介面卡---i/o匯流排---i/o橋介面

網路上的資料---網路介面卡---i/o匯流排---儲存器匯流排---儲存器

儲存器---儲存器匯流排---i/o匯流排---網路介面卡---網路

網路層次結構:最底層 lan(區域網,如乙太網 ethernet)

乙太網段(ethernet segment):一些電纜(通常是雙絞線)和乙個叫做集線器(hub)的小盒子

乙太網段通常服務於乙個小區域,每根電纜都有相同的最大位頻寬(如100mb/s,1gb/s),一段連線到主機的介面卡,另一端連線到集線器的乙個埠(port)上。集線器不加分辨的將從乙個埠上收到的每個位複製到其他所有埠上。因此,每台主機都能看到每個位。

每個乙太網介面卡都有乙個全球唯一的48位位址,它儲存在這個介面卡的永久性儲存器上。

一台主機可以傳送一段位(成為幀 frame)到這個網段內其他任何主機。

每個幀包括一些固定數量的頭(header)位,用來標識此幀的源和目的位址以及此幀的長度,此後緊隨的就是資料位的有效載荷(payload)。每個主機介面卡都能看到這個幀,但是只有目的主機實際讀取它。

一些電纜和叫做網橋(bridge),多個乙太網段可以連成較大的區域網,成為橋接乙太網(bridged ethernet),一些電纜連線網橋和網橋,另一些連線網橋和集線器,這些電纜的頻寬可以是不同的。

網橋比集線器更充分的利用了電纜的頻寬。利用一種分配演算法,它們隨時間自動學習哪個主機可以通過哪個埠可達,然後在有必要時,有選擇的將幀從乙個埠拷貝到其他埠。

例如,如果主機a傳送乙個幀到同網段上的主機b,當該幀到達網橋x的輸入埠時,它將丟棄該幀,因而節省了其他網段上的頻寬。如果主機a傳送乙個幀到乙個不同網段的主機c,那麼網橋x只會把此幀copy到和網橋y連線的埠上,網橋y會只把此幀copy到與主機c的網段連線的埠上。

區域網簡化:集線器,網橋,連線電纜 -------- 一根水平的線

多個不相容的區域網通過路由器(router)的特殊計算機連線起來,組成乙個internet(網際網路絡)

每台路由器對它所鏈結的每個網路都有乙個介面卡(埠)。它也能連線高速點到點**連線,這是wan(wide-area network,廣域網)的一種示例。

路由器可以用來有各種區域網和廣域網構建internet(網際網路絡)

兩個區域網和兩個廣域網由3個路由器連線起來。

internet(網際網路絡):它由採用完全不同和不相容技術的各種區域網和廣域網組成。

協議軟體:執行在每台主機和路由器上的協議軟體(protocol software)

網際網路 客戶端-伺服器 組織:基本硬體和軟體

每台主機都實現tcp/ip協議軟體,

客戶端和伺服器混合使用套接字介面(sockets inte***ce)函式和unix i/o函式進行通訊

ip協議:命名方法和遞送機制,資料報(datagram)

tcp協議:提供程序間可靠的全雙工連線

Windows 程式設計1 2章

windows.h 中包含了 許多其他的標頭檔案 主要是 winuser.h 使用者介面 winbase.h kernel函式 windef.h 一些型別的define winnt.h 支援 unicode形態定義 wingdi.h 包含圖形介面函式 應用程式的入口函式 int winapi win...

Windows 程式設計1 2章

windows.h 中包含了 許多其他的標頭檔案 主要是 winuser.h 使用者介面 winbase.h kernel函式 windef.h 一些型別的define winnt.h 支援 unicode形態定義 wingdi.h 包含圖形介面函式 應用程式的入口函式 int winapi win...

程式設計珠璣第12章

正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...