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