OSI七层模型
OSI七层模型
ISO国际标准组织所定义的开放系统互连七层模型的定义和各层功能。它是网络技术入门者的敲门砖,也是分析、
评判各种网络技术的依据—从此网络不再神秘,它也是有理可依,有据可循的。 建立七层模型主要是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来;也使网络的不同功能模块分担起不同的职责。
网络发展中一个重要里程碑便是ISO(Internet Standard Organization,国际标准组织)对OSI(Open System Interconnect,开放系统互连)七层网络模型的定义。它不但成为以前的和后续的各种网络技术评判、分析的依据,也成为网络协议设计和统一的参考模型。
建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。网络七层的划分也是为了使网络的不同功能模块(不同层次)分担起不同的职责,从而带来如下好处:
减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错;
在各层分别定义标准接口,使具备相同对等层的不同网络设备能实现互操作,各层之间则相对独立,一种高层协议可放在多种低层协议上运行; 能有效刺激网络技术革新,因为每次更新都可以在小范围内进行,不需对整个网络动大手术; 便于研究和教学。
网络分层体现了在许多工程设计中都具有的结构化思想,是一种合理的划分。
网络七层的功能
网络七层包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象
;
传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。
那么,网络七层的具体定义和相应职责各是什么呢?下图便是OSI七层模型示简单意图,它们由下到上分别为:
OSI参考模型(简单图一)
第一层—物理层:
物理层定义了通讯网络之间物理链路的电气或机械特性,以及激活、维护和关闭这条链路的各项操作。
机械性能:物理连接媒体,接口的型状,尺寸的大小,引脚的数目和排列方式等。
电气性能:接口规定信号的电压、电流、阻抗、波形、速率、最大传输距离及平衡特性等。
工程规范:接口引脚的意义、特性、标准。
工作方式:确定数据位流的传输方式,如:单工、半双工或全双工。
第二层—数据链路层:
链路层屏蔽传输介质的物理特征,使数据可靠传送。
内容包括介质访问控制、连接控制、顺序控制、流量控制、差错控制和仲裁协议等。
实际的物理链路是不可靠的,总会出现错误。
数据链路层的作用就是通过一定的手段(将数据分成帧,以数据帧为单位进行传输)
将有差错的物理链路转化成对上层来说没有错误的数据链路。
提供物理地址、网络拓朴结构、错误警告机制、所传数据帧的排序和流控等。其中物理地址是相对网络层地址而言的,它代表了数据链路层的节点标识技术;“拓朴”是网络中经常会碰到的术语,标记着各个设备以何种方式互连起来,如:总线型—所有设备都连在一条总线上,星型—所有设备都通过一个中央结点互连;错误警告是向上层协议报告数据传递中错误的发生;数据帧排序可将所传数据重新排列;流控则用于调整数据传输速率,使接收端不至于过载。
第三层—网络层:
管理连接方式和路由选择。
连接方式:虚电路(Virtual Circuits)和数据报(Datagram)服务。
虚电路是面向连接的(Connection-Oriented),数据通讯一次路由,通过会话建立的一条通路。
数据报是非连接的(Connectionless-Oriented),每个数据报都有路由能力。
网络层的数据单位是包,使用的是IP地址,典型设备是路由器Router。
这一层可以进行流量控制,但流量控制更多的是使用第二层或第四层。本层将数据分成一定长度的分组,并在分组头中标识源和目的节点的逻辑地址,这些地址就象街区、门牌号一样,成为每个节点的标识;网络层的核心功能便是根据这些地址来获得从源到目的的路径,当有多条路径存在的情况下,还要负责进行路由选择。
第四层—传输层:提供对上层透明(不依赖于具体网络)的可靠的数据传输。如果说网络层关心的是“点到点”的逐点转递,那么可以说传输层关注的是“端到端”(源端到目的端)的最终效果。它的功能主要包括:流控、多路技术、虚电路管理和纠错及恢复等。其中多路技术使多个不同应用的数据可以通过单一的物理链路共同实现传递;虚电路是数据传递的逻辑通道,在传输层建立、维护和终止;纠错功能则可以检测错误的发生,并采取措施(如重传)解决问题。
第五层—会话层:在网络实体间建立、管理和终止通讯应用服务请求和响应等会话。
第六层—表示层:定义了一系列代码和代码转换功能以保证源端数据在目的端同样能被识别,比如大家所熟悉的文本数据的ASCII码,表示图象的GIF或表示动画的MPEG等。
第七层——应用层:应用层是面向用户的最高层,通过软件应用实现网络与用户的直接对话,如:找到通讯对方,识别可用资源和同步操作等。
网络七层的底三层(物理层、数据链路层和网络层)通常被称作媒体层,它们不为用户所见,默默地对网络起到支撑作用,是网络工程师所研究的对象;上四层(传输层、会话层、表示层和应用层)则被称作主机层,是用户所面向和关心的内容,这些程序常常将各层的功能综合在一起,在用户面前形成一个整体。大家所熟悉的网上应用WWW、FTP、TELNET等,都是这多层功能的综合。
在数据的实际传输中,发送方将数据送到自己的应用层,加上该层的控制信息后传给表示层;表示层如法炮制,再将数据加上自己的标识传给会话层;以此类推,每一层都在收到的数据上加上本层的控制信息并传给下一层;最后到达物理层时,数据通过实际的物理媒体传到接收方。接收端则执行与发送端相反的操作,由下往上,将逐层标识去掉,重新还原成最初的数据。由此可见,数据通讯双方在对等层必须采用相同的协议,定义同一种数据标识格式,这样才可能保证数据的正确传输而不至走形。
七层模型是一个理论模型,实际应用则千变万化,完全可能发生变异。对大多数应用,我们只是将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。
网络中实际用到的协议是否严格按照这七层来定义呢?并非如此,七层模型是一个理论模型,实际应用则千变万化,完全可能发生变异。何况有的应用由来已久,不可能在七层模型推出后又推翻重来。因此对大多数应用,我们只是将它的协议族(即协议堆栈)与七层模型作大致的对应,看看实际用到的特定协议是属于七层中某个子层,还是包括了上下多层的功能。我们在以前的篇幅中曾介绍过的TCP/IP协议,它与七层模型的对应关系如下:
OSI与TCP/IP模型的对应关系(简单图二)
应用层 *
表示层 应用层
会话层 *
传输层 传输层
网络层 网络层
数据链路层 网络接口层
物理层 *
由图二可看出,TCP/IP的多数应用协议将OSI应用层、表示层、会话层的功能合在一起,构成其应用层,典型协议有:HTTP、FTP、TELNET等;TCP/UDP协议对应OSI的传输层,提供上层数据传输保障;IP协议对应OSI的网络层,它定义了众所周知的IP地址格式,做为网间网中查找路径的依据;TCP/IP的最底层功能由网络接口层实现,相当于OSI的物理层和数据链路层,实际上TCP/IP对该层并未作严格定义,而是应用已有的底层网络实现传输,这就是它得以广泛应用的原因。
从功能角度可分为三组,1、2层解决网络信道问题,3、4层解决传输问题,5、6、7层处理对应用进程的访问。
从控制角度可分为二组,第1、2、3层是通信子网层,第4、5、6、7层是主机控制层。
注:
一、OSI各层对协议
比较常用的应用层协议有:
SMTP (simple Mail Transfer Protocol)
BOOTP(Boot trap.Protocol)
FTP (File Transfer Protocol)
HTTP (Hyperrext Transfer Protocol
AFP (Apple Talk文件协议)--Apple公司的网络协议族,用于交换文件
SNMP (Simple Network Management Protoco1)
SMB (Server Message Block Protoco1)
X.500
NCP (NetWare Core Protoco1)
NFS (Network File System)
主要的传输层协议有:
TCP(Transmission Control Protocol)
SPX(SequenCed Packet ExChange Protocol
NWL INK
ATP(AppleTalk Transaction Protocol),NBP(名字绑定协议)
NetBEUI(NetBIOS Extended User Internet)
网络层协议包括:
IP (Internet Protocol)
IPX (Internet work Packet Exchange)
NWLINK--微软实现的 IPX/SPX
DDP (Datagram Delivery Protoco1)
NetBEUI
Ethernet
链路层协议有:
协议有面向字符的通讯协议(PPP)和面向位的通讯协议(HDLC)。
仲裁协议:802.3、802.4、802.5,即:
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring
链路层数据单位是帧,实现对MAC地址的访问,典型设备是交换机Switch。
物理层协议有:
美国电子工业协会(EIA)的RS232,RS422,RS423,RS485等;
国际电报电话咨询委员会(CCITT)的X.25、X.21等;
物理层的数据单位是位(BIT),典型设备是集线器HUB。
二、TCP/IP 协议簇
TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业
标准。
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第
三层(对应OSI的第四层)。
TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。
1、接口层
TCP/IP的最低层是接口层,常见的接口层协议有:
Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。
2、网络层
网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)
控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向
地址转换协议。
IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务
。
ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。
Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。
ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。
RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。
3、传输层
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协
议UDP(User Datagram rotocol)。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP
是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠
性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用
以限制发送方的发送速度。
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要
连接,所以可以实现广播发送。
UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求
在程序员编程验证。
4、应用层
应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。
FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口
是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中
转。
POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。
数据格式:
数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)
IP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校
验字等)
三、TCP连接的建立
1、TCP连接通过三次握手完成。
client首先请求连接,发一个SYN包;Server收到后回应SYN_ACK包;Client收到后再
发ACK包。即:
Client Server
SYN ---> 收
<--- SYN+ACK
ACK ---> 收
established表示建立状态,当某端发出数据包后收到了回应则进入established状态。
在TCP/IP连接时,如果两端都是established状态,则握手成功,否则是无连接或半联接状
态。
2、套接字Socket
套接字Socket由协议、IP地址和端口号组成,套接字表示一路通讯,一般是一个服务,如
www服务是TCP的80端口,Telnet是TCP的23端口。
四、IP地址划分
1、IP地址分类
IP地址有四个段,包括网络标识和主机标识两部分:netid+hostid。
IP地址应用分为A、B、C三类,D、E类是保留和专用的。
Class A 0******* xxxxxxxx xxxxxxxx xxxxxxxx
Class B 10****** ******** xxxxxxxx xxxxxxxx
Class C 110***** ******** ******** xxxxxxxx
Class D 1110**** ******** ******** ********
Class E 1111**** ******** ******** ********
2、地址区间(计算方法2^位数-2)
址址类 地址区间 网络标识数 主机标识数
A 类IP地址由1字节的网络标识和3字节主机标识组成,网络标识的第一位二进制数取值必须为“0”,
所以表网络号的位数只7位,然后扣除全为0与1的特殊地址;
而主机标识为24位,其中减2是因为全0地址为网络地址,全1为广播地址,这两个地址一般不分配给主机。
1.0.0.1~126.255.255.254 2^7-2=126 2^24-2=16777214
B 类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络标识的前两位二进制数取值必须为"10"。
128.0.0.1~191.255.255.254 2^14-2=16382 2^16-2=65534
C 类IP地址由3字节的网络地址和1字节的主机地址组成,网络标识的前三位二进制数取值必须为“110”。
192.0.0.1~223.255.255.254 2^21-2=2097150 2^8-2=254
D 类 IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。
多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
224.0.0.1~239.255.255.255 2^28=268435456 0
E 类 以“1111”开始,为将来使用保留
240.0.0.1~255.255.255.255 2^28=268435456 0
3、特殊地址
主机标识全0表示为一个网络地址。
主机标识全1表示为对应网络的广播地址。
全0的IP地址:0.0.0.0,表示本机地址,只在启动过程时有效。
全1的IP地址255.255.255.255,表示本地广播(有的软件不支持)。
广播地址:TCP/IP协议规定,主机号部分各位全为1的IP地址用于广播。
所谓广播地址指同时向网上所有的主机发送报文,也就是说,不管物理网络特性如何,Internet网支持广播传输。
如136.78.255.255就是B类地址中的一个广播地址,你将信息送到此地址,
就是将信息送给网络号为136.78的所有主机。
有限广播地址:有时需要在本网内广播,但又不知道本网的网络号时,
TCP/IP协议规定32比特全为1的IP地址用于本网广播,即255.255.255.255。
“0”地址:TCP/IP协议规定,各位全为0的网络号被解释成“本网络”。
若主机试图在本网内通信,但又不知道本网的网络号,那么,可以利用“0”地址。
回送地址 A类网络地址的第一段十进制数值为127是一个保留地址,
如127.1.11.13用于网络软件测试以及本地机进程间通信。
私有地址:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
127.0.0.0网络是回环网络loopback,用于本机测试。例如:
ping 127.0.0.1 是测试本机网卡是否工作正常。
4、子网掩码
子网掩码用来区分网络地址和主机地址,标准的子网掩码为:
A 类: 1.0.0.1~126.255.255.254 netmask:255.0.0.0
B 类:128.0.0.1~191.255.255.254 netmask:255.255.0.0
C 类:192.0.0.1~223.255.255.254 netmask:255.255.255.0
子网掩码和IP地址的“与”运算得出对应的网络地址。
如果将子网掩码“1”的位数增加则网络地址数增加,形成子网。相当于网络的分隔。
如果将子网掩码“1”的位数减小则网络地址数减少,形成超网。相当于网络的聚合。
注:
子网掩码,则是用来标识两个IP地址是否同属于一个子网。它也是一组32位长的二进制数值,其每一位上的数值代表不同含义:为“1”则代表该位是网络位;若为“0”则代表该位是主机位。和IP地址一样,人们同样使用“点式十进制”来表示子网掩码,如:255.255.0.0。
如果两个IP地址分别与同一个子网掩码进行按位“与”计算后得到相同的结果,即表明这两个IP地址处于同一个子网中。也就是说,使用这两个IP地址的两台计算机就像同一单位中的不同部门,虽然它们的作用、功能、乃至地理位置都可能不尽相同,但是它们都处于同一个网络中。
子网掩码计算方法
自从各种类型的网络投入各种应用以来,网络就以不可思议的速度进行大规模的扩张,目前正在使用的IPv4也逐渐暴露出了它的弊端,即:网络号占位太多,而主机号位太少。目前最常用的一种解决办法是对一个较高类别的IP地址进行细划,划分成多个子网,然后再将不同的子网提供给不同规模大小的用户群使用。使用这种方法时,为了能有效地提高IP地址的利用率,主要是通过对IP地址中的“主机号”的高位部分取出作为子网号,从通常的“网络号”界限中扩展或压缩子网掩码,用来创建一定数目的某类IP地址的子网。当然,创建的子网数越多,在每个子网上的可用主机地址的数目也就会相应减少。
要计算某一个IP地址的子网掩码,可以分以下两种情况来分别考虑。
第一种情况:
无须划分成子网的IP地址。
一般来说,此时计算该IP地址的子网掩码非常地简单,可按照其定义就可写出。例如:某个IP地址为12.26.43.0,无须再分割子网,按照定义我们可以知道它是一个A类地址,其子网掩码应该是255.0.0.0;若此IP地址是一个B类地址,则其子网掩码应该为255.255.0.0;如果它是C类地址,则其子网掩码为255.255.255.0。其它类推。
第二种情况:
要划分成子网的IP地址。
在这种情况下,如何方便快捷地对于一个IP地址进行划分,准确地计算每个子网的掩码,方法的选择很重要。下面我介绍两种比较便捷的方法:
当然,在求子网掩码之前必须先清楚要划分的子网数目,以及每个子网内的所需主机数目。
方法一:利用子网数来计算。
1.首先,将子网数目从十进制数转化为二进制数;
2.接着,统计由“1”得到的二进制数的位数,设为N;
3.最后,先求出此IP地址对应的地址类别的子网掩码。再将求出的子网掩码的主机地址部分(也就是“主机号”)的前N位全部置1,这样即可得出该IP地址划分子网的子网掩码。
例如:需将B类IP地址167.194.0.0划分成28个子网:
1)(28)10=(11100)2;
2)此二进制的位数是5,则N=5;
3)此IP地址为B类地址,而B类地址的子网掩码是255.255.0.0,且B类地址的主机地址是后2位(即0-255.1-254)。于是将子网掩码255.255.0.0中的主机地址前5位全部置1,就可得到255.255.248.0,而这组数值就是划分成 28个子网的B类IP地址 167.194.0.0的子网掩码。
方法二:利用主机数来计算。
1.首先,将主机数目从十进制数转化为二进制数;
2.接着,如果主机数小于或等于254(注意:应去掉保留的两个IP地址),则统计由“1”中得到的二进制数的位数,设为N;如果主机数大于254,则 N>8,也就是说主机地址将超过8位;