計(jì)算機(jī)網(wǎng)絡(luò)原理梳理丨清晰認(rèn)識(shí) TCP/IP 協(xié)議

TCP/IP 協(xié)議族

Internet 的核心協(xié)議就是 TCP/IP佑附,廣泛應(yīng)用于局域網(wǎng)和廣域網(wǎng)搞乏,目前已有20+年發(fā)展史邻眷,是現(xiàn)用國際通行標(biāo)準(zhǔn)。TCP/IP 是個(gè)協(xié)議族剔交,包含有多種協(xié)議肆饶,網(wǎng)絡(luò)模型及分層如圖所示

TCP/IP 協(xié)議族全家福 - 攝于2019-09-23 ^v^

TCP/IP 五層網(wǎng)絡(luò)模型

應(yīng)用層:應(yīng)用程序通過TCP/IP互連網(wǎng)絡(luò)后發(fā)送、接收數(shù)據(jù)岖常。選擇所需服務(wù)類型驯镊,按照傳輸層要求組織數(shù)據(jù),向下傳遞報(bào)文序列或字節(jié)流2種類型

傳輸層:提供應(yīng)用層間通信服務(wù)竭鞍,又稱端到端通信板惑。提供可靠的數(shù)據(jù)傳輸服務(wù),確保數(shù)據(jù)準(zhǔn)確偎快、有序送達(dá)到目的地洒放。數(shù)據(jù)發(fā)送后需對(duì)方回送確認(rèn)信息,有丟失的數(shù)據(jù)需發(fā)送方重發(fā)分組滨砍。傳輸?shù)膶?duì)象是傳輸層分組

網(wǎng)際層:又稱IP層,負(fù)責(zé)機(jī)器間通信妖异,接收到傳輸層請(qǐng)求后惋戏,向目的地傳送信息分組。此分組會(huì)被封裝進(jìn)IP數(shù)據(jù)報(bào)中他膳,由路由選擇算法決定直送目的地或發(fā)給路由响逢,然后將數(shù)據(jù)向下傳遞給網(wǎng)絡(luò)接口層。接收到數(shù)據(jù)報(bào)時(shí)棕孙,檢驗(yàn)正確性舔亭,由路由選擇算法決定本地處理或轉(zhuǎn)發(fā),若目的地屬于本機(jī)所在網(wǎng)絡(luò)蟀俊,就把數(shù)據(jù)報(bào)的報(bào)頭剝?nèi)デ掌蹋x擇適當(dāng)?shù)膫鬏攲訁f(xié)議向上傳遞分組

網(wǎng)絡(luò)接口層:又稱數(shù)據(jù)鏈路層,處于TCP/IP協(xié)議層之下肢预,負(fù)責(zé)接收IP數(shù)據(jù)報(bào)并將數(shù)據(jù)報(bào)通過選定網(wǎng)絡(luò)發(fā)送出去

硬件層:處理連接網(wǎng)絡(luò)的硬件部分矛洞。包括控制操作系統(tǒng)、硬件的設(shè)備驅(qū)動(dòng)烫映、NIC(Network Interface Card沼本,網(wǎng)絡(luò)適配器,即網(wǎng)卡)锭沟,及光纖等 物理可見部分(還包括連接器等一切傳輸媒介)

移步至我的博客主頁抽兆,可見 ISO/OSI 七層網(wǎng)絡(luò)模型詳述

TCP/IP 內(nèi)含協(xié)議職責(zé)

應(yīng)用層協(xié)議職能 - 攝于2019-09-23 ^v^

TCP 協(xié)議數(shù)據(jù)傳輸流程

傳輸控制協(xié)議(Transmission Control Protocol,TCP)是 Internet 傳輸層協(xié)議,提供面向連接的可靠傳輸服務(wù)族淮,可靠性由重發(fā)技術(shù)保證辫红。TCP 報(bào)文首部的大小一定是4字節(jié)的倍數(shù)凭涂,其中固定首部大小為20字節(jié)且不變

TCP 數(shù)據(jù)包示意圖

ACK:確認(rèn)位,當(dāng)它的值為1時(shí)厉熟,確認(rèn)號(hào)才是有效的
SYN:同步請(qǐng)求导盅,TCP連接中連接雙方協(xié)商初始的序號(hào)
RST:復(fù)位,TCP連接中數(shù)據(jù)傳輸發(fā)生異常需要重新發(fā)送
FIN :通信結(jié)束后揍瑟,當(dāng)它的值為1時(shí)拆除連接

TCP 三次握手建立連接

第一次握手:建立連接時(shí)白翻,客戶端發(fā)送SYN包(syn=i)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài)绢片,等待服務(wù)器確認(rèn)滤馍。SYN表示同步序列編碼(Synchronize Sequence Numbers)

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=i+1)底循,同時(shí)自己也發(fā)送一個(gè)SYN包(seq=j)巢株,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)

第三次握手:客戶端收到服務(wù)器的SYN+ACK的包后熙涤,向服務(wù)器發(fā)送確認(rèn)包ACK(j+1)阁苞,此包發(fā)送完畢,客戶端與服務(wù)器進(jìn)入ESTABLISHED狀態(tài)祠挫,完成三次握手

