第二章 構造高效且健壯的網路程式 一

2021-06-15 04:27:00 字數 2518 閱讀 5734

第二章 構造高效且健壯的網路程式(一)

技巧15:理解tcp的寫操作

1、從應用題程式的角度看寫操作

首先會將資料從使用者緩衝區複製到核心中去,tcp可能傳送全部、部分或者不傳送資料,應用程式無法判定傳送了多少資料,也無法判斷對等實體是否判定

除非tcp傳送緩衝區滿了,否則寫操作是不會被阻塞的

寫操作:將資料複製到傳送佇列,並通知tcp佇列中有新資料

2、從tcp角度看寫操作

1)tcp傳送策略

盡可能有效地利用可用頻寬,以mss尺寸的塊傳送資料;不能超過對等實體緩衝區的範圍

2)擁塞控制

tcp傳送的最大資料量:傳送視窗和擁塞視窗的最小值

傳送視窗:由對等實體控制,防止使對等實體的緩衝區溢位

擁塞視窗:由tcp控制,防止傳送資料超出網路容量

3)流量控制演算法

慢啟動:慢慢地(指數級增加)將向網路傳送資料的速率增加到乙個門限值

4)nagle演算法

在任意指定的時刻,未被確認的"小"端不能超多乙個

技巧16:理解tcp的有序釋放操作

1、資料傳輸到連線拆除階段

客戶端和伺服器關閉自己端的連線,通知對等實體完成資料的傳輸,效果上是傳送一條eof

2、shutdown呼叫

關閉半邊連線

關閉套接字和呼叫shutdown的區別:

①shutdown並沒有關閉套接字,並沒有釋放套接字及其資源

②呼叫shutdown,會影響到所有開啟那個套接字的程序。而close套接字的其他持有者仍像沒有什麼事情發生一樣

3、有序釋放

確保兩端都能在連線拆除之前收到所有來自其對等實體的資料

技巧17:考慮用inetd來裝載應用程式

網際網路監視程式inetd可以使應用程式聯網

1、tcp伺服器

負責監聽應用程式知名埠上的連線請求,接受連線,將連線對映到stdin、stdout和stderr上,並啟動適當的伺服器

2、udp伺服器

沒有監聽的連線

技巧18:考慮用tcpmux為伺服器"分配"知名埠

1、埠號:知名埠、註冊埠號以及動態或私有埠

技巧19:考慮使用兩條tcp連線

1、單連線結構

xin和xout共享一條與外部系統的連線,連線按照單工方式處理的

2、雙連線架構

維護兩條魚外部系統之間的連線

技巧20:使應用程式成為事件驅動的(1)

1、事件驅動

任何時間都可以從任意一條連線上接受資料,也可以出現超時,不需要等待任何其他事件

2、select機制

同時阻塞在幾個事件上,並在其中任意乙個事件準備就緒時返回

侷限於固定數量的描述符

技巧21:使應用程式成為事件驅動的(2)

1、防止新報文重置定時器

技巧22:不要用time-wait暗殺來關閉一條連線

1、time-wait介紹

1)拆除乙個tcp連線

主機1的應用程式關閉自己的連線,使得tcp向主機2傳送乙個fin。

主機2對這個fin進行ack,並將fin作為乙個eof傳送給應用程式。

主機2的應用程式關閉了連線,向主機1傳送乙個fin,主機1以乙個ack應答

主機2關閉連線並釋放資源,主機1沒有關閉連線,進入time-wait狀態,停留2msl

最大分段壽命,分段被丟棄之前在網路中可以存活的最大時長

①主動關閉的一端進入time-wait狀態

②msl定義為2分鐘

③連線處於time-wait狀態時有分組到達,就重啟2msl的定時器

2、使用目的

1)目的

①維護連線狀態,防止主動關閉連線的那端傳送的最後一條ack丟失後造成另一端重新傳送fin訊號

例:如果主動關閉沒有time-wait,收到重傳的fin時,tcp會用rst(重置)來響應,對等實體會產生乙個錯誤狀態,而不會有序地終止

②為耗盡網路中所有此連線的"走失段"提供時間

例:兩台主機間用同樣的埠號建立一條新連線,這條走失的段看起來就像屬於那條新連線,如果走失分段中的資料的任意乙個序列號碰巧落在了新連線的當前接受視窗中,這部分資料就會被接受,從而對新連線造成破壞

3、time-wait暗殺

當一條連線出於time-wait狀態並收到乙個rst時,應該立即將連線關閉

技巧23:伺服器應該設定so_reuseaddr選項

1、so_reuseaddr選項

指示tcp允許繫結到乙個已經在使用的埠上去

第二章 建構函式

default constructor的構造操作 什麼時候才會合成乙個default construct 當編譯器需要它的時候,此外,被合成出來的 construct 只執行編譯器所需要的行動。nontivial default constructor的 4種情況 1.帶有 default cons...

軟體構造第二章隨筆

1.瀑布模型 要求 設計 實現 驗證 維護 2.增量模型 以增量的方式實施瀑布模型 通常首先實現優先順序最高的需求 當某增量開發完成,則對應的需求被凍結 3.v模型 強調了瀑布模型的測試環節 4原型法 先實現乙個系統原型,模擬最終的幾個方面,甚至完全不同,細節問題可以忽略。在專案早期可以獲得使用者的...

第二章 網路應用

第二章 網路應用 1.網路應用體系結構 識記網路應用特性結構與分類 客戶 伺服器 c s 結構 純p2p結構 混合結構 領會c s網路應用 p2p網路應用以及混合網路應用的特點 區別與聯絡 c s最主要的特徵是通訊只在客戶與伺服器之間進行,客戶與客戶之間不進行直接通訊 p2p結構可以動態地直接與其他...