計算機網路自頂向下方法(第七版)-第二章習題參考答案
參考答案
2.1節
RI. 列出5種非專用的因特網應用及它門所吏用的應用層協議。
- 瀏覽器:HTTP((HyperText Transfer Protocol)
- 對等檔案傳輸:FTP(File Transfer Protocol)
- 網路安全協議:SSH(Secure Shell)
- 電子郵件:SMTP(Simple Mail Transfer Protocol)、POP3(Post Office Protocol - Version 3),IMAP(Internet Mail Access Protocol)
- 遠端連線:Telnet
R2. 網路體系結構與應用程式體系結構之間有什麼區別?
網路體系結構指的是網路層次的組織形式,比如我們常見的五層網路結構;應用體系結構指的是應用當中各個部分的組織形式,如客戶—伺服器體系結構或P2P體系結構。
R3. 對兩程序之間的通訊會話而言,哪個程序是客戶,哪個程序是伺服器?
發起通訊的程序是客戶;等待被聯絡的程序是伺服器
R4. 對一個P2P檔案共享應用,你同意“一個通訊會話不存在客戶端和伺服器端的概念”的說法嗎?為什麼?
不同意。對於P2P檔案共享而言,接受檔案的為客戶程序,傳送檔案的為伺服器程序。一個程序既可能是客戶端,也可能是伺服器。
R5. 執行在一臺主機上的一個程序,使用什麼資訊來標識執行在另一臺主機上的程序?
目標主機的IP地址和目標套接字的埠號
R6. 假定你想盡快地處理從遠端客戶到伺服器的事務,你將使用UDP還是TCP?為什麼?
UDP。分析題目可知,強調要快,而UPD的傳送端可定任意速率向網路層注入資料,可以在一次往返時間(RTT)中完成——客戶端將事務請求傳送到UDP套接字,伺服器將回復發送回客戶端UDP套接字。對於TCP,至少需要兩個RTTs:一個用於建立TCP連線,另一個用於客戶機發送請求,以及伺服器傳送回覆。
R7. 參見圖2-4,我們看到在該圖中所列出的應用程式沒有一個同時既要求無資料丟失又要求定時的。你能設想個既要求無資料丟失又高度時間敏感的應用程式嗎?
商品限時秒殺、優惠卷的限時發放、百億補貼券的搶購。時間和訂單資訊十分敏感
**R8. **列出一個運輸協議能夠提供的4種寬泛型別的服務。對於每種服務型別,指出是UDP還是TCP (或這兩種協議)提供這樣的服務?
運輸服務 | TCP | UDP |
---|---|---|
可靠資料傳輸 | √ | × |
吞吐量 | × | × |
定時 | × | × |
安全性 | × | × |
R9. 前面講過TCP能用SSL來強化,以提供程序到程序的安全性服務,包括加密。SSL 執行在運輸層還是應用層?如果某應用程式研製者想要用SSL來強化UDP,該研製者應當做些什麼工作?
應用層;研製者需要在應用程式的客戶端和服務端程式碼中插入SSL程式碼。
2.2~2.4節
R10. 握手協議的作用是什麼?
確認身份,是指主要用來讓客戶端及伺服器確認彼此的身份的一類網路協議
RII. 為什麼HTTP、SMITP 及POP3都執行在TCP,而不是UDP上?
TCP具有面向連線服務和可靠資料傳輸服務,還具有擁塞控制機制,符合HTTP、SMITP 及POP3的對資料傳輸敏感性的要求
RI2. 考慮一個電子商務網站需要保留每個客戶的購買記錄。描述如何使用cokie來完成該功能?
cookie:使用者與伺服器的互動。當新的客戶訪問網站時,生成cookie並返回給客戶,給瀏覽器保管,同時伺服器也記錄一份cookie。等這個客戶再次訪問或買東西時,瀏覽器帶著這個cookie將請求傳送到伺服器,伺服器再在對應的cookie上新增商品記錄。(儲存資料結構可用Map<Cookie, List<Order>>
來模擬)
RI3. 描述Web快取器是如何減少接收被清求物件的時延的。Web快取器將減少一個使用者請求的所有物件或只是其中的某些物件的時延嗎?為什麼?
當用戶訪問某一個資源時,其主機會先向web快取器傳送一個請求,如果使用者請求的資源就在web快取器上,則web快取器將會直接將資源返回給使用者。如果沒有,則向伺服器請求再返回給使用者,並在本地存下該資源。
Web 快取器中儲存最近請求過的物件的副本,會減少所有物件的時延。由於web快取器一般離使用者更近,在web快取器已有資源的情況下,可以降低時延。而在沒有資源,向伺服器請求時,由於web快取器的存在,大大減小了伺服器以及網路核心鏈路的壓力,所以這部分時延也會有所降低。
RI4. Telnet到一臺Web伺服器併發送一個多行的請求報文。在該請求報文中包含If - modifed - sincec:首部行,迫使響應報文中出現“304 Not Modifed"狀態程式碼。
對。
RI5. 列出幾種流行的即時通訊應用。它們使用相同的協議作為SMS嗎?
微信、QQ、釘釘……
R16. 假定Alice使用個基於Web的電子郵件賬戶(例如Hotmail或Gmail)向Bob發報文,而Bob使用POP3從他的郵件伺服器訪問自己的郵件。討論該報文是如何從Alice主機到Bob主機的。列出在兩臺主機問移動該報文時所使用的各種應用層協議。
- Alice使用瀏覽器作為使用者代理,基於HTTP協議將郵件傳送到Alice的郵件伺服器
- Alice的郵件伺服器通過SMTP協議將郵件傳送到Bob的郵件伺服器
- Bob的主機通過POP3協議獲取到Bob的郵件伺服器上的郵件
R17. 將你最近收到的報文首部打印出來。其中有多少Recived:首部行?分析該報文的首部行中的心一行。
略
RI8. 從使用者的觀點看,POP3 協議中下載並刪除模式和下載並保留模式有什麼區別嗎?
在下載並刪除模式:在使用者從POP伺服器下載他的郵件後,資訊就被刪除。對移動的使用者不便,因為使用者無法從不同的機器上訪問郵件。也就是僅能最初那臺訪問伺服器的機器存有郵件。
在下載並保留模式:在使用者取回郵件後,郵件不會被刪除。因為每次當用戶在一臺新的機器上取回儲存的郵件時,所有的沒有被刪除的資訊都將會被傳送的新的機器上(包括非常老的郵件)。例如QQ郵箱就是下載並保留模式,比如在其他電腦登陸Steam的時候,Steam會發送一封驗證碼給你,這個時候移動端的QQ郵箱會收到,Web端的QQ郵箱也會收到。
RI9. 一個機構的 Web伺服器和郵件伺服器可以有完全相同的主機名別名 (例如:foo.com) 嗎?包含能件伺服器主機名的RR有什麼樣的型別?
可以,包含郵件主機名的RR有MX
型別和A
型別,MX
記錄郵件伺服器的簡寫全名對映,A
記錄郵件伺服器的全名和IP地址對映。
RR(Resource Record)是指共同實現DNS分散式資料庫所有的DNS伺服器儲存資源記錄
R20. 仔細檢查收到的電子郵件,查詢由使用.edu電子郵件地址的使用者傳送的報文首部。從其首部,能夠確定傳送該報文的主機的IP地址嗎?對於由Gmail賬號傳送的報文可以做相同的事嗎?
可以;不行。
2.5節
R21. 在BiToment中,假定Alice 向Baob 提供個30秒間隔的檔案塊吞吐量。Bob 將必須進行回報,在相同的間隔中向Alice提供檔案塊嗎?為什麼?
R22. 考慮一個新對等方Alice加人BiTorrent而不擁有任何檔案塊。沒有任何塊,因此她沒有任何東西可上載, 她無法成為任何其他對等方的前4位上載者。那麼Alice將怎樣得到她的第一個檔案塊呢?
在 BitTorrent 中,對等方們每過 30 秒隨機選擇另外的一個鄰居傳送塊,當 Alice 被隨機選中時,她將得到第一個塊。
R23. 覆蓋網路是什麼?它包括路由器嗎?在覆蓋網路中邊是什麼?
覆蓋網路是一種應用層網路(對等方組成的邏輯網路,不是物理鏈路),在P2P協議中,覆蓋網路由檔案共享系統的節點與節點間的邏輯聯絡
(兩個對等方之間的TCP連線)構成,這條邏輯聯絡就是“邊”,不包括路由器。
2.6節
R24. CDN通常採用兩種不同的伺服器放置方法之一。列舉並簡單描述它們。
- 深入(Enter Deep)
在遍及全球的ISP中部署伺服器叢集來深入到ISP接入網中。目標是靠近端使用者,通過減少端使用者到CDN叢集之間的鏈路長度和路由器數量,從而改善使用者請求時延。但管理、維護這一堆叢集的成本很高。 - 邀請做客(Bring Home)
這種方式被許多CDN公司採用。通過在少量關鍵位置建造大型叢集來邀請周邊ISP訪問。不是將叢集放在ISP中,通常放在IXP中(因特網交換點)。這種設計維護和管理開銷更低,但犧牲了部分端使用者的體驗。
R25. 除了如時延、丟包和頻寬效能等網路相關的考慮外,設計種CDN伺服器選擇策略時還有其他重要因素。它們是什麼?
還有負載均衡、晝夜問題、熱點流量、ISP收費、伺服器叢集管理和維護開銷等因素。
2.7節
R26. 2.7節中所描述的UDP伺服器僅需要一個套接字, 而TCP伺服器需要兩個套接字。為什麼?如果TCP伺服器支援n個並行連線,每條連線來自不同的客戶主機,那麼TCP伺服器將需要多少個套接字?
對於UDP伺服器,沒有歡迎套接字,來自不同客戶機的所有資料都通過這個套接字進入伺服器。對於TCP伺服器,有一個歡迎套接字,每當客戶機啟動到伺服器的連線時,就會建立一個新的連線套接字。因此,要支援 n n n 個同時連線,伺服器需要 n + 1 n + 1 n+1 套接字。
R27. 對於2. 7節所描述的執行在TCP之上的客戶—伺服器應用程式,伺服器程式為什麼必須先於客戶程式執行?對於執行在UDP之上的客戶—伺服器應用程式,客戶程式為什麼可以先於伺服器程式執行?
對於TCP應用程式,一旦執行客戶機,它就會嘗試啟動與伺服器的TCP連線。如果TCP伺服器沒有執行,那麼客戶機將無法握手,當然也無法建立連線。對於UDP應用程式,客戶端在執行時不會立即啟動連線(或嘗試與UDP伺服器通訊)