計算機(jī)網(wǎng)絡(luò)-OSI七層模型
互聯(lián)網(wǎng)的本質(zhì)就是一系列的網(wǎng)絡(luò)協(xié)議(網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則)浑劳,這個協(xié)議就叫OSI協(xié)議桨昙。協(xié)議按照功能不同参袱,人為的將協(xié)議分為七層(實(shí)際不存在)络它。區(qū)分出來的目的是讓我們明白這些抽象出來的層,哪一層都是干什么用的肃廓。
關(guān)于層與協(xié)議
????互聯(lián)網(wǎng)分成若干層弊知,越下面的層纪铺,越靠近硬件。越上面的層屹堰,越靠近用戶肛冶。每一層都是為了完成一種功能。為了實(shí)現(xiàn)這些功能扯键,就需要大家都遵守共同的規(guī)則睦袖。這個規(guī)則,就叫做“協(xié)議(protocol)忧陪。接下來我們就對七層模型簡化為五層模型來具體的講解扣泊。
1-物理層
??????我們從五層協(xié)議最底下的一層開始說明近范。生活中,我們的電腦要組網(wǎng)延蟹,第一件事是先把電腦連起來评矩,可以用光纜、電纜等方式阱飘。這就叫做“物理層”斥杜,這是把電腦在實(shí)際空間中連接起來的物理手段。
2-數(shù)據(jù)鏈路層
????五層模型的倒數(shù)第二層是數(shù)據(jù)鏈路層沥匈,它確定了物理層電信號0和1的分組方式(不同的意義)蔗喂。一組電信號構(gòu)成一個數(shù)據(jù)包,叫做“幀”高帖。每一幀分成兩個部分:標(biāo)頭(Head)和數(shù)據(jù)(Data)缰儿。“標(biāo)頭”包含數(shù)據(jù)包的信息散址,如發(fā)送者乖阵、接受者、數(shù)據(jù)類型等预麸,"數(shù)據(jù)"則是數(shù)據(jù)包的具體內(nèi)容瞪浸。
????連入網(wǎng)絡(luò)的所有電腦(設(shè)備),都必須具有一個單獨(dú)的網(wǎng)卡的地址吏祸,這叫做MAC地址(每塊網(wǎng)卡出廠的時候对蒲,都有一個全世界獨(dú)一無二的MAC地址,長度是48個二進(jìn)制位贡翘,通常用12個十六進(jìn)制數(shù)表示)蹈矮。數(shù)據(jù)包的“標(biāo)頭”,就包含了發(fā)送者和接受者的信息床估。
? ? ? ?1號計算機(jī)向4號計算機(jī)發(fā)送一個數(shù)據(jù)包含滴,同一個子網(wǎng)絡(luò)的2號、3號計算機(jī)都會收到這個包丐巫。它們讀取這個包的"標(biāo)頭"谈况,找到接收方的MAC地址,然后與自身MAC地址相比較递胧,如果兩者相同碑韵,就接受這個包,做進(jìn)一步處理缎脾,否則就丟棄這個包祝闻。這種發(fā)送方式就叫做"廣播"。
3-網(wǎng)絡(luò)層
????依靠MAC地址發(fā)送數(shù)據(jù)遗菠。北京的網(wǎng)卡就可以找到東京的網(wǎng)卡了联喘。但是华蜒,以太網(wǎng)采用廣播方式發(fā)送數(shù)據(jù)包,所有接入互聯(lián)網(wǎng)的電腦都會收到豁遭。否則就只能在局域網(wǎng)內(nèi)傳播叭喜,而這又失去了互聯(lián)網(wǎng)的意義。要知道蓖谢,互聯(lián)網(wǎng)就是無數(shù)子網(wǎng)絡(luò)共同組成的一個巨型網(wǎng)絡(luò)捂蕴。
?如何能夠區(qū)分哪些MAC地址屬于同一個子網(wǎng)絡(luò)呢?于是闪幽,就有了網(wǎng)絡(luò)層的概念啥辨。它的作用是針對MAC地址引進(jìn)一套新的映射地址,使得我們能夠區(qū)分不同的計算機(jī)是否屬于同一個子網(wǎng)絡(luò)盯腌。這套地址就叫做"網(wǎng)絡(luò)地址"溉知,簡稱"網(wǎng)址"。網(wǎng)絡(luò)地址的協(xié)議腊嗡,叫做IP協(xié)議着倾。它所定義的地址拾酝,就被稱為IP地址燕少。目前采用的是IP協(xié)議第四版,簡稱IPv4蒿囤。因為這套地址快分配完客们,接下來用的是IPv6地址,感興趣的同學(xué)可以查一下材诽。
4-傳輸層
????有了MAC地址和IP地址底挫,我們就可以在互聯(lián)網(wǎng)上任意兩臺主機(jī)上建立通信。但是脸侥,同一臺主機(jī)上有許多程序軟件都需要用到網(wǎng)絡(luò)建邓,比如,你一邊打游戲睁枕,一邊看直播官边。當(dāng)一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)來的時候,我們的電腦怎么知道外遇,它是表示游戲的內(nèi)容注簿,還是表示在線直播的內(nèi)容?
????這時跳仿,我們還需要一個參數(shù)诡渴,表示這個數(shù)據(jù)包到底供哪個程序使用。這個參數(shù)就叫做"端口"菲语。"端口"是0到65535之間的一個整數(shù)妄辩,正好16個二進(jìn)制位惑灵。0到1023的端口被系統(tǒng)占用,用戶只能選用大于1023的端口眼耀。不管是瀏覽網(wǎng)頁還是在線聊天泣棋,應(yīng)用程序會隨機(jī)選用一個端口,然后與服務(wù)器的相應(yīng)端口聯(lián)系畔塔。"傳輸層"的功能潭辈,就是建立"端口到端口"的通信。
????我們在數(shù)據(jù)包中加入端口信息澈吨,加入新的信息就需要新的協(xié)議把敢。最簡單的實(shí)現(xiàn)叫做UDP協(xié)議,它的格式幾乎就是在數(shù)據(jù)前面谅辣,直接加上端口號修赞。UDP的數(shù)據(jù)包,也是由"標(biāo)頭"和"數(shù)據(jù)"兩部分組成桑阶。它的優(yōu)點(diǎn)是比較簡單柏副,容易實(shí)現(xiàn)。缺點(diǎn)是可靠性較差蚣录,一旦數(shù)據(jù)包發(fā)出割择,無法知道對方是否收到。
? ? 因此萎河,為了提高網(wǎng)絡(luò)可靠性荔泳,TCP協(xié)議就誕生了。這個協(xié)議非常復(fù)雜虐杯,但可以近似認(rèn)為玛歌,它就是有確認(rèn)機(jī)制的UDP協(xié)議。每發(fā)出一個數(shù)據(jù)包都要求確認(rèn)收到擎椰,收到確認(rèn)收到的返回信息后再次返回我知道你已經(jīng)收到的消息支子。如果有一個數(shù)據(jù)包遺失,就收不到確認(rèn)达舒,發(fā)出方就重發(fā)這個數(shù)據(jù)包值朋。因此,TCP協(xié)議能夠確保不會丟失數(shù)據(jù)休弃。它的缺點(diǎn)是開銷太大吞歼。
5-應(yīng)用層
????應(yīng)用程序軟件收到"傳輸層"的數(shù)據(jù),接下來就要對收到的數(shù)據(jù)進(jìn)行翻譯和解讀塔猾。應(yīng)用層的作用篙骡,就是規(guī)定應(yīng)用程序的數(shù)據(jù)格式。舉例來說,TCP協(xié)議可以為各種各樣的程序傳遞數(shù)據(jù)糯俗,比如Email尿褪、WWW、SFTP等得湘。那么杖玲,必須有不同協(xié)議規(guī)定電子郵件、網(wǎng)頁淘正、FTP數(shù)據(jù)的格式摆马,這些應(yīng)用程序協(xié)議就構(gòu)成了"應(yīng)用層"。這是最高的一層鸿吆,直接面對用戶囤采。它的數(shù)據(jù)就放在TCP數(shù)據(jù)包的"數(shù)據(jù)"部分。