Windows网络编程(第2版)
上QQ阅读APP看书,第一时间看更新

1.2 网络通信模型和协议簇

Internet可以把世界上各种类型、品牌的硬件和软件集成在一起,实现互联和通信。如果没有统一的标准协议和接口,这一点是根本无法做到的。为了推动Internet的发展和普及,标准化组织制定了各种网络模型和标准协议,本节将介绍通用的OSI参考模型和TCP/IP层次模型。了解这些网络模型和通信协议的基本工作原理是管理和配置网络、开发网络应用程序的基础。

1.2.1 OSI参考模型

ISO(International Organization for Standardization,国际标准化组织)是一个全球性的非政府组织,是国际标准化领域中一个十分重要的机构。为了使不同品牌、操作系统的网络设备(主机)能够在网络中相互通信,ISO于1981年制定了“开放系统互联参考模型”,即Open System Interconnection Reference Model,简称为OSI参考模型。

OSI参考模型将网络通信的工作划分为7个层次,由低到高分别为物理层(Physical Layer)、

数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer),如图1.1所示。

物理层、数据链路层和网络层属于OSI参考模型中的低3层,负责创建网络通信连接的链路;其他4层负责端到端的数据通信。每一层都完成特定的功能,并为其上层提供服务。

在网络通信中,发送端自上而下地使用OSI参考模型,对应用程序要发送的信息进行逐层打包,直至在物理层将其发送到网络中;而接收端则自下而上地使用OSI参考模型,将收到的物理数据逐层解析,最后将得到的数据传送给应用程序,其具体过程如图1.2所示。

0

图1.1 OSI参考模型

0

图1.2 OSI参考模型的通信过程

当然,并不是所有的网络通信都需要经过OSI模型的全部7层。例如,同一网段的2层交换机之间通信只需要经过数据链路层和物理层,而路由器之间的连接则只需要网络层、数据链路层和物理层。在发送方封装数据的过程中,每一层都会为数据包加上一个头部;在接收方解封数据时,又会逐层解析掉这个头部。因此,双方的通信必须在对等层次上进行,否则接收方将无法正确地解析数据。

在OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(Protocol Data Unit,PDU)。而在传输层及其下面各层中,PDU还有各自特定的名称,具体如表1.2所示。

1.2 PDUOSI参考模型中的特定名称

0

下面对OSI参考模型中的7层结构进行详细的介绍。

1. 物理层

顾名思义,物理层就是用于定义网络通信中通信设备的机械、电气、功能和规程等特性的层次,用于建立、维护和拆除物理链路的连接。

物理层可以为数据端设备提供传送数据的物理通路。物理通路可以是一个物理媒体,也可以由多个物理媒体连接而成。一次完整的物理层数据传输过程如图1.3所示。

0

图1.3 完整的物理层数据传输过程

激活物理连接指在两个通信设备之间建立起一条通路,可能是通过网线直接相连的,也可能需要多个网络设备参与。

在传送数据的过程中,一方面要保证数据可以在物理连接上正确地通过,另一方面还需要为传送数据提供足够的带宽,以减少信道上的拥塞。

提示

带宽(Bandwidth)指在传输线路上固定时间内可以传输的数据量,用于标识线路的数据传送能力。在数字设备中,带宽的单位为bit/s,即每秒可传输的比特数。

2. 数据链路层

数据链路层位于OSI参考模型的第2层,它负责物理层和网络层之间的通信。在数据链路层中,将从网络层接收到的数据分割成特定的可被物理层传输的帧。帧是用来传送数据的结构包,它不仅包括原始数据(即要传送的数据),还包括发送方和接收方的网络地址以及纠错和控制信息。其中地址标明帧将发送到的主机,而纠错和控制信息则可以保证帧能够被准确无误地被传送到目的主机。帧的简要结构如图1.4所示。

0

图1.4 帧的简要结构

每个字段的说明如下。

• 前导码:内容是十六进制数0xAA,作用是使接收节点进行同步并做好接收数据帧的准备。

• 帧首定界符:是10101011的二进制序列,标识帧的开始,以使接收器对实际帧的第一位定位。

• 目的地址和源地址:即发送和接收数据的两端主机的MAC地址。目的地址可以是单地址、组播地址和广播地址。

• 数据字段的长度:指定要传送数据的长度,以便接收方对数据进行处理。

• 要传送的数据:顾名思义,就是从源地址发送到目的地址的原始数据。

• 填充字段:有效帧从目的地址到校验和字段的最短长度为64字节,其中固定字段的长度为18字节。如果数据字段长度小于46字节时,就使用本字段来填充。

• 校验和:使用32位CRC校验,用于对传送数据进行校验。

数据链路层的主要功能如下。

(1)通信链路的建立、拆除和分离。当网络中的两个结点要进行通信时,发送方必须确认接收方是否已处在准备接受的状态。为此通信双方必须先要交换一些必要的信息,以建立一条基本的数据链路。在传输数据时要维持数据链路,而在通信完毕时要释放数据链路。

