网络通讯概念简介

>> 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。

相关文章
相关标签/搜索