請承擔這個問題的天真,因為我幾乎沒有網路知識。請幫助我更清楚地了解這件事。假設有一條河流,兩端的人需要從一端到另一端來回旅行。所以橋可以作為兩端之間的連接,直到時間,橋是活著的,連接被稱為是活著的,旅行是可能的。我想知道保持 TCP 連接處于活動狀態是什么意思以及究竟什么是保持活動狀態?就像河流一樣,橋還活著。
uj5u.com熱心網友回復:
與網橋相反,TCP 連接不是物理事物,而只是兩端之間的邏輯關聯。資料通過幾個中間系統在兩端之間逐跳傳遞。單個資料包可能會在途中丟失,甚至另一端或某些中間系統可能會崩潰,從而導致連接完全丟失。
只要在兩端之間進行定期資料交換,就可以快速檢測到這種情況。如果一端發送資料,另一端必須確認這些 - 如果缺少確認,則重新傳輸資料包。如果重傳后資料仍未得到確認,則認為連接已斷開。
但兩端可能不會持續交換資料。如果連接空閑(即沒有資料交換),則不會檢測到某些東西被破壞了。TCP 保持活動通過定期交換空閑連接上的資料包并期待確認來解決此問題。這些是沒有資料有效載荷的資料包,因為沒有資料要傳輸。
uj5u.com熱心網友回復:
在這兩個端點中,一些資料(或狀態變數)需要與執行 TCP 協議所必需的每個連接相關聯。例如,發送方需要記住序列號,維護所有已發送/但未確認的資料包的副本。接收器也需要跟蹤序列號,存盤亂序資料包的副本,并從接收到的資料包重建原始流。這些狀態資料結構在建立連接時創建(即分配記憶體),并在連接終止時(例如,在交換 FIN 之后)銷毀(釋放記憶體)。此狀態與每個打開的 TCP 套接字相關。一個好的做法是不要在不交換資料的情況下永遠打開連接(例如,如果一個通信伙伴崩潰了,它將無法正確終止連接),因此,如果連接長時間空閑(我不知道具體情況),則關閉套接字是合理的。這個概念被稱為“軟狀態”,這基本上意味著每個狀態(記憶體)都有一個到期不活動時間,直到它被洗掉。如果套接字關閉,那么當必須發送新資料時,必須建立新連接。是的,它確實涉及發送資料包,但是在發送第一個資料之前,它具有發送 TCP 資料包而沒有任何 RTT 有效負載的開銷。必須建立新的連接。是的,它確實涉及發送資料包,但是在發送第一個資料之前,它具有發送 TCP 資料包而沒有任何 RTT 有效負載的開銷。必須建立新的連接。是的,它確實涉及發送資料包,但是在發送第一個資料之前,它具有發送 TCP 資料包而沒有任何 RTT 有效負載的開銷。
理論上 TCP 連接只存在于連接的端點上。然而,在實踐中,所謂的“中間件”也有很多種,它是網路設備的總稱,不是路由器或交換機。這些中間件有時也需要維護與每個TCP連接相關的狀態,因此這些keepalive也會重繪 這些中間件上的狀態。
但在這兩種情況下,這些 keepalive 基本上都告訴重置與此連接的狀態相關聯的不活動計時器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/376636.html
