堅持原創(chuàng)輸出,點擊藍字關(guān)注我吧
圖片來自網(wǎng)絡(luò)
目錄
一、初識網(wǎng)絡(luò)基礎(chǔ) 二、網(wǎng)絡(luò)七層模型詳解
三、總結(jié)
一、初識網(wǎng)絡(luò)基礎(chǔ)
其實網(wǎng)絡(luò)剛剛開始發(fā)展的時候,它并沒有這么一個復(fù)雜的模型,它最開始只有一層。隨著網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)上的功能越來越復(fù)雜,單一的網(wǎng)絡(luò)結(jié)構(gòu)就不能再滿足人們的需求了。
所以呢,人們就開始對網(wǎng)絡(luò)進行分層。讓每一層都執(zhí)行工作,各司其職,來實現(xiàn)網(wǎng)絡(luò)上復(fù)雜的工作流程。
發(fā)展下來就出現(xiàn)了2個非常重要的模型:OSI七層模型、TCP/IP四層協(xié)議棧。這兩個模型所定義出來的層級,工作都差不太多。
「OSI七層模型:」 是ISO組織在1985年研究的網(wǎng)絡(luò)互聯(lián)模型。
「目的:」 剛開始提出來只是為了實現(xiàn)2臺機器的互聯(lián),怎么實現(xiàn)互聯(lián)?
提出了一個統(tǒng)一的規(guī)范,兩臺機器使用統(tǒng)一的一個規(guī)范標準進行通信??梢园逊秶鷶U大,可以實現(xiàn)很多臺機器的「互聯(lián)」。
形成了互聯(lián)網(wǎng)最早的形態(tài)。「互聯(lián)網(wǎng)」的形態(tài)其實就是這個時候提出來的。所有的網(wǎng)絡(luò)活動基本上都在這七層中間來實現(xiàn)的。
在瀏覽器里輸入百度的網(wǎng)址,按下回車就返回了百度的頁面,這個過程就基本都可以在OSI七層模型中找到每一層的實現(xiàn)歷程。
為了詳細知道,輸入百度網(wǎng)址返回一個頁面,這個過程具體怎么實現(xiàn)的,就需要詳細了解下這七層分別做什么樣的工作。
二、網(wǎng)絡(luò)七層模型詳解
1.物理層
1.1實現(xiàn)兩臺機器互聯(lián),機器和機器之間如何通信?
最開始的需求是把兩臺機器聯(lián)接起來,讓它們通信。物理層就根據(jù)這個需求運用而生。
物理層實現(xiàn)了什么功能呢?
它提供了肉眼可見的物理介質(zhì),比如網(wǎng)線(雙膠線)、光纖、無線電波,這些都可以實現(xiàn)機器之間的基本連接。
1.2機器間的通信是以什么樣的形式存在呢?
像這樣的一個信息在物理介質(zhì)里面其實就是一個計算機語言,比如說:0101二進制的一個形式存在。
在專業(yè)名詞里這個二進制也叫做電信號(比特流)。物理層的出現(xiàn)能夠讓兩臺電腦通過物理介質(zhì)發(fā)送比特流了。
比特流還是0101這樣一個機器的語言,這種0101的比特流其實是一個沒有什么意義的一個數(shù)據(jù)。怎么讓它變成一個有意義的數(shù)據(jù)呢?
2.數(shù)據(jù)鏈路層
針對這個需求,就產(chǎn)生了數(shù)據(jù)鏈路層。對無意義的比特流進行分組,這些0101的二進制的電信號,對這些二進制以8個為一組。8位一組形成了一個字節(jié),這樣的一個數(shù)據(jù)被它進行分組之后,然后根據(jù)這個分組,依次按順序發(fā)送數(shù)據(jù)。
2.1這樣的數(shù)據(jù)就會變成一個有特殊意義,上面層級能夠認識的數(shù)據(jù),這就是數(shù)據(jù)鏈路層實現(xiàn)的第一個需求。
雖然數(shù)據(jù)變成機器間可以認識的一個有意義的數(shù)據(jù),但是機器收到這個數(shù)據(jù)怎么知道這個數(shù)據(jù)是發(fā)給我的呢?
2.2怎么確認這個數(shù)據(jù)是發(fā)給我的呢?網(wǎng)絡(luò)中是怎么去定義這個事情?
數(shù)據(jù)鏈路層定義了mac地址。機器都有一個網(wǎng)卡,(電腦-以太網(wǎng)-適配器-詳細信息,可以看到無線網(wǎng)卡的物理地址,其實就是每一塊網(wǎng)卡的獨有的地址,理解成這個網(wǎng)卡的身份證)。mac地址是唯一的,mac地址就是標識這臺機器的物理地址,現(xiàn)在如果電腦a發(fā)給電腦b一個信息,需要帶上mac地址。
就像寄信,寄信的時候需要寫寄件人的地址和收件人的地址。
對應(yīng)物理網(wǎng)卡,物理網(wǎng)卡其實也有個原mac地址,把自己mac地址帶上,也會帶上收件人的地址(目的地址),就知道我要發(fā)給誰并告訴對方是誰發(fā)的,方便對方給我回信。
那它就知道應(yīng)該向誰去回復(fù)。這個就是通過mac地址解決的。
2.3數(shù)據(jù)鏈路層的數(shù)據(jù)格式:幀。
通過數(shù)據(jù)鏈路層,計算機之間可以正常傳數(shù)據(jù)包,但是現(xiàn)在有2個主機,一個主機a,主機f,兩臺主機間通信,但是中間隔著bcde主機,它們兩個不是直接連接的機器,它們兩個怎么實現(xiàn)直接通信呢?
如果兩個主機離得特別遠,中間可以實現(xiàn)通信的路徑有很多條,怎么選擇最近的路徑通信呢?
數(shù)據(jù)鏈路層通過mac地址識別對方主機和自身的主機,怎么知道對方的mac地址?
3.網(wǎng)絡(luò)層
3.1第一個解決怎么知道對方的mac地址?
定義了一個協(xié)議:arp的協(xié)議,實現(xiàn)的功能就是做地址解析,通過ip地址去知曉對方的mac地址。
3.2第二個需求:主機a和主機f之間隔著很多別的主機,兩個主機可能不在一個子網(wǎng)里面,就沒辦法直接通信。去判斷它們兩個是否在一個子網(wǎng),怎么判斷?
定義了一個協(xié)議:ip協(xié)議去判斷發(fā)送者和接收者是否在同一個子網(wǎng),怎么發(fā)送數(shù)據(jù)。
3.3路徑很多,怎么選擇最優(yōu)的路徑?
網(wǎng)絡(luò)層同樣定義了一組協(xié)議,就是路由協(xié)議。
一組路由協(xié)議:靜態(tài)路由協(xié)議,動態(tài)路由協(xié)議(rip,ospf,bgp協(xié)議)。這些都是常用的動態(tài)路由協(xié)議。
這三個需求都是網(wǎng)絡(luò)層給大家解決的問題。網(wǎng)絡(luò)層是最關(guān)鍵的一層,實現(xiàn)的功能特別多。
數(shù)據(jù)包在網(wǎng)絡(luò)里可以正常發(fā)送了,如果發(fā)送的數(shù)據(jù)特別的多或者單個數(shù)據(jù)包特別大,在網(wǎng)絡(luò)中傳輸需要很長的時間,中間的網(wǎng)絡(luò)中斷了,怎么才能保證重傳?
如果重傳,怎么確定數(shù)據(jù)包完整且正確?
4.傳輸層
實現(xiàn)的第一個功能,對發(fā)送的數(shù)據(jù)進行一個封裝。
通過tcp協(xié)議和udp協(xié)議封裝的。這2個協(xié)議對數(shù)據(jù)包進行封裝后,讓數(shù)據(jù)包一個一個按順序依次發(fā)送。
這樣封裝能夠保證數(shù)據(jù)包是完整且準確的。還有一個功能,就是兩臺主機,都是用兩個應(yīng)用進行通信(例如兩個人qq聊天)。
所以,怎么判斷我的電腦上的qq發(fā)送給你的,你就是用qq回應(yīng)的呢?
我的電腦上不止一個應(yīng)用程序,那我怎么判斷你是用qq接收數(shù)據(jù)而不是用別的呢?
也是通過傳輸層實現(xiàn),定義了端口的概念,實現(xiàn)應(yīng)用程序的尋找。
當數(shù)據(jù)包到達傳輸層后,會有一個端口,然后呢,我們的應(yīng)用程序通過端口尋找到對應(yīng)的程序,就去發(fā)給對應(yīng)程序進行數(shù)據(jù)處理。
5.會話層
如果數(shù)據(jù)特別大,中斷需要重傳,是不是不應(yīng)該重頭開始傳,應(yīng)該斷點續(xù)傳,就由會話層實現(xiàn)的。
會話層:從校驗點繼續(xù)恢復(fù)數(shù)據(jù)進行重傳。這個功能對網(wǎng)絡(luò)上的數(shù)據(jù)傳輸很重要(大文件傳輸)。
實現(xiàn)了自動收發(fā)包的功能以及自動尋址的功能。
6.表示層
計算機有很多的操作系統(tǒng):windows/mac/linux系統(tǒng)。
各種系統(tǒng)間的語法不一樣的。不同系統(tǒng)間進行通信的話,這個就是表示層的工作了。
其實就是一個翻譯的工作,提供一種公共語言,讓不同系統(tǒng)間可以進行通信。
表示層和會話層沒有定義協(xié)議的功能,所以沒有定義協(xié)議。
7.應(yīng)用層
有了6個層級的工作,都是為了應(yīng)用層服務(wù)的。
用戶在瀏覽器訪問百度界面,屬于應(yīng)用層的操作。
數(shù)據(jù)已經(jīng)從一個主機上的應(yīng)用傳到另一個主機上的應(yīng)用了,這樣一個基本的功能是可以實現(xiàn)的。
但是數(shù)據(jù)包從底層傳上來,只有物理層的時候進行了一個組裝,在數(shù)據(jù)鏈路層形成了一個字節(jié)流。
上面層級并沒有重新進行一個數(shù)據(jù)的組裝,到了上面依然是一個字節(jié)流的格式,不好被應(yīng)用識別和操作。
所以應(yīng)用層通過定義了各種應(yīng)用協(xié)議來規(guī)范一個數(shù)據(jù)的格式。
比如最熟悉的http協(xié)議,https協(xié)議,ftp協(xié)議,dns協(xié)議,tftp協(xié)議,smtp協(xié)議。這些都是應(yīng)用層定義來規(guī)范數(shù)據(jù)的格式,方便系統(tǒng)、軟件、程序進行識別和操作。
以上就是七層模型的工作流程。
三、總結(jié)
掌握網(wǎng)絡(luò)基礎(chǔ)知識是為了應(yīng)對面試、進入公司遇到搭建測試環(huán)境或調(diào)試測試環(huán)境的時候需要用到網(wǎng)絡(luò)基礎(chǔ)知識。這是測試工程師需要掌握的必備技能。
|