您可能聽說過TCP,并且可能知道它與通過 Internet 發送和接收信息有關。毫無疑問,幾乎每次出現在您的 Web 瀏覽器中時,您都會在 URL 的前面看到HTTP 。
但是,當要了解這兩種協議如何交互以及它們在整個數據傳輸難題中所扮演的角色時,事情就會變得混亂。讓我們分解一下 TCP 和 HTTP 的真正含義、它們的區別以及它們如何協同工作。
從源到目的地的數據流被分成稱為“數據包”的塊,以便更易于管理的傳輸。每當您發送或接收數據包時,都會有大量關于該數據的信息。這包括由傳輸控制協議或 TCP 添加的信息。
TCP 的工作是確保流中發送的所有數據以正確的順序從 A 點移動到 B 點,并且完好無損。TCP 等協議告訴目標計算機哪個應用程序應該接收所述數據。TCP 尤其犧牲了原始速度以確保傳輸數據的可靠性。請注意,某些形式的數據傳輸,例如視頻流,完美的準確性遠低于速度,最好使用不同的協議來優化速度而不是準確性。
數據包傳輸,如果留給自己的設備,將不會完全可靠。這就是為什么 TCP 使用一種稱為重傳肯定確認的技術,要求傳輸的接收端對已接收到的數據做出響應。多虧了這一點,發送者知道接下來要發送什么數據包,或者可能重新發送,以保持完美的數據流。因此,發送的字節可以與接收的字節完全匹配。在此過程中沒有數據被更改或丟失。
如果您想了解有關此檢查過程如何工作的更多信息,請單擊此處。
雖然 TCP 包含有關已收到或尚未收到哪些數據的信息,但 HTTP 包含有關如何在數據到達后讀取和處理此數據的具體說明。在數據從 Internet 上的一個節點發送到另一個節點之前,它會被包裝在詳細說明正在發送的請求的性質或對所述請求的響應的信息中。這是使用 HTTP 或超文本傳輸協議完成的。
當您在 Web 瀏覽器中鍵入 URL 時,您正在向 Web 服務器發送 HTTP 請求。然后該服務器將再次使用 HTTP 格式進行響應。(如果你想知道 HTTPS,你可能已經在最近最流行的網站前面注意到了,“S”代表“安全”——這意味著這些數據包是加密的。)
HTTP 請求的兩個最常見示例是: 1.“POST”,表示其中包含要推送到服務器的數據 2.“GET”,要求從服務器獲取資源
所以:TCP 管理數據流,HTTP 描述了這個流中的數據包含什么。
食人魔就像洋蔥;數據包也是如此。
HTTP 位于開放系統互連模型(OSI 模型)的第 7 層,也就是最令人眼花繚亂的洋蔥塊。TCP位于L4。您也可以將其視為數據包中包含的數據本身的抽象層。L1,物理層,是有形的電信號(或者可能是無線電信號或其他物理介質),數據被轉換成用于傳輸。因此,L1 是離內部數據最遠的層。
為什么有這些不同的層?例如,假設數據從網絡服務器傳入我們的計算機以加載網站。我們的計算機捕獲物理電流,這在某種意義上是“包裝”無形數據包以進行傳輸。隨著我們進入 L4,如果沒有 TCP,計算機將不知道將數據包指向哪個應用程序。在這里,TCP 可以告訴計算機將數據包定向到我們的 Web 瀏覽器。
一旦進入 Firefox 或 Chrome 等應用程序,就會讀取 HTTP 指令。瀏覽器了解傳入數據的性質,最終可以正確加載網頁內容。
因此,拆解層就像一條裝配線,按順序將數據包中的原材料帶到可用狀態。