網(wǎng)絡傳輸之TCP/IP協(xié)議族

我們現(xiàn)實網(wǎng)絡無處不在,我們被龐大的虛擬網(wǎng)絡包圍兽狭,但我們卻對它是怎樣把我們的信息傳遞并實現(xiàn)通信的萧朝,我們并沒有了解過岔留,那么當我們在瀏覽器中出入一段地址,按下回車這背后都會發(fā)生什么检柬?
比如說一般場景下献联,客戶機和服務器不在一個局域網(wǎng)竖配,輸入的是一個域名而不是IP地址。那么當按下回車后里逆,首先瀏覽器會通過DNS解析找到我們對應的IP地址进胯,將http報文發(fā)送給目標IP地址對應的服務器,之后服務器做出響應原押,將請求的資源發(fā)送給瀏覽器胁镐。
TIP/IP在這當中扮演著重要的作用。

TCP/IP歷史

在計算機發(fā)展的早期階段诸衔,很多不同的廠商生產(chǎn)各種不同的計算型號盯漂,他們運行完全不同的操作系統(tǒng),為了讓他們之間能夠相互通信笨农,TCP/IP協(xié)議族誕生了就缆。

那么為什么我們叫它協(xié)議族呢? 因為實際上TCP/IP是一組不同層次上的多個協(xié)議的組合谒亦。
那么協(xié)議組合是什么竭宰?——TCP/IP模型

TCP/IP模型

TCP/IP模型是一個四層結構,從上往下依次是應用層份招,運輸層(傳輸層)切揭,網(wǎng)絡層,網(wǎng)絡接口層(數(shù)據(jù)鏈路層)脾还。
通過開頭我們輸入一個url的例子,自上而下進行介紹TIP/IP參考模型


應用層

為用戶提供各種服務入愧,比如我們?yōu)g覽網(wǎng)頁時用到的HTTP鄙漏,收發(fā)郵件時用的SMTP,登錄遠程主機用的SSH或者FTP協(xié)議棺蛛,DNS等協(xié)議怔蚌。
假設我們對 www.xxx.com發(fā)送請求

  • 瀏覽器看到這個域名的時候,就好像去一家從沒去過的餐廳吃飯旁赊,只知道餐廳名字桦踊,卻不知道具體地址,域名就像是一個餐廳的名字终畅,而IP地址相當于一個具體的地址籍胯。
    瀏覽器必須知道要請求服務器的IP地址,發(fā)出的請求才有目的地离福。DNS可以將IP轉換成地址杖狼。
  • http 會生成報文 ,這個請求里面包含了請求的方法妖爷,請求的路徑“/”蝶涩,請求的主機名,客戶機的類型以及一些其他的信息。

傳輸層

傳輸層位于應用層下層绿聘,網(wǎng)絡借口層的上層嗽上,主要有TCP和UDP兩種協(xié)議。
UDP是用戶數(shù)據(jù)報協(xié)議熄攘,不關心是否收到兽愤,不需要建立連接就可以通信,傳輸效率高鲜屏,比如說微信烹看。
而TCP是一種可靠的面向連接的協(xié)議,就是在交互數(shù)據(jù)前先建立一個TCP連接洛史,如同打電話惯殊,首先要撥號,然后等待對方響應后才能彼此交流
TCP提供全雙工服務也殖,即數(shù)據(jù)可在同一時間雙向傳播
TCP將若干個字節(jié)構成一個分組土思,此分組稱為報文段(Segment)


TCP連接的建立過程如下圖所示。

  • 三次握手
    • 主機A通過一個標識為SYN標識位的數(shù)據(jù)段發(fā)送給主機B請求連接忆嗜,告訴主機B“我想和你創(chuàng)建一條TCP連接”己儒。
    • 當主機B收到SYN請求后,如果其所請求的端口號正在等待連接捆毫,則會為這一條TCP連接分配資源闪湾,并主機A發(fā)送確認應答ACK和同步序列號SYNC標志位的數(shù)據(jù)段來響應主機。
    • 主機A確認收到了主機B的數(shù)據(jù)段并可以開始傳輸實際數(shù)據(jù)绩卤。
  • 四次揮手
    • 主機A發(fā)送FIN控制位發(fā)出斷開連接的請求 途样。
    • 主機B進行響應,確認收到斷開連接請求濒憋。
    • 主機B發(fā)送FIN控制,隨后關閉了連接何暇。
    • 主機A收到之后,又向主機B回復一個ACK應答凛驮。過了一段計時等待裆站,主機A也關閉了連接,釋放資源黔夭。這一段計時等待的時間是為了主機B重傳最后的ACK防止其丟失宏胯。

