網(wǎng)絡(luò)協(xié)議

互聯(lián)網(wǎng)協(xié)議

本文只為了自己記錄,加深理解,原文請看阮一峰老師的http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

N層通信模型

我在北京發(fā)了一條QQ消息筝蚕,為何隔了半個地球,在洛杉磯朋友能夠收到改橘,這就是互聯(lián)網(wǎng)通信.對于我和洛杉磯的朋友來說羡儿,我們接觸到的只是QQ這個應(yīng)用程序凤粗,但是真實的數(shù)據(jù)是轉(zhuǎn)化成0101發(fā)出去/接收到的仿滔,這就是應(yīng)用-->二進制-->通信-->二進制-->應(yīng)用的傳輸過程.

相比osi7層模型嘉裤,tcp/ip 4層模型,我更喜歡阮一峰老師的五層模型圖:


enter image description here

第一層 - 物理層

它就是把電腦連接起來的物理手段据过,作用是負責(zé)傳送0和1的電信號惋砂。例如:光纖,電纜

這就叫做"物理層",它就是把電腦連接起來的物理手段绳锅。它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性西饵,作用是負責(zé)傳送0和1的電信號。

第二層 - 數(shù)據(jù)鏈路層 - mac地址到mac地址

1.為何需要這層

單純的0和1沒有任何意義鳞芙,必須規(guī)定解讀方式:多少個電信號算一組眷柔?每個信號位有何意義?一種叫做"以太網(wǎng)"(Ethernet)的協(xié)議規(guī)定原朝,一組電信號構(gòu)成一個數(shù)據(jù)包驯嘱,叫做"幀"(Frame)。

這就是"數(shù)據(jù)鏈路層"的功能喳坠,它在"物理層"的上方鞠评,確定了0和1的分組方式。

2.幀的具體構(gòu)成

每一幀分成兩個部分:標頭(Head)和數(shù)據(jù)(Data)丙笋。


enter image description here

"標頭"包含數(shù)據(jù)包的一些說明項谢澈,比如發(fā)送者、接受者御板、數(shù)據(jù)類型等等锥忿;"數(shù)據(jù)"則是數(shù)據(jù)包的具體內(nèi)容。

"標頭"的長度怠肋,固定為18字節(jié)敬鬓。"數(shù)據(jù)"的長度,最短為46字節(jié)笙各,最長為1500字節(jié)钉答。因此,整個"幀"最短為64字節(jié)杈抢,最長為1518字節(jié)数尿。如果數(shù)據(jù)很長,就必須分割成多個幀進行發(fā)送惶楼。

3.mac地址(網(wǎng)卡地址)

A.mac地址用來作為接受/發(fā)送數(shù)據(jù)的唯一標識

以太網(wǎng)規(guī)定右蹦,連入網(wǎng)絡(luò)的所有設(shè)備,都必須具有"網(wǎng)卡"接口歼捐。數(shù)據(jù)包必須是從一塊網(wǎng)卡何陆,傳送到另一塊網(wǎng)卡。網(wǎng)卡的地址豹储,就是數(shù)據(jù)包的發(fā)送地址和接收地址贷盲,這叫做MAC地址

0和1組成的電信號分組,通過mac地址到mac地址的方式傳輸

B.mac地址
enter image description here

每塊網(wǎng)卡出廠的時候,都有一個全世界獨一無二(同一個廠商才唯一)的MAC地址剥扣,長度是48個二進制位巩剖,通常用12個十六進制數(shù)表示。

PS:MAC地址可不是世界上獨一無二的钠怯,只是其散列足夠大球及,使得在同一個子網(wǎng)中MAC地址碰巧相同的兩塊網(wǎng)卡幾率很小很小而已。

4.怎么發(fā)送數(shù)據(jù)出去--廣播

首先,需要知道對方的mac地址才能向?qū)Ψ桨l(fā)送數(shù)據(jù)包,這由ARP協(xié)議來解決

