網(wǎng)絡基礎知識

本文從開發(fā)者的角度,從底層往上層進行五層模型的概述。文章底部附一張x-mind結構圖,從上層往底層進行概述蟆盐。

網(wǎng)絡通信概述

網(wǎng)絡通信的實質就是:交換網(wǎng)絡數(shù)據(jù)包。

數(shù)據(jù)包的結構:以太網(wǎng)標頭-IP標頭-TCP標頭-應用層數(shù)據(jù)包

數(shù)據(jù)包能正常交換條件:本端及對端的MAC地址和IP地址

上網(wǎng)設置必要條件:

  1. 本機IP地址
  2. 子網(wǎng)掩碼
  3. 網(wǎng)關IP地址
  4. DNS的IP地址

因為MAC有局限性蹬碧,若不是在同個子網(wǎng)環(huán)境舱禽,無法知道對方的MAC地址,就需要網(wǎng)關轉發(fā)

  • 同一子網(wǎng)絡恩沽,需要知道對方的MAC地址及對方的IP地址
  • 非同一子網(wǎng)絡誊稚,需要知道本端的網(wǎng)關MAC地址及對方的IP地址

物理層(實體層)

物理層是把電腦連接起來的物理手段,主要規(guī)定了網(wǎng)絡的一些電氣特性±锊基于電氣特性發(fā)送高低電壓(電信號)城瞎,高電壓對應數(shù)字“1”,低電壓對應數(shù)字“0”

常見物理設備有:中繼線疾瓮、雙絞線脖镀、集線器。

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

定義電信號“0”狼电,“1”的分組方式蜒灰,每組電信號是什么意思

常見物理設備

網(wǎng)卡、網(wǎng)橋

以太網(wǎng)協(xié)議

一組電信號構成一個數(shù)據(jù)包肩碟,叫做“幀”强窖,每一幀分成兩個部分:標頭(Head)和數(shù)據(jù)(Data)。

“標頭”包含數(shù)據(jù)包的一些說明項削祈,例如發(fā)送者及源地址翅溺、接受者及目標地址、數(shù)據(jù)類型等髓抑×椋“數(shù)據(jù)”則是數(shù)據(jù)包的具體內容

"標頭"長度固定18字節(jié),“數(shù)據(jù)”長度最低46字節(jié)吨拍。最長1500字節(jié)褪猛。

所以,整個“幀”最低64字節(jié)密末。最長1518字節(jié)握爷。如果數(shù)據(jù)很長,必須分割成多個幀進行發(fā)送(因為分幀后严里,多個被分割的數(shù)據(jù)包能不能按序號重新排序拼接,組成完成的原信息追城,后續(xù)會介紹到TCP和UDP協(xié)議)

MAC地址

以太網(wǎng)規(guī)定刹碾,連入網(wǎng)絡的所有設備都必須具有“網(wǎng)卡”接口,數(shù)據(jù)包必須從一塊網(wǎng)卡座柱,傳送到另一塊網(wǎng)卡迷帜,網(wǎng)卡的地址就是數(shù)據(jù)包的發(fā)送地址和接收地址,即MAC地址

image

每塊網(wǎng)卡出廠時色洞,都有一個獨一無二的MAC地址戏锹,長度是48個二進制位,通常用12個十六進制數(shù)表示

舉個栗子: 00-B0-D0-86-BB-F7
前6個十六進制數(shù)是廠商編號火诸,后六個是該廠商的網(wǎng)卡流水號

廣播(同一廣播域內)

接下來又有幾個問題:

1.一塊網(wǎng)卡怎么知道另外一塊網(wǎng)卡的MAC地址锦针?

2.系統(tǒng)怎么才能吧數(shù)據(jù)包準確送到接送方?

首先通過ARP協(xié)議,可以知道另一塊網(wǎng)卡的MAC地址(不詳細說明)
其次奈搜,因為數(shù)據(jù)包的Head中含有接收方的MAC地址悉盆,所有以太網(wǎng)采用很原始的方式:向本網(wǎng)絡內所有 計算機發(fā)送數(shù)據(jù)包,讓每臺計算機自己判斷馋吗,自己是否是接收方焕盟。這種發(fā)送方式就是“廣播”。

數(shù)據(jù)包格式

網(wǎng)絡層

由上述的“廣播”方式可知宏粤,以太網(wǎng)采用廣播方式發(fā)送數(shù)據(jù)包脚翘,不僅效率低。而且局限在發(fā)送者所在的子網(wǎng)絡绍哎。
所以接下來要區(qū)分哪些MAC地址屬于同個子網(wǎng)絡堰怨,那些不是。

如果是同個子網(wǎng)絡采用廣播方式發(fā)送蛇摸,否則就采用“路由”方式發(fā)送备图。

這就導致了“網(wǎng)絡層”的誕生。他的作用是引進一套新的地址赶袄,使我們能區(qū)分不同的計算機是否屬于同個子網(wǎng)絡揽涮,這套地址就是“網(wǎng)絡地址”,簡稱“網(wǎng)址”饿肺。