網(wǎng)絡層

在這一層中主要是 IP 協(xié)議處理數(shù)據(jù)傳輸。用于把數(shù)據(jù)從源主機經(jīng)過若干個中間節(jié)點傳送到目標主機本姥,并向傳輸層提供最基礎的數(shù)據(jù)傳輸服務胳嘲。

在網(wǎng)絡中,每臺計算機都有一個唯一的地址扣草,方便別人找到它了牛,這個地址稱為IP地址颜屠。

IP協(xié)議處理過的數(shù)據(jù)擁有自己的名字:IP數(shù)據(jù)報,讓我們從下圖來了解一下IP數(shù)據(jù)報的格式:
  • 版本
    • 一個4位二進制數(shù)的標識鹰祸,用來標識IP協(xié)議的版本甫窟,目前大部分的協(xié)議版本號為4,因此IP有時也稱為IPv4蛙婴。
  • 首部長部
  • 優(yōu)先級與服務類型
  • 總長度
    • 該字段用以指示整個IP數(shù)據(jù)包的長度粗井,最長為65535字節(jié),包括頭和數(shù)據(jù)
      標識符
    • 唯一標識主機發(fā)送的每一份數(shù)據(jù)報
  • 標志
    • 分為3個字段街图,依次為保留位浇衬、不分片位和更多片位,保留位:一般被置為0
      不分片位:表示該數(shù)據(jù)報是否被分片餐济,如果被置為1耘擂,則不能對數(shù)據(jù)報進行分片,如果要對其進行分片處理絮姆,就應將其置為0
      更多片位:除了最后一個分片醉冤,其他每個組成數(shù)據(jù)報的片都要將該位置設置為1.
  • 段偏移量
    • 該分片相對于原始數(shù)據(jù)報開始處位置的偏移量
  • TTL(Time to Live生存時間)
    • 該字段用于表示IP數(shù)據(jù)包的生命周期,可以防止一個數(shù)據(jù)包在網(wǎng)絡中無限循環(huán)地發(fā)下去篙悯。TTL的意思是一個數(shù)據(jù)包在被丟棄之前在網(wǎng)絡中的最大周轉時間蚁阳。該數(shù)據(jù)包經(jīng)過的每一個路由器都會檢查該字段中的值,當TTL的值為0時此數(shù)據(jù)包會被丟棄鸽照。TTL對應于一個數(shù)據(jù)包通過路由器的數(shù)目螺捐,一個數(shù)據(jù)包每經(jīng)過一個路由器,TTL將減去1矮燎。
  • 協(xié)議號
    • 用以指示IP數(shù)據(jù)包中封裝的是哪個協(xié)議
  • 首部校驗和
    • 檢驗和是16位的錯誤檢測字段定血。目的主機和網(wǎng)絡中的每個網(wǎng)關都要重新計算報頭的校驗和,一樣表示沒有改動過漏峰。
  • 源IP地址
    • 該字段用于表示數(shù)據(jù)包的源地址糠悼,指的是發(fā)送該數(shù)據(jù)包的設備的網(wǎng)絡地址
  • 目標IP地址
    • 該字段用于表示數(shù)據(jù)包的目標的地址届榄,指的是接收節(jié)點的網(wǎng)絡地址

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

在這一層中浅乔,上層傳來的數(shù)據(jù)經(jīng)過協(xié)議處理后的一份數(shù)據(jù),我們稱之為一幀(Frame)
在鏈路層中的地址指的的是計算機中網(wǎng)卡的硬件地址铝条,即mac地址靖苇。我們知道,每一個網(wǎng)卡在出廠時班缰,其內部都存有一個全世界獨一無二的硬件標識贤壁,稱為mac地址,它是的長度為6個字節(jié)埠忘。在網(wǎng)絡中脾拆,兩個計算機之間的通信實際上就是計算機中的兩張網(wǎng)卡之間的通信馒索。如果沒有mac地址,就無法得知通信的具體位置名船,因此獲取mac地址是計算機通信的基礎保障绰上。

但是實際上,計算機程序在發(fā)送連接請求時渠驼,一般只知道目的主機的IP地址蜈块,那么mac地址是如何獲取的呢?這就要靠ARP協(xié)議來實現(xiàn)迷扇。

ARP協(xié)議(地址解析協(xié)議)可以看做是鏈路層的一個協(xié)議百揭,它的作用是為IP地址與對應的mac地址之間提供動態(tài)的映射,這個過程是自動完成的蜓席,因此無需用戶或管理員關心器一。ARP協(xié)議將IP映射為mac地址的過程大致如下:

