HTTP傳回狀态碼的含義比較豐富,随着HTTP版本的變化,狀态碼也在逐漸增加,以滿足越來越多的狀态資訊傳遞。
302錯誤表示被請求的資源暫時轉移(Moved
temporatily),然後會給出一個轉移後的URL,而浏覽器在處理伺服器傳回的302錯誤時,原則上會重建立立一個TCP連接配接,然後再取重定向後
的URL的頁面;但是如果頁面存在于緩存中,則不重新擷取。
404錯誤表示無法找到請求的資源,一般來說是檔案不存在,這時候浏覽器直接顯示一個錯誤。
需要說明的是:實際上HTTP/1.1的RFC中對302和404又定義了很多個子狀态碼,分别表示多種情況,這裡不再一一贅述。
一般的網站在使用者請求的頁面不存在的時候,為了友好起見,會傳回一個302錯誤,然後重定向到一個正常頁面。是以可以看出,如果伺服器在遭受DDOS靜态
頁面請求攻擊而請求頁面又不存在的時候,伺服器傳回302錯誤會比404錯誤消耗的資源更多(當用戶端緩存不存在重定向後的頁面的時候),因為每次請求會
産生一個附加請求,而這次請求還會産生于一個新的TCP連接配接上。
如:浏覽器緩存中存在重定向後的頁面時:
20:08:56.343584 IP 192.168.1.101.2024 > 202.108.22.5.80: S
71017818:71017818(0) win
65535 20:08:56.374726 IP 202.108.22.5.80 > 192.168.1.101.2024: S
3060545990:3060545990(0) ack
71017819 win 2920
20:08:56.374760 IP 192.168.1.101.2024 > 202.108.22.5.80: . ack 1
win 46537
20:08:56.374939 IP 192.168.1.101.2024 > 202.108.22.5.80: P
1:387(386) ack 1 win 46537
20:08:56.409736 IP 202.108.22.5.80 > 192.168.1.101.2024: . ack
387 win 633
20:08:56.412714 IP 202.108.22.5.80 > 192.168.1.101.2024: P
1:436(435) ack 387 win 730
20:08:56.550066 IP 192.168.1.101.2024 > 202.108.22.5.80: . ack
436 win 46483
20:09:56.550674 IP 192.168.1.101.2024 > 202.108.22.5.80: R
387:387(0) ack 436 win 0
從上面的抓包來看,隻有一個TCP連接配接,也隻有一次GET請求。在沒有緩存的時候:
20:19:27.639228 IP 192.168.1.101.2199 > 202.108.22.5.80: S
3150289762:3150289762(0) win 65535
20:19:27.670576 IP 202.108.22.5.80 > 192.168.1.101.2199: S
3636433172:3636433172(0) ack 3150289763 win 2920
20:19:27.670628 IP 192.168.1.101.2199 > 202.108.22.5.80: . ack 1
win 46537
20:19:27.670864 IP 192.168.1.101.2199 > 202.108.22.5.80: P
1:386(385) ack 1 win 46537
20:19:27.705522 IP 202.108.22.5.80 > 192.168.1.101.2199: . ack
386 win 633
20:19:27.708550 IP 202.108.22.5.80 > 192.168.1.101.2199: P
1:436(435) ack 386 win 730
20:19:27.742161 IP 192.168.1.101.2200 > 202.108.22.5.80: S
4011694727:4011694727(0) win 65535
20:19:27.770606 IP 202.108.22.5.80 > 192.168.1.101.2200: S
3523825087:3523825087(0) ack 4011694728 win 2920
20:19:27.770631 IP 192.168.1.101.2200 > 202.108.22.5.80: . ack 1
win 46537
20:19:27.770784 IP 192.168.1.101.2200 > 202.108.22.5.80: P
1:390(389) ack 1 win 46537
20:19:27.805550 IP 202.108.22.5.80 > 192.168.1.101.2200: . ack
390 win 632
20:19:27.811804 IP 202.108.22.5.80 > 192.168.1.101.2200: .
1:1421(1420) ack 390 win 730
20:19:27.812486 IP 202.108.22.5.80 > 192.168.1.101.2200: P
1421:1742(321) ack 390 win 730
20:19:27.812501 IP 192.168.1.101.2200 > 202.108.22.5.80: . ack
1742 win 46537
20:19:27.816437 IP 192.168.1.101.2200 > 202.108.22.5.80: P
390:719(329) ack 1742 win 46537
20:19:27.855014 IP 202.108.22.5.80 > 192.168.1.101.2200: .
1742:3162(1420) ack 719 win 730
20:19:27.856652 IP 202.108.22.5.80 > 192.168.1.101.2200: P
3162:3681(519) ack 719 win 730
20:19:27.856674 IP 192.168.1.101.2200 > 202.108.22.5.80: . ack
3681 win 46537
20:19:27.869872 IP 192.168.1.101.2199 > 202.108.22.5.80: . ack
436 win 46483
20:20:27.857048 IP 192.168.1.101.2199 > 202.108.22.5.80: R
386:386(0) ack 436 win 0
20:20:28.277933 IP 202.108.22.5.80 > 192.168.1.101.2200: F
3681:3681(0) ack 719 win 730
20:20:28.277969 IP 192.168.1.101.2200 > 202.108.22.5.80: . ack
3682 win 46537
20:20:32.857107 IP 192.168.1.101.2200 > 202.108.22.5.80: R
719:719(0) ack 3682 win 0
可用看到,産生了兩個TCP連接配接,一個用的是2199端口,一個用的是2200端口。