(2)对要传送的帧进行定界和同步,并对帧的收发顺序进行控制。

(3)寻址。即在数据链路层根据目的地址找到对应主机的方法,同时接收方也必须知道数据的发送方主机地址。

(4)对信道上的数据差错进行检测和恢复。

(5)流量控制。数据的发送与接收必须遵循一定的传送速率规则,可以使得接收方能及时地接收发送方发送的数据,并且当接收方来不及接收时,必须及时控制发送方数据的发送速率,使两方面的速率基本匹配。

数据链路层中常用的协议和技术包括局域网中的以太网(Ethernet)技术、点到点协议(PPP)、高级数据链路控制协议(High-Level Data Link Control,HDLC)、高级数据通信控制协议(Advanced Data Communications Control Protocol,ADCCP)等。

如果说这些协议和技术离我们的日常应用似乎比较远的话,那么与数据链路层相关的最为大家所熟知的两个概念就是MAC地址和网卡。网卡也称为网络适配器(Network Adapter)或者网络接口卡(NIC),每台连接到网络中的计算机都必须安装网卡。网卡和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的。每个网卡都唯一对应一个MAC(Media Access Control,介质访问控制)地址,其用来标识网卡的通信地址。

在Windows命令窗口中执行下面的命令,可以查看到网卡和MAC地址信息。

 Ipconfig /all 

运行结果如图1.5所示。

MAC地址由6字节(即48位)十六进制数组成。在以字符串格式表现时,每个字节之间通常使用“-”或“:”分隔,例如,下面都是有效的MAC地址。

 00-16-D3-BD-6C-29 
 00:16:D3:BD:6C:29 
0

图1.5 查看本地计算机的网卡和MAC地址信息

提示

MAC地址通常由网卡的生产厂家在制造网卡时烧制在芯片中,因此相对固定一些。虽然有些网卡允许用户修改MAC地址,但这种情况并不多见。因此,从理论上来讲,MAC地址是全球唯一的。很多网络管理软件中使用MAC地址作为设备的唯一标识,因为IP地址和设备名称都是很容易被改变的。

3. 网络层

网络层位于OSI协议参考模型的第3层,它的主要功能如下。

(1)为传输层提供服务。

网络层提供的服务有两类:面向连接的网络服务和无连接的网络服务。

虚电路服务是网络层向传输层提供的一种使所有数据包按顺序到达目的节点的可靠的数据传送方式,进行数据交换的两个节点之间存在着一条为它们服务的虚电路;而数据报服务是不可靠的数据传送方式,源节点发送的每个数据包都要附加地址、序号等信息,目的节点收到的数据包不一定按序到达,还可能出现数据包丢失的现象。

(2)组包和拆包。

在网络层,数据传输的基本单位是数据包。在发送方,传输层的报文到达网络层时被分为多个数据块,在这些数据块的头部和尾部加上一些相关的控制信息后,即组成了数据包(组包)。数据包的头部包含源节点和目标节点的网络地址。在接收方,数据从低层到达网络层时,要将各数据包原来加上的包头和包尾等控制信息去掉(拆包),然后组合成报文,送给传输层。

(3)路由选择。

路由选择也叫做路径选择,是根据一定的原则和路由选择算法在多节点的通信子网中选择一条最佳路径。确定路由选择的策略称为路由算法。

在数据报方式中,网络节点要为每个数据包做出路由选择;而在虚电路方式中,只需在建立连接时确定路由。

(4)流量控制。

流量控制的作用是控制阻塞,避免死锁。

负责数据传输的网络层经典协议为IP,负责控制的网络层经典协议包括ICMP、ARP、DHCP等,这些协议的具体情况将在第2章中介绍。另外,网络层还提供负责路由的协议,包括IGP、RIP、OSRF等,由于篇幅所限,本书将不对这些协议进行具体介绍。

网络层的主要网络设备包括路由器和三层交换机。

4. 传输层

传输层是OSI协议层次结构的核心,是唯一负责总体数据传输和控制的一层。在OSI 7层模型中传输层是负责数据通信的最高层,它下面的3层协议是面向网络通信的,而它上面的3层协议是面向信息处理的,因此传输层可以说是OSI模型中的中间层。

因为网络层不一定保证服务的可靠性,而用户也不能直接对通信子网加以控制,所以在网络层之上,加一层即传输层以改善传输质量。

传输层的主要功能如下。

• 为对话或连接提供可靠的传输服务。

• 在通向网络的单一物理连接上实现该连接的复用。

• 在单一连接上提供端到端的序号与流量控制、差错控制及恢复等服务。

传输层中包含的典型协议为SPX、TCP和UDP。SPX是顺序包交换协议,它是Novell NetWare网络的传输层协议;TCP是传输控制协议,它是TCP/IP参考模型的传输层协议;UDP是用户数据报协议,它可以提供一种基本的、低延时的数据报传输。