如果目的主機與源主機位于同一網(wǎng)段,那么ARP協(xié)議會向本網(wǎng)段發(fā)送一個廣播瓮床,網(wǎng)段中的所有主機都會受到一條消息盹舞,這條消息詢問哪臺主機的IP地址與目的主機地址相同。當目的主機接受到這條消息隘庄,就做出應答踢步,將自己的mac地址發(fā)送過去。其他主機則將這條消息忽略丑掺。

如果目的主機與源主機位于不同網(wǎng)段获印,那么ARP協(xié)議會將消息發(fā)送給本地的路由,路由經(jīng)過IP尋址找到目的主機所在網(wǎng)段的路由街州,再由目的路由將消息廣播出去兼丰,獲得目的主機響應后再返回給源主機。

一般來說, 每臺機器都維護的有一個ARP緩存表, 存儲了近期的IP地址和硬件地址的映射關系, 可以用 arp -a 命令來查看緩存表中內容唆缴。

總結

事實上當我們http訪問一個地址的時候鳍征,從應用層開始向下傳遞,沒經(jīng)過一層面徽,該層的協(xié)議會把上層傳遞的數(shù)據(jù)在這個基礎上加一個首部艳丛,該首部包含了該層協(xié)議管理的信息,比如說網(wǎng)絡層會打包IP信息趟紊,數(shù)據(jù)鏈路層打包mac地址氮双。
通過這種層層打包的方式,最后由物理層傳遞出去霎匈,再有路由器戴差,代理服務器等設備,交給目標計算機铛嘱。
目標計算機得到傳遞過來的數(shù)據(jù)后暖释,從物理層向上傳遞袭厂,每一層會將該層對應協(xié)議負責的首部摘除后再傳給上層。最后抵達應用層對應的某個應用程序球匕。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末嵌器,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谐丢,更是在濱河造成了極大的恐慌爽航,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乾忱,死亡現(xiàn)場離奇詭異讥珍,居然都是意外死亡,警方通過查閱死者的電腦和手機窄瘟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門衷佃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹄葱,你說我怎么就攤上這事氏义。” “怎么了图云?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵惯悠,是天一觀的道長。 經(jīng)常有香客問我竣况,道長克婶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任丹泉,我火速辦了婚禮情萤,結果婚禮上,老公的妹妹穿的比我還像新娘摹恨。我一直安慰自己筋岛,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布晒哄。 她就那樣靜靜地躺著睁宰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揩晴。 梳的紋絲不亂的頭發(fā)上勋陪,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天贪磺,我揣著相機與錄音硫兰,去河邊找鬼。 笑死寒锚,一個胖子當著我的面吹牛劫映,可吹牛的內容都是我干的违孝。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼泳赋,長吁一口氣:“原來是場噩夢啊……” “哼雌桑!你這毒婦竟也來了?” 一聲冷哼從身側響起祖今,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤校坑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后千诬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耍目,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年徐绑,在試婚紗的時候發(fā)現(xiàn)自己被綠了邪驮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡傲茄,死狀恐怖毅访,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情盘榨,我是刑警寧澤喻粹,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站草巡,受9級特大地震影響磷斧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜捷犹,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一弛饭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萍歉,春花似錦侣颂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔑舞,卻和暖如春拒担,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背攻询。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工从撼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钧栖。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓低零,卻偏偏與公主長得像婆翔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掏婶,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內容

  • 1.這篇文章不是本人原創(chuàng)的啃奴,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,049評論 6 174
  • 個人認為雄妥,Goodboy1881先生的TCP /IP 協(xié)議詳解學習博客系列博客是一部非常精彩的學習筆記最蕾,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評論 0 8
  • 同樣的,本文篇幅也比較長老厌,先來一張思維導圖揖膜,帶大家過一遍。 一梅桩、 計算機網(wǎng)絡體系結構分層 二壹粟、 TCP/IP 基礎...
    滌生_Woo閱讀 64,967評論 38 1,038
  • 地址解析協(xié)議ARP 物理這一級,主機和路由器是用物理地址來區(qū)別的宿百。物理地址是一個本地地址趁仙,管轄范圍是本地網(wǎng)絡,所以...
    顧慎為閱讀 1,073評論 0 1
  • 協(xié)議基礎 協(xié)議就是計算機之間通過網(wǎng)絡實現(xiàn)通信時實現(xiàn)所達成的一種“約定”垦页,這種約定使得那些由不同廠商的設備雀费,不同的C...
    d9fc24a0c9a9閱讀 2,352評論 0 6