Q : 知道了地址之后,怎么發(fā)送給對方
A : 用廣播的方式發(fā)給所有網(wǎng)絡(luò)里的網(wǎng)卡(mac地址),接收方根據(jù)幀的head里面標識的接收方mac地址是否等于自己來判斷,一致就接收數(shù)據(jù),不一致就拋掉數(shù)據(jù)


enter image description here

比如,1號給2,3,4,5都發(fā)了數(shù)據(jù),但是幀head的接收方mac地址和2一致,所以3,4,5都拋棄了,只有2接受并處理了數(shù)據(jù).這個就叫廣播

新方法 緩存MAC地址

老式的的集線器(市面上已經(jīng)不存在了)才是這種廣播模式呻疹,現(xiàn)在交換機會記錄并緩存各個交換機端口連接的設(shè)備的MAC地址吃引,轉(zhuǎn)發(fā)包時會按緩存的地址表轉(zhuǎn)發(fā)到特定的交換機端口,除非地址表里面沒有目的MAC地址刽锤,不然不會廣播包的镊尺。

第三層 - 網(wǎng)絡(luò)層 - IP到IP

1.網(wǎng)絡(luò)層的由來

原因

mac地址能過廣播的方式,給當前同一個子網(wǎng)絡(luò)下的所有計算機發(fā)送了數(shù)據(jù)包,但是缺點是每一臺計算機都會收到一次包,并且廣播不能傳播到其他子網(wǎng)絡(luò)去,否則互聯(lián)網(wǎng)上每一臺計算機都會收到所有包,那會引起災(zāi)難并思。

作用

網(wǎng)絡(luò)層的作用是引進一套新的地址庐氮,使得我們能夠區(qū)分不同的計算機是否屬于同一個子網(wǎng)絡(luò)。這套地址就叫做"網(wǎng)絡(luò)地址"宋彼,簡稱"網(wǎng)址".

MAC地址 + 網(wǎng)址

每臺計算機有了兩種地址弄砍,一種是MAC地址仙畦,另一種是網(wǎng)絡(luò)地址。兩種地址之間沒有任何聯(lián)系音婶,MAC地址是綁定在網(wǎng)卡上的慨畸,網(wǎng)絡(luò)地址則是管理員分配的,它們只是隨機組合在一起衣式。網(wǎng)絡(luò)地址幫助我們確定計算機所在的子網(wǎng)絡(luò)寸士,MAC地址則將數(shù)據(jù)包送到該子網(wǎng)絡(luò)中的目標網(wǎng)卡。

2.IP協(xié)議

規(guī)定網(wǎng)絡(luò)地址的協(xié)議碴卧,叫做IP協(xié)議弱卡。作用主要有兩個,一個是為每一臺計算機分配IP地址住册,另一個是確定哪些地址在同一個子網(wǎng)絡(luò)(通過子網(wǎng)掩碼)婶博。

它所定義的地址,就被稱為IP地址荧飞。

IPv4

目前凡蜻,廣泛采用的是IP協(xié)議第四版,簡稱IPv4垢箕。這個版本規(guī)定划栓,網(wǎng)絡(luò)地址由32個二進制位組成。

IPv6 的誕生

