1.5 OSI模型的各层简介
1.物理层(Physical Layer)
物理层定义了机械的、电气的、规程的、功能性的标准。物理层的数据形式是二进制比特流(Bit Flowing),其中的设备主要有中继器(Repeater)、集线器(Hub)等。
物理层是网络存在的物理条件,主要定义了传输介质及其性质、接口形式和光电信号等。IEEE 802.3所定义的以太网是物理层最重要的协议,已形成了在LAN中的事实垄断。随着智能设备和移动设备的普及,间接促进了无线网络的普及,IEEE 802.11在移动端和消费市场的接入侧拥有绝对的领导地位。
2.数据链路层(Data Link Layer)
数据链路层定义了帧结构和物理流控。数据链路层的数据形式是帧(Frame),其中的设备主要有网桥(Bridge)和交换机(Switch)等。
在IEEE 802协议簇中,数据链路层被分为上层的LLC层和下层的MAC层。根据不同的传输介质及其组网拓扑,数据链路层规定了介质访问控制方式。简单来说,数据链路层可以概括为传输介质、组网拓扑、介质访问控制方式。
IEEE 802.3是有线网络的协议,有线网络使用的是带冲突检测的载波监听多路访问(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)。IEEE 802.11是无线网络的协议,无线网络使用带冲突避免的载波侦听多路访问(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)。有线网络可以通过监听线路电压或电流的方式来监听载波是否空闲,而无线网络因为隐蔽站问题(Hidden Station Problem)和暴露站问题(Exposed Station Problem),只能通过冲突避免的方式来实现线路的分时共享。
以太网(Ethernet)标准在数据链路层封装上拥有绝对的优势地位。其他比较知名的封装标准还有点到点协议(Point to Point Protocol,PPP)和高级数据链路控制(High Data Link Control,HDLC)协议等,多用于广域网,但地位也受了以太网与传送网相结合的挑战。像异步传输模式(Asynchronous Transfer Mode,ATM)、综合业务数字网(Integrated Services Digital Network,ISDN)、帧中继(Frame Relay,FR)等,曾经也是比较知名的封装标准,但目前在网络中基本已经不再使用了。
3.网络层(Network Layer)
网络层定义了数据包结构、编址、寻址、路由计算等。网络层的数据形式是包(Packet),其中的设备主要有路由器和三层交换机等,但我们一般将这些设备统称为路由器。网络层的主要功能是计算并提供路由。
比较典型的路由协议有路由信息协议(Routing Information Protocol,RIP)、开放最短路径优先(Open Shortest Path First,OSPF)协议、中间系统到中间系统(Intermediate System to Intermediate System,IS-IS)协议、内部网关路由协议(Interior Gateway Routing Protocol,IGRP)、边界网关协议(Border Gateway Protocol,BGP)等;带有工具性质的协议主要有互联网控制消息协议(Internet Control Message Protocol,ICMP),以及提供单播IP地址到下一跳MAC地址映射关系的地址解析协议(Address Resolution Protocol,ARP)协议。ICMP和ARP是网络层的两个非常重要的协议。RIP和BGP本质上是应用层协议,RIP使用的是UDP 520端口,BGP使用的是TCP 179端口。Integrated IS-IS协议本质上是链路层协议,其以太网类型是0x22F4,可以通过IEEE 802.3的格式直接封装在数据帧中。因为RIP、BGP和IS-IS协议都提供路由计算和选择,所以我们仍然把这三个协议归为网络层协议。实际上,将OSPF和ICMP看成网络层协议也是不完全准确的,因为OSPF和ICMP也需要IP封装,它们使用的IP协议号分别是89和1。
网络层中最重要的协议是互联网协议(Internet Protocol,IP),目前有两个版本,分别是IPv4和IPv6。IP提供数据包的封装和主机节点标识,只有被封装和标识的数据才可以被转发。
ICMP也是网络层的一个重要协议,但它的工具性质更明显一些,经常被其他协议和网络诊断工具调用,通过Type+Code的方式来标识消息的类型,可用来查询网络状态。
4.传输层(Transport Layer)
传输层也称为运输层,用于管理网络层连接,提供了可靠的包传递机制。传输层中的数据形式是分段或分片(Segment)。
传输层最重要的两个协议是传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。设计TCP的初衷是高可靠性传输,这就需要封装比较复杂的协议报头,因此协议开销比较大,在没有添加任何选项的情况下,协议报头的大小通常是20 B,传输效率相对较低。设计UDP的初衷是高效传输,放弃了比较复杂的控制,需要封装的协议报头比较简单,只有8 B,但可靠性低。另外一个在传输层值得关注的协议是流控制传输协议(Stream Control Transmission Protocol,SCTP),它也是一个面向连接的协议,支持多宿主和多流,并且安全性更高,将来有望得到更多的应用和发展。
5.会话层(Session Layer)
会话层的主要作用是建立或拆除会话。
远程过程调用(Remote Procedure Call,RPC)是会话层中比较典型的一个协议。会话层在工业应用中并没有得到很好的发展,它的很多功能被应用层和传输层替代了。当然也可以说是被TCP/IP替代了。
6.表示层(Presentation Layer)
表示层的作用定义数据的结构和传输格式,编/解码、压缩/解压缩、加/解密等。
与会话层一样,表示层也是一个非常“难堪”的存在,它基本上被应用层替代了。本书作者认为主要原因是会话层和表示层在设计之初考虑不够周全,对工作任务分解不合理。
其实,数据格式原计划是放在会话层来实现的,但数据是应用程序产生的,应用层就顺便定义了数据格式。我产生的数据由你来定义格式,显然是不合理的,不利于合作和实现。
7.应用层(Application Layer)
应用层的作用是为终端用户的应用程序提供接口,为面向网络的应用程序提供服务。
各种各样的应用程序需求使得应用层的协议比其他层丰富得多,工作在应用层的协议是OSI模型中最多的,各种协议呈百花齐放之态,其中最值得一提的是超文本传输协议(Hypertext Transfer Protocol,HTTP),其应用广度无人能出其右;其次是超文本传输安全协议(Hyper Text Transfer Protocol Secure,HTTPS)、文件传输协议(File Transfer Protocol,FTP)、Telnet(用于远程连接)协议,安全外壳(Secure Shell,SSH,常用于远程连接)协议、简单网络管理协议(Simple Network Management Protocol,SNMP)等。另外比较重要和常见的协议还有动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)、域名系统(Domain Name System,DNS)协议、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)、邮局协议版本3(Post Office Protocol version 3,POP3)、互联网消息访问协议版本4(Internet Message Access Protocol 4,IMAP4)等。