網絡模型
OSI 網絡參考模型
,僅作為參考
,也就是說OSI網絡實際中并不使用。我們只是把OSI網絡模型作為參考,在網絡出現問題的時候,可以從一個宏觀的整體去分析和解決問題。而且搭建網絡的時候也并不一定需要劃分為7層
但是當今互聯網廣泛使用的是TCP/IP網絡模型
,他原本是四層,實際上劃分為五層更符合實
OSI模型的目的:解決主機之間的網絡通訊
各層的作用
例子:華為電腦用瀏覽器訪問蘋果電腦搭建的網站。兩個應用具體需要如何進行交互就是應用層
的事情了。應用層并不是說你需要使用什么應用程序,而是應用如何溝通。常用的應用層協議HTTP協議
,使得應用之間可以實現溝通。
應用層就是最接近用戶的那一層。但是應用層只不過是邏輯上
把兩個應用連通,實際物理上的連通是需要物理層
的。我們要發送出去的數據在計算機里只不過是無數的0和1,0或者1就叫做比特
。物理層就要把這些比特用不同的媒介傳輸出去。
可以用電,用光或者其他形式的電磁波來表示和傳輸信號。數據從網絡接口出去以后會經過不同的網絡拓撲。
并不是一條線走到底,因此需要中繼器和集線器這樣的設備。
但還是不夠,信號要去到哪臺設備是需要定向的。因此需要高級一點的網絡模型,在數據鏈路層
這里,比特會被封裝成幀
。
幀就是這一層表示數據的特殊名字而已。在封裝的時候會加上MAC地址
,也就是傳說中的物理地址
。網卡出廠的時候就有著全球唯一
的MAC地址。
為了可以通過MAC地址對不同設備進行數據的傳輸,就出現了交換機
。這里說的是二層交換機。
比方說這里有一臺交換機,連接多臺主機。
發送端發送數據的時候,交換機就知道了發送端的MAC地址。如果此時交換機也知道接收端的MAC地址,就可以把數據直接發送過去了。物理地址就是這樣一跳一跳地進行傳遞
另外因為物理層在傳輸0和1的時候,可能會0變成1,或者1變成0。會進行差錯檢測以及一定的差錯糾正。
另外設備之間的傳輸能力以及接受能力也是個問題,很可能這邊“噴水”式傳輸,另一邊“夾縫式”接受。因此需要流控制來避免這種不對稱。
我們知道互聯網是一張大網,如果用MAC物理地址來作為唯一的尋址方法是不科學的。
比如我和你買了同一個廠的網卡,我和你的網卡差別只有一個字母。
但是我和你距離十萬八千里,物理地址此時就很難做出快速定位。
相當于我有你的名字,但不知道你住哪里,找不到你。因此需要IP地址
來進行尋址
和路由選擇
。IP這樣的邏輯地址就是實現端到端
的基礎了,而不是物理地址那樣的跳到跳
傳輸。
說到路由選擇,也就是說路由器
也是網絡層的核心。
包
就是網絡層里數據的名字。在封裝為二層的幀之前就是包。
路由器根據包里IP地址
進行路由轉發。
地址管理和路由選擇就是這一層的核心。雖然有MAC和IP地址可以抵達對方主機,但是對方主機可能運行著無數多個軟件進程。假設我用谷歌和火狐瀏覽器同時登錄網站,如何讓數據去到指定的軟件服務上,就需要用到端口號
作為地址來定位了。比如客戶端這里生成不同的端口號。
即使同時訪問HTTP端口80也是沒問題的,根據不同的源端口號來作出響應就可以了。所以傳輸層
(運輸層)在網絡層的端到端基礎上,實現了服務進程到服務進程的傳輸
。段
就是傳輸層里數據的名字。
傳輸層管理兩個節點之間數據的傳輸,負責可靠傳輸
和不可靠傳輸
,既TCP
UDP
其中TCP允許應用把字節流變成多份段,而不是整個字節數據完整地發送出去。
傳輸層還有流量控制來確保傳輸速度,再加上錯誤控制來進行數據完整的接收。
接下來會話層
也比較好理解。比方說你現在登錄了某個網站,網站服務可以保持你的登錄狀態,不用每次都輸入賬號和密碼。當然網站服務會管理和控制登錄狀態。
另外會話層還負責同步服務。比方說你上次看到電影高潮的時刻突然停電了,再次登錄賬號的時候就可以自動同步島上次看到的時間段。
不同計算機內部的各自表達方式可能不太相同。表示層
就來負責這樣的轉換,也就是編碼
和解碼
。
數據往往還需要進行加密,比方說HTTPS( SSL/ TLS)就會對我們的數據進行加密和解密。
另外我們可能還需要給文件瘦身,壓縮也是這一層負責的。
應用層,表示層和會話層
的數據統稱為應用數據
或者應用負載
也可以叫上層數據
。同時也是教科書上說的報文。
數據在各層的名字分別是:報文
,段
,包
,幀
和比特
就地址來說:有端口號
,IP邏輯地址
和MAC物理地址
就傳輸功能來講:有服務進程到服務進程
,端到端
,跳到跳
數據流通過程
客戶端要發送數據,也就是報文。報文來到傳輸層加上端口號,封裝成段。段來到了網絡層,加上IP地址,封住成包。注意這里的包是含有目標IP地址的,畢竟你要知道數據要發送到什么地方。
但因為目標IP地址不是同一個網絡下的,要發送到其他的網絡就需要經過默認網關。現在就出現了一個問題,客戶端主機最初并不知道默認網關的MAC地址,沒有辦法封裝成幀。這個時候就可以用ARP協議進行廣播,找到網關IP對應的MAC地址把包封裝成幀。
網關:計算機的網關(Gateway)就是到其他網段的出口,也就是路由器接口IP地址
ARP協議:即地址解析協議, 用于實現從 IP 地址到 MAC 地址的映射,即詢問目標IP對應的MAC地址
源MAC地址填自己的,目標MAC地址填廣播地址。假設當前網絡有個二層交換機,這個交換機只需要記錄下不同的接口對應的MAC地址就好了,交換機收到廣播后就幫忙發送出去“人手一份”。
所以默認網關收到消息后查看了幀,發現了發送端的MAC地址,再解封發現包里面的IP地址,就會把客戶端MAC地址和IP地址關聯為一臺主機。同時默認網關會把自己的IP地址放入包里,再結合自己的MAC地址封裝成幀,默認網關就這樣做出響應。這樣原路返回,發送端就知道默認網關的MAC地址了。
現在就可以封裝成幀,并且發送數據。
比特流到了默認網關的時候,解封為幀發現是送給自己的,那解封為包查看到目標IP地址是在另一網絡中的,就會進行路由轉發,最終到達了目的網絡。如果目標的網關知道目標IP地址和MAC地址是哪臺主機,封裝成幀就可以直接發送過去了。
如果不知道也還是可以用ARP喊下街就好。目標主機收到包確認是自己的IP地址以后,解封查看段可以發現源和目標端口號,用目標端口號給到指定的應用程序。應用程序處理好以后,就可以按照源的信息做出響應。回去的原理也是一樣的。