(1)更大的地址空間
IPv4中規(guī)定IP地址長度為32条获,即有232-1個地址忠荞,也就是最多有2的32次方的電腦可以聯(lián)到Internet上;而IPv6中IP地址的長度為128帅掘,即有2128-1個地`址委煤。整個地球的每平方米面積上仍可分配1000多個地址

(2)更小的路由表
IPv6的地址分配一開始就遵循聚類(Aggregation)的原則,這使得路由器能在路由表中用一條記錄(Entry)表示一片子網(wǎng)修档,大大減小了路由器中路由表的長度碧绞,提高了路由器轉(zhuǎn)發(fā)數(shù)據(jù)包的速度。 增強的組播(Multicast)支持以及對流的支持(Flow-control)吱窝。

(3)對DHCP協(xié)議的改進和擴展
使得網(wǎng)絡(luò)(尤其是局域網(wǎng))的管理更加方便和快捷.

(4)更高的安全性
在使用IPv6網(wǎng)絡(luò)中用戶可以對網(wǎng)絡(luò)層的數(shù)據(jù)進行加密并對IP報文進行校驗,這極大的增強了網(wǎng)絡(luò)安全

子網(wǎng)掩碼

子網(wǎng)掩碼讥邻,就是表示子網(wǎng)絡(luò)特征的一個參數(shù)。就是掩去主機部分院峡,保留網(wǎng)絡(luò)部分

它在形式上等同于IP地址兴使,也是一個32位二進制數(shù)字,它的網(wǎng)絡(luò)部分全部為1照激,主機部分全部為0发魄。如果已知網(wǎng)絡(luò)部分是前24位,主機部分是后8位,那么子網(wǎng)絡(luò)掩碼就是11111111.11111111.11111111.00000000励幼,寫成十進制就是255.255.255.0

知道"子網(wǎng)掩碼"汰寓,我們就能判斷,任意兩個IP地址是否處在同一個子網(wǎng)絡(luò)苹粟。方法是將兩個IP地址與子網(wǎng)掩碼分別進行AND運算(兩個數(shù)位都為1有滑,運算結(jié)果為1,否則為0)六水,然后比較結(jié)果是否相同俺孙,如果是的話辣卒,就表明它們在同一個子網(wǎng)絡(luò)中掷贾,否則就不是。

IP地址與子網(wǎng)掩碼進行“按位與”運算荣茫,得到網(wǎng)絡(luò)地址想帅。

例如:
第一個IP地址的網(wǎng)絡(luò)地址:172.16.254.233
換算成二進制格式: 10101100 00010000 11111110 11101001
掩碼地址255.255.255.0 換算成二進制格式: 11111111 11111111 11111111 00000000
你把它們逐位進行&運算, 就可以將最后的8位全部變?yōu)?, 而前24位數(shù)字不變. 得到10101100 00010000 11111110 00000000, 即172.16.254.0

第二個IP地址的網(wǎng)絡(luò)地址:172. 16.254.233& 255.255.255.0 = 172. 16.254.0

一致,所以是同一個子網(wǎng)絡(luò)

3.IP數(shù)據(jù)包

以太網(wǎng)協(xié)議每一個數(shù)據(jù)包包含"標頭"和data,ip數(shù)據(jù)包則是將以太網(wǎng)數(shù)據(jù)包的data進一步分成"標頭"和data.

"標頭"部分主要包括版本啡莉、長度港准、IP地址等信息,"數(shù)據(jù)"部分則是IP數(shù)據(jù)包的具體內(nèi)容咧欣。


enter image description here

4.ARP協(xié)議

也就是在同一個子網(wǎng)絡(luò)中發(fā)一個特殊包,該包包含目的IP地址,所有子網(wǎng)絡(luò)下的計算機收到包后,拿出其中的ip和本機ip對比,一致的話就將自己的mac地址包成一個包,發(fā)給詢問計算機.不一致就拋棄.

所以有了IP地址,可以將數(shù)據(jù)發(fā)給同一個網(wǎng)絡(luò)的任何一臺計算機.

第四層 - 傳輸層 - 端口到端口

1.由來

Q : 同一臺主機上有許多程序都需要用到網(wǎng)絡(luò)浅缸,比如,你一邊瀏覽網(wǎng)頁魄咕,一邊與朋友在線聊天衩椒。當一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)來的時候,你怎么知道哮兰,它是表示網(wǎng)頁的內(nèi)容毛萌,還是表示在線聊天的內(nèi)容?

A : 通過監(jiān)聽不同端口

端口

端口是每一個使用網(wǎng)卡的程序的編號喝滞。每個數(shù)據(jù)包都發(fā)到主機的特定端口阁将,所以不同的程序就能取到自己所需要的數(shù)據(jù)。

"端口"是0到65535之間的一個整數(shù)右遭,正好16個二進制位做盅。0到1023的端口被系統(tǒng)占用,用戶只能選用大于1023的端口窘哈。任何一個應(yīng)用程序都會隨機選用一個端口言蛇,然后與服務(wù)器的相應(yīng)端口聯(lián)系。

"傳輸層"的功能宵距,就是建立"端口到端口"的通信腊尚。相比之下,"網(wǎng)絡(luò)層"的功能是建立"主機到主機"的通信满哪。只要確定主機和端口婿斥,我們就能實現(xiàn)程序之間的交流劝篷。

socket

Unix系統(tǒng)就把主機+端口,叫做"套接字"(socket)民宿。

2.UDP協(xié)議

現(xiàn)在娇妓,我們必須在數(shù)據(jù)包中加入端口信息,UDP數(shù)據(jù)包活鹰,也是由"標頭"和"數(shù)據(jù)"兩部分組成哈恰。

"標頭"部分主要定義了發(fā)出端口和接收端口,"數(shù)據(jù)"部分就是具體的內(nèi)容志群。然后着绷,把整個UDP數(shù)據(jù)包放入IP數(shù)據(jù)包的"數(shù)據(jù)"部分,這時整個數(shù)據(jù)包如下


enter image description here

3.TCP協(xié)議

UDP協(xié)議的缺點是不知道對方是否收到了數(shù)據(jù),為了提高準確性,誕生了TCP。

這個協(xié)議可以近似認為锌云,它就是有確認機制的UDP協(xié)議荠医,但是過程復(fù)雜、實現(xiàn)困難桑涎、消耗較多的資源彬向,每發(fā)出一個數(shù)據(jù)包都要求確認。如果有一個數(shù)據(jù)包遺失攻冷,就收不到確認娃胆,發(fā)出方就知道有必要重發(fā)這個數(shù)據(jù)包了。

第五層 - 應(yīng)用層 - 應(yīng)用程序到應(yīng)用程序

"應(yīng)用層"的作用等曼,就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式里烦。

舉例來說,TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù)涉兽,比如Email招驴、WWW、FTP等等枷畏。那么别厘,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁拥诡、FTP數(shù)據(jù)的格式触趴,這些應(yīng)用程序協(xié)議就構(gòu)成了應(yīng)用層

這是最高的一層渴肉,直接面對用戶冗懦。它的數(shù)據(jù)就放在TCP數(shù)據(jù)包的"數(shù)據(jù)"部分。因此仇祭,現(xiàn)在的以太網(wǎng)的數(shù)據(jù)包就變成下面這樣披蕉。

enter image description here

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子没讲,更是在濱河造成了極大的恐慌眯娱,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爬凑,死亡現(xiàn)場離奇詭異徙缴,居然都是意外死亡,警方通過查閱死者的電腦和手機嘁信,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門于样,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潘靖,你說我怎么就攤上這事穿剖。” “怎么了秘豹?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵携御,是天一觀的道長昌粤。 經(jīng)常有香客問我既绕,道長,這世上最難降的妖魔是什么涮坐? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任凄贩,我火速辦了婚禮,結(jié)果婚禮上袱讹,老公的妹妹穿的比我還像新娘疲扎。我一直安慰自己,他們只是感情好捷雕,可當我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布椒丧。 她就那樣靜靜地躺著,像睡著了一般救巷。 火紅的嫁衣襯著肌膚如雪壶熏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天浦译,我揣著相機與錄音棒假,去河邊找鬼。 笑死精盅,一個胖子當著我的面吹牛帽哑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叹俏,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼妻枕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屡谐,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤鹰贵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后康嘉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碉输,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年亭珍,在試婚紗的時候發(fā)現(xiàn)自己被綠了敷钾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡肄梨,死狀恐怖阻荒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情众羡,我是刑警寧澤侨赡,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站粱侣,受9級特大地震影響羊壹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜齐婴,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一油猫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柠偶,春花似錦情妖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蔫仙,卻和暖如春料睛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匀哄。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工秦效, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涎嚼。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓阱州,卻偏偏與公主長得像,于是被迫代替她去往敵國和親法梯。 傳聞我的和親對象是個殘疾皇子苔货,可洞房花燭夜當晚...
    茶點故事閱讀 45,995評論 2 361

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