網路設計與維運
透過據點之間的VPN隧道,與遠方的Web伺服器通訊。TCP連線可以建立,小的網頁也能顯示,但只有大檔案的下載會在中途停住。隧道中的MTU為1400位元組,伺服器以禁止分割(DF位元設為1)的方式送出1500位元組的封包。此外,伺服器前方的防火牆設定為丟棄所有ICMP。原因最可能是下列何者?
- ADNS的名稱解析失敗
- BTCP的接收視窗太小,一次能送出的資料量不足
- C丟棄過大封包的路由器所送出、告知需要分割的ICMP訊息無法到達伺服器,伺服器因此無法把封包變小
查看答案與解析
正確答案:C. 丟棄過大封包的路由器所送出、告知需要分割的ICMP訊息無法到達伺服器,伺服器因此無法把封包變小
在路徑MTU探索中,來源把DF位元設為1送出封包,丟棄超過途中MTU之封包的路由器,以ICMP訊息(IPv4為需要分割,IPv6為Packet Too Big)告知可通過的大小。這個訊息若被防火牆丟棄,伺服器會持續送出大封包,而每次都被丟棄,因此只有大量資料的傳輸會停住(路徑MTU黑洞)。建立連線與小的回應因封包小於1400位元組,可以正常送達。對策是不要丟棄這種ICMP訊息,或在隧道入口的路由器把TCP的MSS改寫得較小。設IPv4與TCP的標頭各為20位元組,MTU為1400位元組時,MSS設為 1400 − 20 − 20 = 1360 位元組。
- A. 若無法進行名稱解析,連線的建立與小網頁的顯示也都無法進行。
- B. 接收視窗太小會使傳輸變慢,但不會停住,也與封包大小無關。
- C. 正確。ICMP無法送達時路徑MTU探索就無法運作,只有大封包會持續被丟棄。