網(wǎng)絡層的功能即建立主機到主機通信

常見物理設備

路由器蒋困、三層交換機

IP協(xié)議

規(guī)定網(wǎng)絡地址的協(xié)議,即IP協(xié)議敬辣。他所定義的地址雪标,被稱為IP地址。

作用:1. 為每臺計算機分配IP地址溉跃;2. 確定哪些地址屬于同個網(wǎng)絡村刨。

目前廣泛采用的是IP協(xié)議第四版,簡稱IPv4撰茎。IPv4規(guī)定網(wǎng)絡地址由32個二進制位組成嵌牺,習慣用四段十進制表示IP地址,從0.0.0.0 到255.255.255.255龄糊。

IPv4地址

互聯(lián)網(wǎng)上每臺計算機會被分配到一個IP地址逆粹。地址分為兩部分,前部分代表網(wǎng)絡炫惩,后部分代表主機僻弹。那么如果從IP地址,判斷兩臺計算機是否屬于同一子網(wǎng)絡他嚷?這時候需要另外一個參數(shù)子網(wǎng)掩碼蹋绽。

子網(wǎng)掩碼:表示子網(wǎng)絡特征的一個參數(shù)芭毙。它在形式上等同于IP地址,也是一個32位二進制數(shù)字蟋字,它的網(wǎng)絡部分全部為1稿蹲,主機部分全部為0。比如鹊奖,IP地址172.16.254.1苛聘,如果已知網(wǎng)絡部分是前24位,主機部分是后8位忠聚,那么子網(wǎng)絡掩碼就是11111111.11111111.11111111.00000000设哗,寫成十進制就是255.255.255.0。

知道"子網(wǎng)掩碼"两蟀,我們就能判斷网梢,任意兩個IP地址是否處在同一個子網(wǎng)絡。方法是將兩個IP地址與子網(wǎng)掩碼分別進行AND運算(兩個數(shù)位都為1赂毯,運算結果為1战虏,否則為0),然后比較結果是否相同党涕,如果是的話烦感,就表明它們在同一個子網(wǎng)絡中,否則就不是膛堤。

舉個栗子:已知IP地址172.16.254.1和172.16.254.233的子網(wǎng)掩碼都是255.255.255.0手趣,請問它們是否在同一個子網(wǎng)絡?

兩者與子網(wǎng)掩碼分別進行AND運算肥荔,結果都是172.16.254.0绿渣,因此它們在同一個子網(wǎng)絡。

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

根據(jù)IP協(xié)議發(fā)送的數(shù)據(jù)就叫IP數(shù)據(jù)包燕耿。IP數(shù)據(jù)包分為“標頭”和“數(shù)據(jù)”兩個部分

IP數(shù)據(jù)包的“標頭”長度為20 ~ 60字節(jié)中符,整個數(shù)據(jù)包做大為65535字節(jié)。

如何在以太網(wǎng)協(xié)議中傳遞IP數(shù)據(jù)包缸棵?

把IP數(shù)據(jù)包把IP數(shù)據(jù)包直接放在以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”部分舟茶,無需修改以太網(wǎng)的規(guī)格。數(shù)據(jù)結構就變?yōu)椋?/p>

以太網(wǎng)標頭-IP標頭-數(shù)據(jù)

傳輸層

由網(wǎng)絡層協(xié)議可知堵第,互聯(lián)網(wǎng)上任意兩臺主機可以建立通信,但是同個主機上運行了多個程序隧出,當一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)來時踏志,怎么知道這個數(shù)據(jù)包對應是哪個程序上使用?

這時候必須引入端口胀瞪,它實際是每一個使用網(wǎng)卡的程序的編號针余。每個數(shù)據(jù)包都發(fā)到主機的特定端口饲鄙,所以不同的程序就能取到自己所需要的數(shù)據(jù)。

端口是0 ~ 65535之間的整數(shù)圆雁,0 ~1023的端口被系統(tǒng)占用忍级,用戶只能使用>1023的端口。
當啟用某個應用程序時伪朽,若沒有指定某個固定端口(例如NodeJs可以指定常用端口)轴咱,程序會隨機隨機選用一個端口,然后和服務器對應端口聯(lián)系烈涮。

所以傳輸層的功能:網(wǎng)絡中的數(shù)據(jù)包發(fā)到接收方對應的哪個程序中朴肺,即端口到端口的通信

常見物理設備

四層交換機、四層路由器

UDP協(xié)議 和 TCP協(xié)議

數(shù)據(jù)包中加入端口信息坚洽,就需要新的協(xié)議

UDP協(xié)議

UDP數(shù)據(jù)包由“標頭”和“數(shù)據(jù)”兩部分組成戈稿,“標頭”部分包含接收端口和發(fā)出端口,“數(shù)據(jù)”部分就是具體的內容讶舰。

UDP標頭一共8個字節(jié)鞍盗,總長度不超過65535字節(jié),正好放進一個IP數(shù)據(jù)包跳昼。