三次握手建立連接示意圖

TCP 正常數(shù)據(jù)傳輸過程

本圖表示傳輸2個(gè)數(shù)據(jù)報(bào)的過程那槽。主機(jī)A向B發(fā)送第一個(gè) N 字節(jié)的數(shù)據(jù)包,SEQ為 i 等舔,主機(jī)B收到后需要立即向主機(jī)A發(fā)送確認(rèn)ACK包骚灸,ACK = i + N +1 ,這樣主機(jī)A才可確認(rèn)數(shù)據(jù)傳輸成功慌植。第二個(gè)數(shù)據(jù)包傳輸時(shí)甚牲,SEQ數(shù)值 = R,主機(jī)B收到后立即回傳ACK蝶柿,此時(shí)ACK = R + N + 1丈钙,之后數(shù)據(jù)包傳輸?shù)倪^程持續(xù)此流程,需要注意的是發(fā)送方只有收到目標(biāo)方的確認(rèn)包后才會(huì)清除緩沖區(qū)中的數(shù)據(jù)

ACK確認(rèn)位 = SEQ數(shù)據(jù)編號(hào) + 傳遞的字節(jié)數(shù)N + 1交汤。第一個(gè)字節(jié)的SEQ編號(hào)由本地隨機(jī)產(chǎn)生著恩,SEQ+N的作用是為了讓主機(jī)A確認(rèn)發(fā)送給主機(jī)B的數(shù)據(jù)是否全部接收 / 是否出現(xiàn)丟失

正常數(shù)據(jù)傳輸示意圖

TCP 數(shù)據(jù)重傳與快重傳

  • 數(shù)據(jù)重傳:主機(jī)A向主機(jī)B傳送數(shù)據(jù),但中間發(fā)生錯(cuò)誤蜻展,主機(jī)B未能收到喉誊。經(jīng)過一段時(shí)間后,主機(jī)A未收到主機(jī)B的ACK確認(rèn)包纵顾,故主機(jī)A再次重傳此數(shù)據(jù)包伍茄。主機(jī)A每次發(fā)送數(shù)據(jù)時(shí)都會(huì)啟動(dòng)一個(gè)定時(shí)器,規(guī)定時(shí)間沒收到響應(yīng)包則啟動(dòng)重傳
  • 快重傳:重傳發(fā)生在超時(shí)之后施逾,但當(dāng)主機(jī)A收到3個(gè)以上重復(fù)的ACK敷矫,其實(shí)就說明有數(shù)據(jù)丟失例获,也需要重傳,此時(shí)重傳定時(shí)器還沒有結(jié)束曹仗,所以叫快速重傳
數(shù)據(jù)重傳示意圖

TCP 四次揮手結(jié)束連接

第一次揮手:客戶端發(fā)送一個(gè)FIN榨汤,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送,客戶端進(jìn)入FIN_WAIT_1狀態(tài)

第二次揮手:服務(wù)端收到FIN后怎茫,發(fā)送一個(gè)ACK給客戶端收壕,確認(rèn)序號(hào)為收到序號(hào)+1(與SYN相同,一個(gè)FIN占用一個(gè)序號(hào))轨蛤,服務(wù)端進(jìn)入CLOSE_WAIT狀態(tài)

第三次揮手:服務(wù)端發(fā)送一個(gè)FIN蜜宪,用來關(guān)閉服務(wù)端到客戶端的數(shù)據(jù)傳送,服務(wù)端進(jìn)入LAST_ACK狀態(tài)

第四次揮手:客戶端收到FIN后祥山,客戶端進(jìn)入TIME_WAIT狀態(tài)圃验,接著發(fā)送一個(gè)ACK給服務(wù)端,確認(rèn)序號(hào)為收到序號(hào)+1缝呕,服務(wù)端進(jìn)入CLOSED狀態(tài)澳窑,完成四次揮手

四次揮手結(jié)束連接示意圖

TCP 滑動(dòng)窗口與擁塞控制


IP 協(xié)議數(shù)據(jù)傳輸流程

網(wǎng)際協(xié)議(Internet Protocol,IP)通常被認(rèn)為提供的是無連接和不可靠的,但實(shí)際上供常,在網(wǎng)絡(luò)性能良好的情況下摊聋,IP傳送的數(shù)據(jù)能夠完好無損的到達(dá)目的地

無連接是指沒有確定目標(biāo)系統(tǒng)是否已做好接收數(shù)據(jù)的準(zhǔn)備之前就發(fā)送數(shù)據(jù)。不可靠是指目的系統(tǒng)不對(duì)成功完成接收到的分組進(jìn)行確認(rèn)

IP 數(shù)據(jù)報(bào)示意圖

IP 發(fā)送數(shù)據(jù)

發(fā)送數(shù)據(jù)時(shí)话侧,源計(jì)算機(jī)上的IP協(xié)議需要確定目的地是否在同一網(wǎng)絡(luò),若目的地在同一網(wǎng)絡(luò)闯参,使用直達(dá)通信瞻鹏,若不在同一網(wǎng)絡(luò),則需要通過網(wǎng)關(guān)或路由器完成通信:

主機(jī)A組裝目的IP地址為主機(jī)B的數(shù)據(jù)報(bào)鹿寨,之后進(jìn)行路由選擇新博,再將次數(shù)據(jù)報(bào)發(fā)送至默認(rèn)路由器(由APR地址解析確定路由器,得到下一默認(rèn)路由器IP地址與MAC地址的映射關(guān)系脚草,然后以該MAC地址為幀的目的地址形成一個(gè)幀赫悄,并將IP數(shù)據(jù)報(bào)封裝在幀的數(shù)據(jù)區(qū),最后由具體的物理網(wǎng)絡(luò)(以太網(wǎng))完成數(shù)據(jù)報(bào)的真正傳輸)

IP 轉(zhuǎn)發(fā)數(shù)據(jù)

路由器接收到主機(jī)A的數(shù)據(jù)幀后馏慨,去掉幀頭并對(duì)其進(jìn)行處理埂淮,發(fā)現(xiàn)此數(shù)據(jù)報(bào)的目的地非本地,需要將其轉(zhuǎn)發(fā)写隶,由路由選擇算法及本地路由表確定下一跳路由器地址倔撞,通過ARP地址解析確定下一跳路由的IP地址與MAC地址的映射關(guān)系后,將該MAC地址作為數(shù)據(jù)幀的目的地將數(shù)據(jù)報(bào)封裝為數(shù)據(jù)幀慕趴,通過以太網(wǎng)完成數(shù)據(jù)轉(zhuǎn)發(fā)痪蝇。重復(fù)此步驟直到第N個(gè)路由器與目的地直連鄙陡,通過ARP地址解析確定目的主機(jī)的IP地址與MAC地址的映射關(guān)系,利用該MAC地址作為幀的目的地址躏啰,將IP數(shù)據(jù)報(bào)封裝成幀趁矾,并由以太網(wǎng)實(shí)現(xiàn)數(shù)據(jù)的真正傳遞

IP 接收數(shù)據(jù)

主機(jī)B接收到數(shù)據(jù)幀后,解封該幀并對(duì)其進(jìn)行處理给僵,確定本機(jī)即為目的地址后毫捣,將數(shù)據(jù)報(bào)中封裝的數(shù)據(jù)交由上層協(xié)議進(jìn)行處理,隨即逐層處理并上交直到應(yīng)用層想际,完成此次通信


更多協(xié)議工作原理

移步至我的博客主頁培漏,可見全部

TCP/IP 五大重要特性

邏輯編址:通過IP地址+主機(jī)ID,確保計(jì)算機(jī)可尋

路由選擇:通過網(wǎng)絡(luò)路徑選擇協(xié)議胡本,確保數(shù)據(jù)包到達(dá)目的地

域名解析:將域名映射為IP地址牌柄,使用域名一是便于記憶,二是域名相對(duì)固定不變

錯(cuò)誤檢測(cè):確保分組交換的可靠性傳遞侧甫,確認(rèn)數(shù)據(jù)正常接收

流量控制:監(jiān)測(cè)網(wǎng)絡(luò)流量珊佣,防止網(wǎng)絡(luò)擁塞出現(xiàn)


本篇將持續(xù)更新 TCP / IP 相關(guān)知識(shí),一起查漏補(bǔ)缺學(xué)個(gè)痛快披粟!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咒锻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子守屉,更是在濱河造成了極大的恐慌惑艇,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拇泛,死亡現(xiàn)場(chǎng)離奇詭異滨巴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俺叭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門恭取,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熄守,你說我怎么就攤上這事蜈垮。” “怎么了裕照?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵攒发,是天一觀的道長。 經(jīng)常有香客問我晋南,道長晨继,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任搬俊,我火速辦了婚禮紊扬,結(jié)果婚禮上蜒茄,老公的妹妹穿的比我還像新娘。我一直安慰自己餐屎,他們只是感情好檀葛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腹缩,像睡著了一般屿聋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藏鹊,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天润讥,我揣著相機(jī)與錄音,去河邊找鬼盘寡。 笑死楚殿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竿痰。 我是一名探鬼主播脆粥,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼影涉!你這毒婦竟也來了变隔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蟹倾,失蹤者是張志新(化名)和其女友劉穎匣缘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲜棠,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肌厨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岔留。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夏哭。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡检柬,死狀恐怖献联,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情何址,我是刑警寧澤里逆,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站用爪,受9級(jí)特大地震影響原押,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜偎血,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一诸衔、第九天 我趴在偏房一處隱蔽的房頂上張望盯漂。 院中可真熱鬧,春花似錦笨农、人聲如沸就缆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽竭宰。三九已至,卻和暖如春份招,著一層夾襖步出監(jiān)牢的瞬間切揭,已是汗流浹背从橘。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工攒读, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碘耳。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓鄙漏,卻偏偏與公主長得像嗤谚,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子怔蚌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容