不懂 TCP/IP 是啥?看這一篇就夠了?。?!

      網(wǎng)友投稿 851 2025-04-04

      文章目錄


      TCP/IP 的歷史背景

      TCP/IP 標(biāo)準(zhǔn)

      TCP/IP 協(xié)議簇

      還不懂 TCP/IP 是啥?看這一篇就夠了?。?!

      通信鏈路層

      物理層

      數(shù)據(jù)鏈路層

      網(wǎng)絡(luò)層

      傳輸層

      應(yīng)用層

      數(shù)據(jù)包的發(fā)送歷程

      數(shù)據(jù)包結(jié)構(gòu)

      數(shù)據(jù)包發(fā)送歷程

      我把自己以往的文章匯總成為了 Github ,歡迎各位大佬 star

      https://github.com/crisxuan/bestJavaer

      已提交此篇文章

      要說(shuō)我們接觸計(jì)算機(jī)網(wǎng)絡(luò)最多的協(xié)議,那勢(shì)必離不開(kāi) TCP/IP 協(xié)議了,TCP/IP 協(xié)議同時(shí)也是互聯(lián)網(wǎng)中最為著名的協(xié)議,下面我們就來(lái)一起聊一下 TCP/IP 協(xié)議。

      TCP/IP 的歷史背景

      最初還沒(méi)有 TCP/IP 協(xié)議的時(shí)候,也就是在 20 世紀(jì) 60 年代,許多國(guó)家和地區(qū)認(rèn)識(shí)到通信技術(shù)的重要性。美國(guó)國(guó)防部希望能夠研究一種即使通信線路被破壞也能夠通過(guò)其他路線進(jìn)行通信的技術(shù)。為了實(shí)現(xiàn)這種技術(shù),出現(xiàn)了分組網(wǎng)絡(luò)。

      即使在兩個(gè)節(jié)點(diǎn)通信的過(guò)程中,幾個(gè)節(jié)點(diǎn)遭到破壞,卻依然能夠通過(guò)改變線路等方式達(dá)使兩個(gè)節(jié)點(diǎn)之間進(jìn)行通信。

      這種分組網(wǎng)絡(luò)促進(jìn)了 ARPANET(Advanced Research Projects Agency Network) 的誕生。ARPANET 是第一個(gè)具有分布式控制的廣域包分t組交換網(wǎng)絡(luò),也是最早實(shí)現(xiàn) TCP/IP 協(xié)議的前身。

      ARPANET 其實(shí)是由 美國(guó)國(guó)防部高級(jí)研究計(jì)劃局 計(jì)劃建立。

      所以,計(jì)算機(jī)網(wǎng)絡(luò)的出現(xiàn)在最一開(kāi)始是因?yàn)檐娛卵芯磕康摹?/p>

      20 世紀(jì) 90 年代,IOS 開(kāi)展了 OSI 這一國(guó)際標(biāo)準(zhǔn)化的進(jìn)程,然而卻沒(méi)有取得實(shí)質(zhì)性的進(jìn)展,但是卻使 TCP/IP 協(xié)議得到了廣泛使用。

      這種致使 TCP/IP 協(xié)議快速發(fā)展的原因可能是由于 TCP/IP 的標(biāo)準(zhǔn)化。也就是說(shuō) TCP/IP 協(xié)議中會(huì)涉及到 OSI 所沒(méi)有的標(biāo)準(zhǔn),而這種標(biāo)準(zhǔn)將是我們接下來(lái)主要探討的內(nèi)容。

      這里我們先來(lái)認(rèn)識(shí)一下 TCP/IP 協(xié)議,TCP/IP 協(xié)議說(shuō)的不僅僅只是 TCP 和 IP 這兩種協(xié)議,實(shí)際上,TCP/IP 指的是協(xié)議簇,協(xié)議簇是啥呢?簡(jiǎn)單來(lái)說(shuō)就是一系列協(xié)議的綜合,如果下次再問(wèn)你 TCP/IP 協(xié)議有哪些的話,可以把下面這張圖甩給他

      以上的協(xié)議匯總起來(lái),就是 TCP/IP 協(xié)議簇。

      TCP/IP 標(biāo)準(zhǔn)

      TCP/IP 相較于其他協(xié)議的標(biāo)準(zhǔn),更注重兩點(diǎn):開(kāi)放性 和 實(shí)用性,即標(biāo)準(zhǔn)化能否被實(shí)際使用。

      開(kāi)放性說(shuō)的是 TCP/IP 是由 IETF 討論制定的,而 IETF 本身就是一個(gè)允許任何人加入進(jìn)行討論的組織。

      實(shí)用性說(shuō)的是就拿框架來(lái)說(shuō),如果只浮于理論,而沒(méi)有落地的實(shí)踐,那么永遠(yuǎn)成為不了主流。

      TCP/IP 的標(biāo)準(zhǔn)協(xié)議就是我們所熟知的 RFC 文檔,當(dāng)然你可以在網(wǎng)絡(luò)上看到。RFC 不僅規(guī)范了協(xié)議標(biāo)準(zhǔn),還包含了協(xié)議的實(shí)現(xiàn)和使用信息。

      關(guān)于更多 RFC 協(xié)議,你可以看一下官方文檔 https://www.rfc-editor.org/rfc-index.html

      這里我們不再詳細(xì)展開(kāi)介紹了,我們這篇文章的重點(diǎn)要放在對(duì) TCP/IP 的研究上。

      TCP/IP 協(xié)議簇

      下面我們就開(kāi)始聊一聊 TCP/IP 協(xié)議簇。

      TCP/IP 協(xié)議是我們程序員接觸最多的協(xié)議,OSI 模型共有七層,從下到上分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、運(yùn)輸層、會(huì)話層、表示層和應(yīng)用層。但是這顯然是有些復(fù)雜的,所以在 TCP/IP 協(xié)議中,它們被簡(jiǎn)化為了四個(gè)層次

      下面我們從通信鏈路層開(kāi)始介紹一下這些層以及與層之間的協(xié)議。

      通信鏈路層

      如果非要細(xì)分的話,通信鏈路層也可以分為 物理層 和 數(shù)據(jù)鏈路層。

      物理層是 TCP/IP 的最底層是負(fù)責(zé)傳輸?shù)挠布?,這種硬件就相當(dāng)于是以太網(wǎng)或電話線路等物理層的設(shè)備。

      另外一層是數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層位于物理層和網(wǎng)絡(luò)層中間,數(shù)據(jù)鏈路層定義了在單個(gè)鏈路上如何傳輸數(shù)據(jù)。

      網(wǎng)絡(luò)層

      網(wǎng)絡(luò)層主要使用 IP協(xié)議,IP 協(xié)議基于 IP 地址轉(zhuǎn)發(fā)分包數(shù)據(jù)。

      IP 協(xié)議的主要作用就是將分組數(shù)據(jù)包發(fā)送到目標(biāo)主機(jī)

      TCP/IP 分層中的互聯(lián)網(wǎng)層與傳輸層的功能通常由操作系統(tǒng)提供。

      IP 還隱含著數(shù)據(jù)鏈路層的功能,通過(guò) IP 協(xié)議,相互通信的主機(jī)之間不論經(jīng)過(guò)怎樣的底層數(shù)據(jù)鏈路,都能夠?qū)崿F(xiàn)相互通信。

      雖然 IP 也是一種分組交換協(xié)議,但是 IP 卻不具備重發(fā)機(jī)制。即使數(shù)據(jù)沒(méi)有到達(dá)另一端也不會(huì)進(jìn)行重發(fā),所以 IP 屬于非可靠性協(xié)議。

      網(wǎng)絡(luò)層還有一種協(xié)議就是 ICMP,因?yàn)?IP 在數(shù)據(jù)包的發(fā)送過(guò)程中可能會(huì)出現(xiàn)異常,當(dāng) IP 數(shù)據(jù)包因?yàn)楫惓6鵁o(wú)法到達(dá)目標(biāo)地址時(shí),需要給發(fā)送端發(fā)送一個(gè)異常通知,ICMP 的主要功能就在于此了。鑒于此情況,ICMP 也可以被用來(lái)診斷網(wǎng)絡(luò)情況。

      傳輸層

      我們上面剛介紹完 TCP/IP 協(xié)議最重要的 IP 協(xié)議后,下面我們來(lái)介紹一下傳輸層協(xié)議,TCP 協(xié)議時(shí)傳輸層協(xié)議的一種。

      傳輸層就好像高速公路一樣,連接兩個(gè)城市的道路。下面是互聯(lián)網(wǎng)的邏輯通道,你可以把它想象成為高速公路。

      傳輸層最主要的功能就是讓?xiě)?yīng)用層的應(yīng)用程序之間完成通信和數(shù)據(jù)交換。在計(jì)算機(jī)內(nèi)部運(yùn)行著很多應(yīng)用程序,每個(gè)應(yīng)用程序都對(duì)應(yīng)一個(gè)端口號(hào),我們一般使用端口號(hào)來(lái)區(qū)分這些應(yīng)用程序。

      傳輸層的協(xié)議主要分為面向有連接的協(xié)議 TCP 和面向無(wú)連接的協(xié)議 UDP

      TCP

      TCP 是一種可靠的協(xié)議,它能夠保證數(shù)據(jù)包的可靠性交付,TCP 能夠正確處理傳輸過(guò)程中的丟包、傳輸順序錯(cuò)亂等異常情況。此外,TCP 還提供擁塞控制用于緩解網(wǎng)絡(luò)擁堵。

      UDP

      UDP 是一種不可靠的協(xié)議,它無(wú)法保證數(shù)據(jù)的可靠交付,相比 TCP ,UDP 不會(huì)檢查數(shù)據(jù)包是否到達(dá)、網(wǎng)絡(luò)是否阻塞等情況,但是 UDP 的效率比較高。

      UDP 常用于分組數(shù)據(jù)較少或者廣播、多播等視頻通信和多媒體領(lǐng)域。

      應(yīng)用層

      在 TCP/IP 協(xié)議簇中,將 OSI 標(biāo)準(zhǔn)模型中的會(huì)話層、表示層都?xì)w為了應(yīng)用層。應(yīng)用層的架構(gòu)大多屬于客戶(hù)端/服務(wù)端模型,提供服務(wù)的程序叫做服務(wù)端、接受服務(wù)的程序叫做客戶(hù)端。在這種架構(gòu)中,服務(wù)端通常會(huì)提前部署到服務(wù)器上,等待客戶(hù)端的連接,從而提供服務(wù)。

      數(shù)據(jù)包的發(fā)送歷程

      下面我們來(lái)介紹一下一個(gè)數(shù)據(jù)包是如何經(jīng)過(guò)應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層和通信鏈路層把一個(gè)數(shù)據(jù)包發(fā)送給另外一個(gè)數(shù)據(jù)包的。

      數(shù)據(jù)包結(jié)構(gòu)

      我們首先先來(lái)認(rèn)識(shí)一下數(shù)據(jù)包的結(jié)構(gòu),這里 cxuan 只是給你簡(jiǎn)單介紹一下,后面的文章會(huì)更加詳細(xì)的介紹。

      在上面的每個(gè)分層中,都會(huì)對(duì)所發(fā)送的數(shù)據(jù)增加一個(gè) 首部,這個(gè)首部中包含了該層必要的信息。每一層都會(huì)對(duì)數(shù)據(jù)進(jìn)行處理并在數(shù)據(jù)包中附上這一層的必要信息。下面我們就來(lái)聊一聊數(shù)據(jù)包的發(fā)送過(guò)程。

      數(shù)據(jù)包發(fā)送歷程

      假設(shè)主機(jī) A 和主機(jī) B 進(jìn)行通信,主機(jī) A 想要向主機(jī) B 發(fā)送一個(gè)數(shù)據(jù)包,都會(huì)經(jīng)歷哪些奇特的操作?

      應(yīng)用層的處理

      主機(jī) A 也就是用戶(hù)點(diǎn)擊了某個(gè)應(yīng)用或者打開(kāi)了一個(gè)聊天窗口輸入了cxuan,然后點(diǎn)擊了發(fā)送,那么這個(gè) cxuan 就作為一個(gè)數(shù)據(jù)包遨游在了網(wǎng)絡(luò)中,等下還沒(méi)完呢,應(yīng)用層還需要對(duì)這個(gè)數(shù)據(jù)包進(jìn)行處理,包括字符編碼、格式化等等,這一層其實(shí)是 OSI 中表現(xiàn)層做的工作,只不過(guò)在 TCP/IP 協(xié)議中都?xì)w為了應(yīng)用層。

      數(shù)據(jù)包在發(fā)送的那一刻建立 TCP 連接,這個(gè)連接相當(dāng)于通道,在這之后其他數(shù)據(jù)包也會(huì)使用通道傳輸數(shù)據(jù)。

      傳輸層的處理

      為了描述信息能準(zhǔn)確的到達(dá)另一方,我們使用 TCP 協(xié)議來(lái)進(jìn)行描述。TCP 會(huì)根據(jù)應(yīng)用的指示,負(fù)責(zé)建立連接、發(fā)送數(shù)據(jù)和斷開(kāi)連接。

      TCP 會(huì)在應(yīng)用數(shù)據(jù)層的前端附加一個(gè) TCP 首部字段,TCP 首部包含了源端口號(hào) 和 目的端口號(hào),這兩個(gè)端口號(hào)用于表明數(shù)據(jù)包是從哪里發(fā)出的,需要發(fā)送到哪個(gè)應(yīng)用程序上;TCP 首部還包含序號(hào),用以表示該包中數(shù)據(jù)是發(fā)送端整個(gè)數(shù)據(jù)中第幾個(gè)字節(jié)的序列號(hào);TCP 首部還包含 校驗(yàn)和,用于判斷數(shù)據(jù)是否損壞,隨后將 TCP 頭部附加在數(shù)據(jù)包的首部發(fā)送給 IP。

      網(wǎng)絡(luò)層的處理

      網(wǎng)絡(luò)層主要負(fù)責(zé)處理數(shù)據(jù)包的是 IP 協(xié)議,IP 協(xié)議將 TCP 傳過(guò)來(lái)的 TCP 首部和數(shù)據(jù)結(jié)合當(dāng)作自己的數(shù)據(jù),并在 TCP 首部的前端加上自己的 IP 首部。因此,IP 數(shù)據(jù)包后面會(huì)緊跟著 TCP 數(shù)據(jù)包,后面才是數(shù)據(jù)本身。IP 首部包含目的和源地址,緊隨在 IP 首部的還有用來(lái)判斷后面是 TCP 還是 UDP 的信息。

      IP 包生成后,會(huì)由路由控制表判斷應(yīng)該發(fā)送至哪個(gè)主機(jī),IP 修飾后的數(shù)據(jù)包繼續(xù)向下發(fā)送給路由器或者網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序,從而實(shí)現(xiàn)真正的數(shù)據(jù)傳輸。

      如果不知道目標(biāo)主機(jī)的 IP 地址,可以利用 ARP(Address Resolution Protocol) 地址解析協(xié)議進(jìn)行查找。

      通信鏈路層的處理

      經(jīng)由 IP 傳過(guò)來(lái)的數(shù)據(jù)包,以太網(wǎng)會(huì)給數(shù)據(jù)附上以太網(wǎng)首部并進(jìn)行發(fā)送處理。以太網(wǎng)首部包含接收端的 MAC 地址、發(fā)送端的 MAC 地址以及標(biāo)志以太網(wǎng)類(lèi)型的以太網(wǎng)數(shù)據(jù)協(xié)議等。

      下面是完整的處理過(guò)程和解析過(guò)程。

      如上圖所示,左側(cè)是數(shù)據(jù)的發(fā)送處理過(guò)程,應(yīng)用層的數(shù)據(jù)經(jīng)過(guò)層層處理后會(huì)變?yōu)榭梢园l(fā)送的數(shù)據(jù)包,經(jīng)過(guò)物理介質(zhì)發(fā)送至指定主機(jī)中。

      數(shù)據(jù)包的接收流程是發(fā)送流程的逆序過(guò)程,數(shù)據(jù)包的解析同樣也會(huì)經(jīng)過(guò)下面這幾步。

      通信鏈路的解析

      目標(biāo)主機(jī)收到數(shù)據(jù)包后,首先會(huì)從以太網(wǎng)的首部找到 MAC 地址判斷是否是發(fā)給自己的數(shù)據(jù)包,如果不是發(fā)給自己的數(shù)據(jù)包則會(huì)丟棄該數(shù)據(jù)包。

      如果收到的數(shù)據(jù)包是發(fā)送給自己的,就會(huì)查找以太網(wǎng)類(lèi)型判斷是哪種協(xié)議,如果是 IP 協(xié)議就會(huì)扔給 IP 協(xié)議進(jìn)行處理,如果是 ARP 協(xié)議就會(huì)扔給 ARP 協(xié)議進(jìn)行處理。如果協(xié)議類(lèi)型是一種無(wú)法識(shí)別的協(xié)議,就會(huì)將該數(shù)據(jù)包直接丟棄。

      網(wǎng)絡(luò)層的解析

      經(jīng)過(guò)以太網(wǎng)處理后的數(shù)據(jù)包扔給網(wǎng)絡(luò)層進(jìn)行處理,我們假設(shè)協(xié)議類(lèi)型是 IP 協(xié)議,那么,在 IP 收到數(shù)據(jù)包后就會(huì)解析 IP 首部,判斷 IP 首部中的 IP 地址是否和自己的 IP 地址匹配,如果匹配則接收數(shù)據(jù)并判斷上一層協(xié)議是 TCP 還是 UDP;如果不匹配則直接丟棄。

      注意:在路由轉(zhuǎn)發(fā)的過(guò)程中,有的時(shí)候 IP 地址并不是自己的,這個(gè)時(shí)候需要借助路由表協(xié)助處理。

      傳輸層的處理

      在傳輸層中,我們默認(rèn)使用 TCP 協(xié)議,在 TCP 處理過(guò)程中,首先會(huì)計(jì)算一下 校驗(yàn)和,判斷數(shù)據(jù)是否被損壞。然后檢查是否按照序號(hào)接收數(shù)據(jù),最后檢查端口號(hào),確定具體是哪個(gè)應(yīng)用程序。

      數(shù)據(jù)被完整的識(shí)別后,會(huì)傳遞給由端口號(hào)識(shí)別的應(yīng)用程序進(jìn)行處理。

      應(yīng)用程序的處理

      接收端指定的應(yīng)用程序會(huì)處理發(fā)送方傳遞過(guò)來(lái)的數(shù)據(jù),通過(guò)解碼等操作識(shí)別出數(shù)據(jù)的內(nèi)容,然后把對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)在磁盤(pán)上,返回一個(gè)保存成功的消息給發(fā)送方,如果保存失敗,則返回錯(cuò)誤消息。

      上面是一個(gè)完整的數(shù)據(jù)包收發(fā)過(guò)程,在上面的數(shù)據(jù)收發(fā)過(guò)程中,涉及到不同層之間的地址、端口號(hào)、協(xié)議類(lèi)型等,那么我們現(xiàn)在就來(lái)剖析一下。

      數(shù)據(jù)包經(jīng)過(guò)每層后,該層協(xié)議都會(huì)在數(shù)據(jù)包附上包首部,一個(gè)完整的包首部圖如下所示

      在數(shù)據(jù)包的發(fā)送過(guò)程中,各層以此對(duì)數(shù)據(jù)包添加了首部信息,每個(gè)首部都包含發(fā)送端和接收端地址以及上一層的協(xié)議類(lèi)型。以太網(wǎng)會(huì)使用 MAC 地址、IP 會(huì)使用 IP 地址、TCP/UDP 則會(huì)用端口號(hào)作為識(shí)別兩端主機(jī)的地址。

      此外,每個(gè)分層中的包首部還包含一個(gè)識(shí)別位,它是用來(lái)標(biāo)識(shí)上一層協(xié)議的種類(lèi)信息。

      如果這篇文章對(duì)你有用,歡迎給我的 CSDN 賬號(hào) + 關(guān)注哦?。。?/p>

      我自己肝了六本 PDF,全網(wǎng)傳播超過(guò)10w+ ,你需要關(guān)注一下我的 CSDN 賬號(hào),私信回復(fù) cxuan ,領(lǐng)取全部 PDF,這些 PDF 如下

      下載鏈接 密碼:7im6

      TCP/IP 網(wǎng)絡(luò)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:90后就敢當(dāng)掃地僧!不服?4月24號(hào)來(lái)闖龍門(mén)陣!
      下一篇:表格中怎樣按照姓氏排序(怎么在表格里按姓氏排序)
      相關(guān)文章
      亚洲日本韩国在线| 亚洲高清视频在线| 亚洲欧美日韩一区二区三区在线| 91亚洲国产成人精品下载| 国产V亚洲V天堂无码久久久| 亚洲五月综合缴情在线观看| 亚洲人成影院在线无码观看| 亚洲欧洲中文日韩久久AV乱码| 亚洲成A∨人片天堂网无码| 日韩色日韩视频亚洲网站| 亚洲乱妇熟女爽到高潮的片| 色婷五月综激情亚洲综合| 亚洲AV无码专区在线亚| 亚洲乱码一区av春药高潮| 亚洲国产成人精品电影| 亚洲另类视频在线观看| 亚洲AV无码成人专区| 亚洲性线免费观看视频成熟| 中文字幕在线观看亚洲视频| 国产精品亚洲专区在线观看| 亚洲综合色婷婷在线观看| 亚洲色大成WWW亚洲女子| 成人婷婷网色偷偷亚洲男人的天堂| 亚洲精品无码久久久久A片苍井空| 亚洲av综合av一区二区三区| 春暖花开亚洲性无区一区二区| 国产AV无码专区亚洲AV蜜芽| 亚洲av无码成人精品区| 国产精品亚洲综合一区| 亚洲乱码国产乱码精品精| 亚洲成AV人片在WWW色猫咪| 日韩精品亚洲人成在线观看 | 日韩亚洲人成网站| www国产亚洲精品久久久日本| 亚洲免费视频一区二区三区| 亚洲国产另类久久久精品小说| 亚洲av日韩综合一区在线观看| 亚洲人成亚洲精品| 亚洲国产亚洲片在线观看播放| 亚洲综合精品第一页| 国产亚洲视频在线播放大全|