一、在四層網路模型的基礎上,可以將實體(各種硬體裝置)歸為最下面一層,抽象出實體層。
越往上的層越靠近使用者, 我們做 web 開發主要關注的是應用層(http協議), 底下的各層直接接觸的比較少,可以大概的了解下各層是負責什麼的就行了, 出問題的時候知道怎麼排查。
1、實體層:
兩台電腦要相互通訊, 這個通訊就必須有乙個介質, 這個介質將電腦連起來的光纜、電纜、雙絞線、無線電波等方式。 這個就叫「實體層」, 他是把電腦連起來的物理手段, 主要規定了網路的一些電氣特性,作用是負責傳送0和1的電訊號。
定義 :
物理層中單純提供高低電平表示的0101沒有任何意義,必須規定乙個解讀方式, 多少個電訊號算一組, 每個訊號位有什麼意義? 而這個就是鏈路層的功能,統一規定這些0101的解讀方式。
乙太網協議:
乙太網規定,一組電訊號構成乙個資料報,叫做"幀"(frame)。每一幀分成兩個部分:標頭(head)和資料(data)。
"標頭"包含資料報的一些說明項,比如傳送者、接受者、資料型別等等;"資料"則是資料報的具體內容。
乙太網資料報的"標頭",包含了傳送者和接受者的資訊。傳送者和接受者是如何標識呢?
乙太網規定,連入網路的所有裝置,都必須具有"網絡卡"介面。資料報必須是從一塊網絡卡,傳送到另一塊網絡卡。網絡卡的位址,就是資料報的傳送位址和接收位址,這叫做mac位址。
廣播 :
定義位址只是第一步,當有多台裝置的時候,怎麼確定要把訊息發給哪台裝置呢?就是採用廣播的方式, 讓所有裝置都收到訊息,然後自己判斷訊息是不是給自己的, 不是則丟棄,是則處理。
3、網路層:
由來:按照上面的模式, 確實可以做到通過廣播的方式找到全世界任何一台機器,但是想象一下, 全世界這麼多機器全部使用廣播的方式通訊, 結果可能收到的一億個包裡面都沒有我們需要的乙個包,這樣設計是災難性的,所以不能做得太大,只能侷限在傳送者所在的子網路使用。
而網際網路是無數這樣的子網路共同組成的乙個巨型網路,很像想象上海和洛杉磯的電腦會在同乙個子網路,這幾乎是不可能的。
鏈路層解決了子網內機器通訊的問題(廣播), 那麼各個子網之間的通訊就在網路層解決。
"網路層"出現以後,每台計算機有了兩種位址,一種是mac位址,另一種是網路位址。兩種位址之間沒有任何聯絡,mac位址是繫結在網絡卡上的,網路位址則是管理員分配的,它們只是隨機組合在一起。 網路位址幫助我們確定計算機所在的子網路,mac位址則將資料報送到該子網路中的目標網絡卡。因此,從邏輯上可以推斷,必定是先處理網路位址,然後再處理mac位址。
而我們常說的 ip 其實就是網路層的ip協議, 目前使用最廣泛的是 ipv4(第四版)
ip資料報:
遵守ip協議發出的資料報就是ip資料報, ip資料報也分為"標頭"和"資料"兩個部分:
4、傳輸層:
而傳輸層就是這個用途的,他引入「埠」的概念, 乙個埠只能被乙個程序占用,那麼你知道這個包是哪個埠傳過來的, 你也就知道這個包應該給哪個程序了。
傳輸層說的最多的是 tcp/udp 協議。需要實現上述功能,最簡單的方式就是 udp 協議,它的格式幾乎就是在資料前面,加上埠號。
"標頭"部分主要定義了發出埠和接收埠,"資料"部分就是具體的內容。然後,把整個udp資料報放入ip資料報的"資料"部分,而前面說過,ip資料報又是放在乙太網資料報之中的,所以整個乙太網資料報現在變成了下面這樣:
5、應用層:
實現上面幾層之後,兩個程式相互通訊的條件就有了,但是這不等於兩個程式就可以進行溝通協作了(比如埃及人和中國人相遇, 他們鞥聽見彼此說話,但是卻無法溝通、合作,因為理解不了對方表達的意思)。
程式同樣也是這樣, 這就需要大家有乙個彼此都能理解的語言(約定), 大家都遵循這個約定,就能彼此溝通了。
所以就有了各種應用層協議,比如 http、 ftp 等。
因此,現在的乙太網的資料報就變成下面這樣:
整體回顧下,我們現在的網際網路幾層協議的分工和定位如下 :
1、實體層 : 各種廠家生產的各種硬體。
4、傳輸層:負責定位機器上的程式,靠埠定位程式,實現程式與程式之間的通訊。
5、應用層:負責各個程式之間通訊時候的「翻譯」,規定了通訊的格式等。
舉例 :
比如我訪問瀏覽器的時候, 在瀏覽器敲下問**, 先通過應用層 http 協議對我傳送的內容進行封裝,然後交給下面傳輸層的tcp協議對http包進行封裝(頭部接了埠等資訊),下面的網路層對tcp包進行封裝(加入ip位址等)得到ip包,再下面的鏈路層再對ip包進行封裝(加了mac位址等)得到乙太網包【當然其中還包括資料格式的轉化等】。
傳輸的時候先根據子網掩碼等排到對方與自己是否在同乙個子網, 如果在,則直接通過廣播的方式傳送給對方,如果不在,則先把包傳送給閘道器,閘道器再通過路由的方式將包傳送對應ip位址的子網中, 另乙個子網的閘道器再溝通廣播的方式將包傳送給目標位址(用mac定位)。
上圖中,1號電腦要向4號電腦傳送乙個資料報。它先判斷4號電腦是否在同乙個子網路,結果發現不是(後文介紹判斷方法),於是就把這個資料報發到閘道器a。閘道器a通過路由協議,發現4號電腦位於子網路b,又把資料報發給閘道器b,閘道器b再**到4號電腦。
網路通訊協議
網路協議是構成網路的基本元件之一,協議是若干規則和協定的組合,一般指機器1的第n 層與機器2的第 n層的對話,這種對話中所使用的若干規則和約束便稱為第 n層網路協議。tcp ip 網路體系結構模型就是遵循 tcp ip 協議進行通訊的一種分層體系,現今,internet 和intranet 所使用的...
網路通訊協議
通過計算機網路可以使多台計算機實現連線,位於同乙個網路中的計算機在進行連線和通訊時需要遵守一定的規則,這就好比在道路中行駛的汽車一定要遵守交通規則一樣。在計算機網路中,這些連線和通訊的規則被稱為網路通訊協議,它對資料的傳輸格式 傳輸速率 傳輸步驟等做了統一規定,通訊雙方必須同時遵守才能完成資料交換。...
網路通訊協議
一 osi模型 名稱 層次 功能 物理層 1 實現計算機系統與網路間的物理連線 資料鏈路層 2 進行資料打包與解包,形成資訊幀 網路層 3 提供資料通過的路由 傳輸層 4 提供傳輸順序資訊與響應 會話層 5 建立和中止連線 表示層 6 資料轉換 確認資料格式 應用層 7 提供使用者程式介面 二 協議...