OSI的7層模型和TCP/IP四層模型
##TCP/IP 四層模型
- TCP/IP網路協議棧分為應用層(Application)、傳輸層(Transport)、網路層(Network)和鏈路層(Link)四層。
OSI 7層模型
- 物理層:主要定義物理裝置標準(網線的介面型別、光纖的介面型別、各種傳輸介質的傳輸速率),作用:傳輸位元流,就是將高低電平(0,1)轉化為電流強弱來進行傳輸,到達目的地之後再轉化為高低電平(0,1)這就是我們平時所說的數模轉換與模數轉換,這一層的資料叫做位元。
- 資料鏈路層:定義瞭如何讓格式化資料以幀為單位進行傳輸,以及如何讓控制對物理介質的訪問。這一層通常還提供錯誤檢測和糾正,以確保資料的可靠傳輸。如:串列埠通訊中使用到的9600、8、N、1(波特率,資料位,校驗位,停止位)
- 網路層:在位於不同地理位置的網路中的兩個主機系統之間提供連線和路徑選擇,而網路層正是管理這種連線的層。網路層負責點到點的傳輸(這裡的“點”指主機或路由器)
- 傳輸層:定義了一些傳輸資料的協議和埠號(WWW埠80等),如:TCP,UDP。 主要是將從下層接收的資料進行分段和傳輸,到達目的地址後再進行重組。常常把這一層資料叫做段。傳輸層負責端到端的傳輸(這裡的“端”指源主機和目的主機)
- 會話層:通過傳輸層(埠號:傳輸埠與接收埠)建立資料傳輸的通路。主要在你的系統之間發起會話或者接受會話請求(裝置之間需要互相認識可以是IP也可以是MAC或者是主機名)。
- 表示層:可確保一個系統的應用層所傳送的資訊可以被另一個系統的應用層讀取。如有必要,表示層會通過使用一種通格式來實現多種資料格式之間的轉換。
- 應用層:是最靠近使用者的OSI層。這一層為使用者的應用程式(例如 telnet、http、ftp)提供網路服務。
##網路層的IP協議詳解
- 網路層的IP協議是構成internet的基礎。internet上的主機通過IP地址來標識,internet上有大量路由器負責根據IP地址選擇合適的路徑轉發資料包,資料包從internet上的源主機到目的主機往往要經過十多個路由器。路由器是工作在第三層(網路層)的網路裝置,同時兼有交換機(和網絡卡一樣工作在鏈路層)的功能,可以在不同的鏈路層介面之間轉發資料包,因此路由器需要將進來的資料包拆掉網路層和鏈路層兩層首部並重新封裝。IP協議不保證傳輸的可靠性,資料包在傳輸過程中可能丟失,可靠性可以在上層協議或應用程式中提供支援。
##資料包封裝
- 不同的協議層對資料包有不同的稱謂,在傳輸層叫做資料段(segment),在網路層叫做資料報(datagram),在鏈路層叫做幀(frame)。資料封裝成幀後發到傳輸介質上,到達目的主機後每層協議再剝掉相應的首部,最後將應用層資料交給應用程式處理。
- IP和網路介面層之間傳送的資料單元應該是分組( packet)。分組既可以是一個IP資料報,也可以是IP資料報的一個片(fragment)。
##乙太網幀格式
乙太網幀中的資料長度規定最小46位元組,最大1500位元組,ARP和RARP資料包的長度不夠46位元組,要在後面補填充位。最大值1500稱為乙太網的最大傳輸單元(MTU),不同的網路型別有不同的MTU,如果一個數據包從乙太網路由到撥號鏈路上,資料包長度大於撥號鏈路的MTU,則需要對資料包進行分片(fragmentation)。ifconfig命令輸出中也有“MTU:1500”。注意,MTU這個概念指資料幀中有效載荷的最大長度,不包括幀頭長度。
##ARP資料報格式
看一個具體的例子。 請求幀如下(為了清晰在每行的前面加了位元組計數,每行16個位元組): 乙太網首部(14位元組) 0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06 ARP幀(28位元組) 0000: 00 01 0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37 0020: 00 00 00 00 00 00 c0 a8 00 02 填充位(18位元組) 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00
- 乙太網首部:
* 目的主機採用廣播地址,
* 源主機的MAC地址是00:05:5d:61:58:a8,
* 上層協議型別0x0806表示ARP。- ARP幀:
* 硬體型別0x0001表示乙太網,
* 協議型別0x0800表示IP協議,
* 硬體地址(MAC地址)長度為6,
* 協議地址(IP地址)長度為4,
* op為0x0001表示請求目的主機的MAC地址,
* 源主機MAC地址為00:05:5d:61:58:a8(假設)
* 源主機IP地址為c0 a8 00 37(192.168.0.55)(假設)
* 目的主機MAC地址全0待填寫,
* 目的主機IP地址為c0 a8 00 02(192.168.0.2)(假設)- 由於乙太網規定最小資料長度為46位元組,ARP幀長度只有28位元組,因此有18位元組填充位,填充位的內容沒有定義,與具體實現相關。`
應答幀如下: 乙太網首部 0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06 ARP幀 0000: 00 01 0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02 0020: 00 05 5d 61 58 a8 c0 a8 00 37 填充位(18位元組) 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00
- 乙太網首部:
* 目的主機的MAC地址是00:05:5d:61:58:a8,
* 源主機的MAC地址是00:05:5d:a1:b8:40,
* 上層協議型別0x0806表示ARP。- ARP幀:
* 硬體型別0x0001表示乙太網,
* 協議型別0x0800表示IP協議,
* 硬體地址(MAC地址)長度為6,
* 協議地址(IP地址)長度為4,
* op為0x0002表示應答,
* 源主機MAC地址為00:05:5d:a1:b8:40,
* 源主機IP地址為c0 a8 00 02(192.168.0.2),
* 目的主機MAC地址為00:05:5d:61:58:a8,
* 目的主機IP地址為c0 a8 00 37(192.168.0.55)。
如果源主機和目的主機不在同一網段,ARP請求的廣播幀無法穿過路由器,源主機如何與目的主機通訊?
答:ARP一般只在區域網起作用,即兩個主機在同一個網段,雖然部分路由器有ARP代理功能,但也不可能把廣域網上所有的地址都代理。所以在兩個不同的網段進行訪問的時後,當發現目的地址不是本網段IP的時候,將會把資料包傳送給閘道器處理(一般閘道器就是路由器來做的),路由器此時就發揮他的路由功能進行IP路由.(查詢路由表)