>> OSI(Open Systems Interconnection)模型和OSI协议(OSI Protocols)编程
OSI模式是国际标准化组织(ISO)制定的一个网络通讯的概念化模型,它将不一样的通讯功能划分到7个逻辑层,这7个层分别只与紧邻的下一层通讯:网络
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
参考:http://en.wikipedia.org/wiki/TCP/IP_model
http://en.wikipedia.org/wiki/OSI_modelget
>> 网络数据传输的两种基本方式it
>> 协议数据单元(PDU)与服务数据单元(SDU)io
协议数据单元是特定协议下数据传输的基本单位,在OSI模型中,每层的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能够经过三部分信息描述:
好比,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。