把整個UDP包放入IP數(shù)據(jù)包的“數(shù)據(jù)”部分般甲。整個IP數(shù)據(jù)包又放在以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”部分,最后形成的數(shù)據(jù)包格式:以太網(wǎng)標頭-IP標頭-UDP標頭-數(shù)據(jù)

特點:網(wǎng)路中UDP數(shù)據(jù)包一旦發(fā)出庐舟,無法知道對方是否收到欣除,不進行確定。容易實現(xiàn)但是網(wǎng)絡可靠性低

TCP協(xié)議

TCP協(xié)議可近似認為挪略,它就是有確認機制的UDP協(xié)議历帚,每發(fā)出一個數(shù)據(jù)包都要求確認。如果有一個數(shù)據(jù)包遺失杠娱,就收不到確認挽牢,發(fā)出方就知道有必要重發(fā)這個數(shù)據(jù)包

特點:能夠確保數(shù)據(jù)不會遺失。它的缺點是過程復雜摊求、實現(xiàn)困難禽拔、消耗較多的資源。

TCP數(shù)據(jù)包和UDP數(shù)據(jù)包一樣室叉,都是內嵌在IP數(shù)據(jù)包的"數(shù)據(jù)"部分睹栖。TCP數(shù)據(jù)包沒有長度限制,理論上可以無限長茧痕,但是為了保證網(wǎng)絡的效率野来,通常TCP數(shù)據(jù)包的長度不會超過IP數(shù)據(jù)包的長度,以確保單個TCP數(shù)據(jù)包不必再分割踪旷。

TCP報文:

image

TCP三次握手四次揮手


TCP三次握手四次揮手

應用層

規(guī)定應用程序的數(shù)據(jù)格式曼氛,以太網(wǎng)數(shù)據(jù)包:(以太網(wǎng)標頭-IP標頭-TCP標頭-應用層數(shù)據(jù)包)

舉個栗子:TCP協(xié)議可以為各種程序傳遞數(shù)據(jù)豁辉,比如網(wǎng)頁、FTP舀患、Email數(shù)據(jù)徽级,應用程序接收到傳輸層的數(shù)據(jù),需要對其進行解讀聊浅,那么餐抢,必須要有不同的協(xié)議規(guī)定網(wǎng)頁、FTP狗超、Email各自不同的格式弹澎。這些應用程序協(xié)議就構成了應用層。

文末加個X-mind結構圖
image

本文參考博客:

http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末努咐,一起剝皮案震驚了整個濱河市苦蒿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渗稍,老刑警劉巖佩迟,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竿屹,居然都是意外死亡报强,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門拱燃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秉溉,“玉大人,你說我怎么就攤上這事碗誉≌偎唬” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵哮缺,是天一觀的道長弄跌。 經(jīng)常有香客問我,道長尝苇,這世上最難降的妖魔是什么铛只? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮糠溜,結果婚禮上淳玩,老公的妹妹穿的比我還像新娘。我一直安慰自己非竿,他們只是感情好凯肋,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汽馋,像睡著了一般侮东。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豹芯,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天悄雅,我揣著相機與錄音,去河邊找鬼铁蹈。 笑死宽闲,一個胖子當著我的面吹牛,可吹牛的內容都是我干的握牧。 我是一名探鬼主播容诬,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沿腰!你這毒婦竟也來了览徒?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤颂龙,失蹤者是張志新(化名)和其女友劉穎习蓬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體措嵌,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡躲叼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了企巢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫慷。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浪规,靈堂內的尸體忽然破棺而出或听,到底是詐尸還是另有隱情,我是刑警寧澤罗丰,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布神帅,位于F島的核電站,受9級特大地震影響萌抵,放射性物質發(fā)生泄漏找御。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一绍填、第九天 我趴在偏房一處隱蔽的房頂上張望霎桅。 院中可真熱鬧,春花似錦讨永、人聲如沸滔驶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽揭糕。三九已至萝快,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間著角,已是汗流浹背揪漩。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吏口,地道東北人奄容。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像产徊,于是被迫代替她去往敵國和親昂勒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • 簡介 用簡單的話來定義tcpdump舟铜,就是:dump the traffic on a network戈盈,根據(jù)使用者...
    JasonShi6306421閱讀 1,240評論 0 1
  • 文章首發(fā)于個人blog歡迎指正補充,可聯(lián)系lionsom_lin@qq.com原文地址:《網(wǎng)絡是怎樣連接的》閱讀整...
    lionsom_lin閱讀 14,154評論 6 31
  • 簡介 用簡單的話來定義tcpdump深滚,就是:dump the traffic on a network奕谭,根據(jù)使用者...
    保川閱讀 5,956評論 1 13
  • 個人認為,Goodboy1881先生的TCP /IP 協(xié)議詳解學習博客系列博客是一部非常精彩的學習筆記痴荐,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • 話說兩臺電腦要通訊就必須遵守共同的規(guī)則血柳,就好比兩個人要溝通就必須使用共同的語言一樣。一個只懂英語的人生兆,和一個只懂中...
    哲逗年閱讀 904評論 0 0