OSI七層模型流程

先回顧一下OSI七層模型有些啥內容:

(OSI模型與TCP/IP模型類似,這裏只針對OSI模型展開)

撇開復雜與晦澀難懂的術語不說,個人理解七個層次通俗來說主要實現以下內容:

應用層:就是應用軟件使用的協議,如郵箱使用的POP3,SMTP、遠程登錄使用的Telnet、獲取IP地址的DHCP、域名解析的DNS、網頁瀏覽的http協議等;這部分協議主要是規定應用軟件如何去進行通信的。

(應用層此部分有修改,感謝@小張指正。)

 

表示層:決定數據的展現(編碼)形式,如同一部電影可以採樣、量化、編碼爲RMVB、AVI,一張圖片能夠是JPEG、BMP、PNG等。

 

會話層:爲兩端通信實體建立連接(會話),中間有認證鑑權以及檢查點記錄(供會話意外中斷的時候可以繼續,類似斷點續傳)。

 

傳輸層:將一個數據/文件斬件分成很多小段,標記順序以被對端接收後可以按順序重組數據,另外標記該應用程序使用的端口號及提供QOS。(不同的應用程序使用不同計算機的端口號,同樣的應用程序需要使用一樣的端口號才能正常通信)

 

網絡層:路由選路,選擇本次通信使用的協議(http、ftp等),指定路由策略及訪問控制策略。(IP地址在這一層)

 

數據鏈路層:根據端口與MAC地址,做分組(VLAN)隔離、端口安全、訪問控制。(MAC地址在這一層)處理VLAN內的數據幀轉發,跨VLAN間的訪問,需要上升到網絡層。

 

物理層:將數據最終編碼爲用0、1標識的比特流,然後傳輸。(例如將題主頭像的圖片,變爲一串01100111100這樣的數字來表示)。

 

基礎理論說完,接着回答題主的主題:

兩主機通信的過程,從發送者(以下簡稱A)到接收者(以下簡稱B),屬於從7層(應用層)->1層(物理層)封裝,然後傳輸到遠端,再從1層(物理層)->7層(應用層)解封裝的過程。

1、 當A打開了QQ這個軟件,相當就到達應用層了;因爲軟件會根據你的操作調動機器底層的硬件工作了。

 

2、 當A往QQ這個軟件的聊天窗口裏面輸入信息,發出後,QQ會將這個信息保存在本地聊天記錄文件MSGEX.db(一般就保存在QQ目錄下以你的QQ號碼爲文件夾裏)。以某種格式編碼/保存某種信息,這可以理解爲表示層了。

 

3、 當A打開與B的聊天窗口,輸入信息,按下“輸入”按鈕,用戶的操作就完結了,剩下都是機器自己的操作了。實際傳輸之前QQ會先建立A與B的會話連接,才真正開始傳輸信息/數據(你可以理解借傳輸文件理解:你發送文件給對方,要等待對方按下接收,纔算建立了會話,然後纔開始傳輸。)這算會話層了。

 

4、 會話建立後,會將A發的信息斬件,如A發送“你吃了飯沒有”?傳輸層將這句話斬成“你”“吃”“了”“飯”“沒”“有”6個數據段,標記號使用的端口號,然後準備發出去。

 

5、 接上一層,信息還未發出去,這時候在網絡層做路由選路,可以理解爲,從A家出去,可以分別經“聯通”“電信”“移動”3個網絡中的一個再到B家。

網絡層根據路由協議負責選路(根據鏈路質量、帶寬、開銷等方法論)。假設最後選了2條,可能就A->聯通->B發送“你”“吃”“了”3個數據段,A->電信->B發送“飯”“沒”“有”3個數據段。

選路後,這一層要標記IP包頭,包頭主要內容是源IP地址,目的IP地址,使用什麼協議。其中源、目的IP相當於你寄信的時候的收發的地址與郵政編碼,標記出發送者與接收者。而協議相當於這封信到底用什麼語言書寫。(只有保證2端使用同種語言,才能確保通信起來,否則你用英文寫信給大媽,大媽怎麼看得懂呢?)

 

6、 然後再到數據鏈路層,數據鏈路層主要是負責同一個子網內的通信的。例如A、B連接在同一臺二層交換機,就屬於同一個子網,那麼數據幀的通信室是不需要通過網絡層的(即三層交換機或者路由器),直接在這臺二層交換機就過去了。這一層打的是MAC地址的幀頭,對於上述通信過程來說,就是爲數據幀打上A的機器的MAC與A的網關的MAC。這一層的工作就完成了。

 

7、 最後一層了,經過上述斬件、打完各層標籤後的6個數據幀,物理層將他們翻譯文6段0、1表示的比特流,然後通過光纖、銅纜進行傳輸。

 

8、 當比特流傳輸到了遠端,接着B的機器按照上述的1~7的步驟反方向運行一次即可(即有物理層到應用層)。就是一層層讀取標籤,傳輸給標籤標記着的相應對象,然後摘除標籤,再讀取上一層標籤,直到最後B的應用程序能夠讀到A往應用程序輸入的數據爲止。

--------------------------------------------------------------------------------------------------------------------------------------------

對於題主的評論,補充2個圖;

2個主機之間的通信,對於2臺主機來說,肯定是都需要跨越7層的,而平常說的只需要去到2層或者3層,其實是對於中間系統而言的,就是說中間的交換機、路由器而言;

例如圖1的假設兩端的通信實體在一個局域網內,其實傳輸的數據包去到交換機時,交換機拆開二層幀頭,再查自身的MAC地址表,發現表裏面有對應的MAC地址,然後對應的對口是哪個,接着就把幀發送到該端口轉發出去,它的任務就完成了。根本不需要到達網絡層的意思是,根本都不需要拆卡3層的IP包頭來讀取裏面的信息。

通過轉發,最好到達B主機,然後從1層拆到7層,B用戶的主機最終就讀取到信息了。

 

對於圖2,由於A、B兩通信實體跨域廣域網,所以光靠MAC地址表,肯定是查不到的,這時候路由器會把IP包頭也拆開,讀取目的IP地址,再查路由表,就知道往哪個端口發出去了。然後層層轉發,就可以達到目的地了,接下來就和圖1的一樣了。

發佈了20 篇原創文章 · 獲贊 11 · 訪問量 3683
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章