網絡通訊概念簡介

>> OSI(Open Systems Interconnection)模型和OSI協議(OSI Protocols)編程

OSI模式是國際標準化組織(ISO)制定的一個網絡通訊的概念化模型,它將不一樣的通訊功能劃分到7個邏輯層,這7個層分別只與緊鄰的下一層通訊:網絡

  1. 物理層(Physical Layer)
  2. 數據鏈路層(Data Link Layer)
  3. 網絡層(Network Layer)
  4. 傳輸層(Transport Layer)
  5. 會話層(Session Layer)
  6. 表示層(Presentation Layer)
  7. 應用層(Application Layer)

OSI協議是對OSI模型具體實現,對於OSI模型的每一層均可以有多種的實現協議。ui

因爲其複雜性以及對已有網絡協議缺少兼容性,OSI模型在其發佈以後受到了多數廠家和用戶的抵制,因此並未造成一套與其徹底一致的協議實現。而在現實的互聯網絡中TCP/IP協議模型成爲了現實的標準。編碼

參見:http://en.wikipedia.org/wiki/OSI_model
http://en.wikipedia.org/wiki/OSI_protocols
http://en.wikipedia.org/wiki/Open_Systems_Interconnectionspa

>> TCP/IP協議模型orm

TCP/IP模型分爲四層:ip

  1. 應用層(Application Layer) —— 包括OSI的應用層,表示層和大部分會話層。實現協議有:SMTP, FTP, SSH, HTTP等。
  2. 傳輸層(Transport Layer) —— 包括OSI的會話層和傳輸層。實現協議有:TCP,UDP,DCCP等。
  3. 互聯網層(Internet Layer) —— OSI網絡層的一個子集。實現協議有:IP(IPv4, IPv6),ICMP,IGMP等。
  4. 鏈路層(Link Layer) —— 包括OSI的數據鏈路層、物理層及部分的網絡層。實現協議有:MAC(Ethernet,DSL,ISDN),ARP,NDP,Tunnels等。

參考:http://en.wikipedia.org/wiki/TCP/IP_model
http://en.wikipedia.org/wiki/OSI_modelget

>> 網絡數據傳輸的兩種基本方式it

  1. 電路交換(Circuit Switching) —— 兩個網絡節點獨佔一個通訊信道,持續傳輸數據。
  2. 分組交換(Packet Switching,或稱包交換) —— 多個網絡節點共享一個通訊信道,任意兩個網絡節點之間的傳輸數據被拆分紅有限大小的數據包分屢次傳輸。

>> 協議數據單元(PDU)與服務數據單元(SDU)io

協議數據單元是特定協議下數據傳輸的基本單位,在OSI模型中,每層的PDU具備特定的含義。以下:

  1. 第一層(Layer 1)物理層(Physical Layer)的PDU是bit,或更通常地說是符號(或「流」)。
  2. 第二次(Layer 2)數據鏈路層(Data Link Layer)的PDU是幀(frame)。
  3. 第三次(Layer 3 )網絡層(Network Layer)的PDU是包(packet)。
  4. 第四層(Layer 4 )傳輸層(Transport Layer)的PDU,對TCP協議是段(segment),對UDP協議是數據報(datagram)。
  5. 第五六七層(Layer 5-6-7 )會話層、表示層、應用層(Session, Presentation, Application Layer)的PDU是消息。

PDU一般由三部分組成:Header + Payload + Trailer。Header和Trailer是協議控制信息,Payload是上層的用戶信息。

SDU是OSI上層傳遞給下層的用戶數據,或者能夠說第N層的PDU就是第N-1層的SDU。來自於上層的SDU最終會做爲本層PDU的載荷數據(Payload)出現,但二者並不相同,好比,SDU的大小若是超出了最大載荷的限制,可能會被拆分到多個PUD的載荷中。

參見:http://en.wikipedia.org/wiki/Protocol_data_unit

>> 協議描述術語

協議的主要目的是描述PDU中數據的組成、順序、類型及長度等信息。有關這些信息用以下術語來描述:

- IE(信息元素 - Information Element) —— PUD中的Header和Trailer的信息單元,每一個單元描述了特定的信息。對於PUD中的Payload,因爲它是上層數據,在本層沒法解析,因此會始終做爲一個單獨的IE。如:源地址、目標地址等。

- IEI(信息元素指示器 - Information Element Indicator) —— 爲每一個IE給定的名稱。如:Source Address, Destination Address等。

- IEIC(信息元素指示器編碼 - Information Element Indicator Coding) —— 爲便於在代碼中區分不一樣的IE,給每一個IEI指定了一個惟一是整數值。如:Source Address --> 0x00, Destination Address --> 0x01。一般,PDU中的所有IE都會按固定的順序拼接,因此IEIC的取值實際也是各IE的拼接順序。

- IE Format - IE的格式描述。任意一個IE能夠經過三部分信息描述:

  • T - Type of IE,實際是IEIC的值。
  • L - Length of IE,PDU中這一IE的長度(通常以字節爲單位)。
  • V - Value of IE,這一IE的取值。

好比,V表示這一IE中直接保存IE的取值(沒有IE的IEIC和長度信息),TVL表示這一IE由三部分組成——首先是IEIC,而後是這個IE的總長度,而後是IE的取值。

- IE Length - IE在PDU中所佔的字節數範圍。若是IE Length是固定值,表示其取值有固定長度;若是是一個範圍(不固定),表示其取值長度會變化。

- PDU Type - 爲了經過同一協議傳遞具備不一樣用途的數據,某些協議會設置一個IEI爲PDU Type的信息元素。具備不一樣Type的PDU由不一樣的IE組成(可能有部分重複)。

>> 包(Packet)

嚴格來講包(Packet)是指網絡層的PDU,但在編程中,爲了方便,任何一層的PDU均可稱爲包。這樣,包基本上能夠等價於Payload。

相關文章
相關標籤/搜索