㈠ 重新認識HTTP三次握手和四次揮手
HTTP的三次握手和四次揮手機制是TCP連接建立和關閉的關鍵過程。
三次握手: 目的:確保客戶端和伺服器之間能夠可靠地建立連接。 過程: 第一次握手:客戶端發送一個帶有SYN標志的數據包給伺服器,請求建立連接。 第二次握手:伺服器收到SYN後,發送一個帶有SYN和ACK標志的數據包作為響應,表示同意建立連接。 第三次握手:客戶端收到伺服器的SYNACK後,發送一個帶有ACK標志的數據包作為確認,至此連接建立成功。 重要性:通過三次握手,雙方能夠確認對方的接收和發送能力,從而確保連接的可靠性。如果伺服器未收到客戶端的ACK,可能會認為連接未建立成功,此時可能面臨SYN攻擊的風險,需要採取相應的防禦措施。
四次揮手: 目的:確保客戶端和伺服器之間能夠正確地斷開連接。 過程: 第一次揮手:主動關閉的一方發送一個帶有FIN標志的數據包給對方,表示希望斷開連接。 第二次揮手:對方收到FIN後,發送一個帶有ACK標志的數據包作為響應,表示已接收到斷開連接的請求。 第三次揮手:在一段時間內,如果對方沒有數據需要發送,則發送一個帶有FIN標志的數據包給對方,表示同意斷開連接。 第四次揮手:主動關閉的一方收到對方的FIN後,發送一個帶有ACK標志的數據包作為確認,至此連接完全斷開。 重要性:由於TCP是全雙工通信協議,每個方向都需要獨立關閉。四次揮手確保了雙方都能正確地關閉連接,避免未確認的數據包混淆或因網路問題導致的連接錯誤報告。TIME_WAIT狀態的存在是為了等待對方可能丟失的ACK響應,並防止新連接與舊連接的埠號沖突,從而確保數據的正確傳遞。