天天看點

總結:TCP/IP 詳解(卷3:TCP 事務協定、HTTP、NNTP 和 UNIX 域協定)--第十章 T/TCP 實作:TCP 函數第十章  T/TCP 實作:TCP 函數

第十章  T/TCP 實作:TCP 函數

本章包括了 T/TCP 作過修改的各個 TCP 函數。也就是說,tcp_output、tcp_input,和 tcp_usrreq 以外的所有函數。本章定義了兩個新的函數,tcp_rtlookup 和 tcp_gettaocache,用于在 TAO 緩存中查找記錄項。

tcp_close 函數修改以後,當使用 T/TCP 的連接配接關閉時,可以在路由表中記錄往返時間估計值(平滑的平均值和平均偏差估計)。正常協定隻在連接配接上傳送了至少 16 個滿資料封包段後才紀錄。然而,T/TCP 通常隻發送少量資料,但與同一對等端之間的這些不同連接配接的估計值應該保留下來。

T/TCP 中對 MSS 選項的處理也有所改變。有一部分改變是為了在 Net/3 中清理過載的 tcp_mss 函數,這樣就把它分成了一個計算 MSS  以便發送的函數和另一個處理接收到的 MSS 選項的函數。T/TCP 同時也将從對等端收到的最新 MSS 值儲存到 TAO 緩存記錄項中。在接收到伺服器的 SYN 和最新的 MSS 之前,如果要随 SYN 發送資料,T/TCP 就用這個記錄來初始化發送 MSS。

Net/3 中的 tcp_dooptions 函數修改以後能夠識别三個新的 T/TCP 選項:CC、CCnew 和 CCecho。

給定主機的 TAO 資訊儲存在路由表的記錄項中。函數 tcp_gettaocache 讀取為某主機緩存的 TAO 資料,但如果在 PCB 的路由緩存中尚不存在相應的路由,則調用 tcp_rtlookup 來查找主機。

T/TCP 修改 tcp_close 函數,在路由表中為 T/TCP 連接配接儲存兩個估計值 srtt 和 rttvar,即使連接配接中隻傳送了不到 16 個滿長度的封包段。這樣就使與該主機的下一次 T/TCP 連接配接可以在開始時使用這兩個估計值。

Net/3 的函數 tcp_mss 在 T/TCP 中分成了兩個函數:tcp_mssrcvd 和 tcp_msssend。前者在收到 MSS 選項後調用,後者在發出 MSS 選項時調用。後者與通常的 BSD 做法的不同之處在于,它一般聲明其 MSS 為輸出接口的 MTU 減去 TCP 和 IP 首部的長度。BSD 系統會向非本地對等主機聲明取值為 512 的 MSS。

Net/3 中的 tcp_dooptions 函數在 T/TCP 中也有改變。函數的若幹個參數取消了,用一個結構來代替。這就使函數可以處理新的選項,而不需增加參數。

希望我的總結可以幫助大家,感謝閱讀我的部落格!