导航

网络通信概念简介

Posted on 2014-04-04 18:20  FryFish  阅读(393)  评论(0)    收藏  举报

>> 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模型的每一层都可以有多种的实现协议。

由于其复杂性以及对已有网络协议缺乏兼容性,OSI模型在其发布之后受到了多数厂家和用户的抵制,所以并未形成一套与其完全一致的协议实现。而在现实的互联网络中TCP/IP协议模型成为了现实的标准。

参见:http://en.wikipedia.org/wiki/OSI_model
http://en.wikipedia.org/wiki/OSI_protocols
http://en.wikipedia.org/wiki/Open_Systems_Interconnection

>> TCP/IP协议模型

TCP/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_model

>> 网络数据传输的两种基本方式

  1. 电路交换(Circuit Switching) —— 两个网络节点独占一个通信信道,持续传输数据。
  2. 分组交换(Packet Switching,或称包交换) —— 多个网络节点共享一个通信信道,任意两个网络节点之间的传输数据被拆分成有限大小的数据包分多次传输。

>> 协议数据单元(PDU)与服务数据单元(SDU)

协议数据单元是特定协议下数据传输的基本单位,在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。