.1 UDP與TCP
- IP中的檢驗和只檢驗IP數據報的首部, 但UDP的檢驗和檢驗 偽首部 + 首部 + 數據
- TCP的交互單位是數據塊, 但仍說TCP是面向字節流的, 因為TCP僅把應用層傳下來的數據看成無結構的字節流, 根據當時的網絡環境組裝成大小不一的報文段.
- 10秒內有1秒用于發送端發送數據, 信道利用率就是10%
- TCP報文段由首部和數據部分組成, 緊急位URG的作用就是將緊急指針所指示的數據放到數據部分的最前面
2.1 DNS系統
- 域名由點和標號(label)組成, 點分割的即是標號
- 每個標號不超過63個字符,總計不超過255個字符, 并且不區分大小寫
- 頂級域名TLD(Top Level Domain)分為三類, 國家頂級域名nTLD, 通用頂級域名gTLD, 基礎結構域名ID(Infrastructure Domain). 基礎結構域名只有一個即 arpa. 用于反向域名解析, 因此被稱為反向域名
- 2011年開始, 頂級域名TLD新增了一類新通用頂級域名(New gTLD)
- 域名服務器管轄范圍(或有權限的)以區 (zone) 為單位, 而非域(domain)。各單位根據具體情況來劃分自己管轄范圍的區, 但在一個區中的所有節點必須是能夠連通的。管轄一個區的服務器就是權限域名服務器, 后有詳細敘述
實際上也很好理解, 例如對于一個com頂級域名, 其下轄的二級域名可能以億單位, 這時我們當然不可能用一臺com頂級域名服務器就全部管轄. 區≤域
- 域名服務器可以劃分為四種類型: 根/頂級/權限/本地域名服務器.
其中根域名服務器知道所有頂級域名服務器的域名和ip, 即根域名服務器可以解析所有com/org等頂級域名.
根域名服務器一共有13臺(A~M), 每臺又由許多物理節點組成, 這些物理節點會分布在世界各地.
每臺根域名服務器的IP地址和域名都是不同的, 但同一臺內的所有物理節點的IP地址都是相同的, 因此采用了任播(anycast)技術后, 會自動尋找IP地址相同, 但距離最近的物理節點. - 每臺域名服務器都會有一些分布式備份, 其中只能在主域名服務器中進行數據更改, 輔助域名服務器是備份.
- 每臺域名服務器都啟用了高速緩存
- 主機中也啟用了高速緩存, 例如在開機后自動從本地域名服務器下載全部數據
.2 HTTP協議
- n個文檔的傳輸時間為 : n X (2RTT + 文本傳輸時間), 因此HTTP1.1版本后使用了持續連接(Persistent Connection). 持續連接又分為非流水線方式(Without Pipelining)和流水線方式(With Pipelining).
- 非流水方式指的是, 客戶端必須要收到上一個請求的響應后, 才能發出下一個請求.
相比非持續連接, n個文檔傳輸能省去 n-1 個建立TCP連接的RTT.
n個文檔的傳輸時間為 : (RTT +nRTT + n X 文本傳輸時間), - 流水方式中, 由于沒有限制請求必須在響應之后發送, 因此文檔傳輸的時間不定.最好的情況下, 客戶端一次性發送完所有請求, 傳輸時間為2RTT+ n X 文本傳輸時間
- HTTP1.1 版本的一個缺點是, 即使客戶端可以一次性發送多個請求, 但服務器只能按照請求的順序逐一回復, 如果某一請求耗時特別長, 就會阻塞后面的請求
HTTP2 版本中, 服務器可以并行發回所有響應, 而不必按序. - HTTP2 版本中, 把所有報文劃分為二進制編碼的幀
.3 文件傳送協議
基于TCP的文件傳輸協議FTP(File Transfer Protocol)和基于UDP的簡單文件傳輸協議TFTP(Trivial)共同的特點是: 任何操作都要先獲得一個本地副本文件, 任何修改都要先在副本文件上進行.
舉個例子, A想要在B的某個文件最后新增一個字母, 則必須先要將文件傳輸到A, A完成修改后再回傳覆蓋.
.3.1 TFTP
TFTP主要有以下特點:
- 傳輸數據塊大小為512字節。
- 只支持讀取和寫入兩種操作。
- 沒有用戶身份驗證、加密和完整性校驗功能。
- 使用UDP作為傳輸層協議,不保證可靠性
- 默認使用69號端口。
TFTP的工作過程很像停止等待協議,發送完一個文件塊后就等待對方的確認,確認時應指明所確認的塊號。
發送完數據后在規定時間內收不到確認就要重發數據PDU,發送確認PDU的一方在規定時間內收不到下一個文件塊,也要重發確認PDU。這樣保證文件的傳送不致因某一個數據報的丟失而告失敗。
.4 P2P
- 在BT中, 使用"最稀有的優先(rarest first)" 技術優先請求最稀有的文件塊, 避免之后收集不到
- 在BT中, 還運用了對等傳輸的思想. 如果A以最高速率向B發送文件, B 也會將A的優先級設為最高.