关于TCP和UDP的具体情况将在第3章中介绍。

5. 会话层

会话层负责在网络中的两个节点之间建立和维持通信。它提供的服务可使应用程序建立和维持会话,并能使会话获得同步。

会话层的功能主要如下。

• 建立通信链接,保持会话过程通信链接的畅通。

• 同步两个节点之间的对话,决定通信是否被中断以及通信中断时从何处重新发送。

• 支持校验点功能,会话在通信失效时可以从校验点恢复通信。这种能力对于传送大的文件极为重要。

6. 表示层

不同的计算机体系结构中使用的数据表示法也不同。为了使不同类型的计算机之间能够实现相互通信,就需要提供一种公共的语言。

表示层如同应用程序和网络之间的翻译官,主要解决用户信息的语法表示问题,即提供格式化的表示和数据转换服务,数据的压缩、解压、加密、解密都在该层完成。

7. 应用层

应用层是OSI参考模型的最高层,它可以向应用程序提供服务,这些服务按其向应用程序提供的特性分成组,并称为服务元素。

应用层并不是指运行在网络上的某个特定的应用程序,它可以为应用程序提供服务,包括文件传输、文件管理以及电子邮件的信息处理等。

应用层中包含的典型协议包括FTP、Telnet、SMTP、HTTP、DNS等。在管理和使用网络的过程中,经常会使用到应用层的这些协议。

1.2.2 TCP/IP协议簇体系结构

TCP/IP是Internet的基础网络通信协议,它规范了网络上所有网络设备之间数据往来的格式和传送方式。TCP和IP是两个独立的协议,它们负责网络中数据的传输。TCP位于OSI参考模型的传输层,而IP则位于网络层。

TCP/IP中包含一组通信协议,因此被称为协议簇。TCP/IP协议簇中包含网络接口层、网络层、传输层和应用层。TCP/IP协议簇和OSI参考模型间的对应关系如图1.6所示。

0

图1.6 TCP/IP协议簇和OSI参考模型间的对应关系

1. 网络接口层

在TCP/IP参考模型中,网络接口层位于最低层。它负责通过网络发送和接收IP数据报。网络接口层包括各种物理网络协议,例如,局域网的Ethernet(以太网)协议、Token Ring(令牌环)协议,分组交换网的X.25协议等。

2. 网络层

在TCP/IP参考模型中,网络层位于第2层。它负责将源主机的报文分组发送到目的主机,源主机与目的主机可以在一个网段中,也可以在不同的网段中。

网络层包括下面4个核心协议。

• IP(Internet Protocol,网际协议):主要任务是对数据包进行寻址和路由,把数据包从一个网络转发到另一个网络。

• ICMP(Internet Control Message Protocol,网际控制报文协议):用于在IP主机和路由器之间传递控制消息。控制消息是指网络是否连通、主机是否可达、路由是否可用等网络本身的消息,这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

• ARP(Address Resolution Protocol,地址解析协议):可以通过IP地址得知其物理地址(Mac地址)的协议。在TCP/IP网络环境下,每个主机被都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网络上传送,必须知道目的主机的物理地址,这样就存在IP地址向物理地址的转换问题。

• RARP(Reverse Address Resolution Protocol,逆向地址解析协议):该协议用于完成物理地址向IP地址的转换。

关于这些协议的基本情况将在第2章中介绍。

3. 传输层

在TCP/IP参考模型中,传输层位于第3层。它负责在应用程序之间实现端到端的通信。传输层中定义了下面两种协议。

• TCP:是一种可靠的面向连接的协议,它允许将一台主机的字节流无差错地传送到目的主机。TCP同时要完成流量控制功能,协调收发双方的发送与接收速度,达到正确传输的目的。

• UDP:是一种不可靠的无连接协议。与TCP相比,UDP更加简单,数据传输速率也较高。当通信网的可靠性较高时,UDP方式具有更高的优越性。

本书将在第3章中介绍TCP和UDP的具体情况。

4. 应用层

在TCP/IP参考模型中,应用层位于最高层,其中包括了所有与网络相关的高层协议。常用的应用层协议说明如下。

• Telnet(Teletype Network,网络终端协议):用于实现网络中的远程登录功能。

• FTP(File Transfer Protocol,文件传输协议):用于实现网络中的交互式文件传输功能。

• SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):用于实现网络中的电子邮件传送功能。

• DNS(Domain Name System,域名系统):用于实现网络设备名称到IP地址的映射。

• SNMP(Simple Network Management Protocol,简单网络管理协议):用于管理与监视网络设备。

• RIP(Routing Information Protocol,路由信息协议):用于在网络设备之间交换路由信息。

• NFS(Network File System,网络文件系统):用于网络中不同主机之间的文件共享。

• HTTP(Hyper Text Transfer Protocol,超文本传输协议):这是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的最初目的是为了提供一种发布和接收HTML页面的方法。