从计算机网络的定义来看,其主要功能包括以下四个方面。
(1)数据通信:计算机网络主要提供内容浏览、电子邮件、数据交换、远程登录等数据通信服务,数据通信是计算机网络需要承担的最主要的功能。
(2)资源共享:计算机网络中有资源可供下载,有服务可供使用,有数据可被共享,凡是进入计算机网络的用户在经过授权许可的情况下,可以实现对这些资源的共享。
(3)提高系统的可靠性:由计算机组成的网络,网络中的每台计算机都可通过网络互为后备。一旦某台计算机出现故障,它的任务就可由其他的计算机代为完成,这样可以避免当某一台计算机发生故障而引起整个系统瘫痪,从而提高系统的可靠性。
(4)提高系统处理能力:要想提高系统的处理能力,一种方法是选择速度更快、性能更优的计算机,这样通常会花费昂贵的费用。另一种办法就是通过计算机网络,将大型的综合性问题交给网络中不同的计算机同时协作处理,也就是说,把原来一台计算机做的事情,让网络中多台计算机一起做,提高系统处理能力。
了解了计算机网络的主要功能之后,接下来继续了解如何对计算机网络进行分类。要进行分类,首先需要有网络分类的标准。如果按照地理范围划分,可以将计算机网络分为局域网、城域网和广域网三种。
局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个企业、一个学校或一个网吧),一般是方圆几千米以内,将各种计算机、服务器、外部设备等互相连接起来组成的计算机通信网。局域网可以实现文件管理、软件共享、打印机共享等功能。从严格意义上来讲,局域网应该是封闭型的,它可以由几台甚至成千上万台计算机组成,但实际上,局域网可以通过广域网或专线与远方的局域网、服务器相连接,拓展网络范围或实现更多的功能。
城域网(Metropolitan Area Network,MAN)一般来说是在一个城市,连接距离在10~100千米范围内的计算机互联网。MAN与LAN相比扩展的距离更长,连接的计算机数量更多,在地理范围上MAN网络可以说是LAN网络的延伸。在一个大型城市或都市地区,一个MAN网络通常连接着多个LAN,如连接政府机构的LAN、医院的LAN、电信的LAN、公司企业的LAN等。另外,由于光纤连接的引入,使MAN中高速的LAN互联成为可能。
广域网(Wide Area Network,WAN)也称为远程网,所覆盖的范围比城域网更广,起到LAN或MAN之间的网络互联的作用。广域网能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络,互联网是世界范围内最大的广域网。因为距离较远,信息衰减严重,所以这种网络一般要使用专线,构成网状结构,解决信息安全到达的问题。
上面按照地理范围将计算机网络划分为局域网、城域网和广域网,在实际工作中,常提到的是局域网和互联网(广域网),城域网较少被提及。
总体来说,计算机网络是由多台计算机、交换机、路由器等其他网络设备,通过传输介质和软件连接在一起组成的。计算机网络的组成基本上包括硬件方面的计算机、网络设备、传输介质和软件方面的网络操作系统、网络管理软件、通信软件,以及保证这些软硬件设备能够互联互通的协议和标准。
在人类社会中,人与人之间的交流是通过各种语言来实现的。为什么你说的话我可以听明白,原因在于你是按照汉语的规则说话,而我也懂汉语的规则,所以可以听懂你的意思。网络协议就是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
网络协议通常由以下三个要素组成。
(1)语义,规定了通信双方为了完成某种目的,需要发出何种控制信息以及基于这个信息需要做出何种行动。例如:A处民宅发生火灾,需要向B处城市报警台报警,则A发送“119+民宅地址”的信息给B,B获得这个信息后根据119知道是火警,则通知消防队去民宅地址灭火。
(2)语法,是用户数据与控制信息的结构与格式,以及数据出现的先后顺序。例如,语法可以规定A向B发送的数据前部是“119”,后部是“民宅地址”。
(3)时序,是对事件发生顺序的详细说明。比如何时进行通信,先讲什么,后讲什么,讲话的速度等。
这三个要素可以描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
在计算机网络中,由于计算机、网络设备之间联系很复杂,在制定协议时为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。在不同的网络中,分层数量、各层的名称和功能以及协议都各不相同。然而,在所有的网络中,每层的目的都是向它的上一层提供一定的服务,同时也向下一层获取一定的服务。
分层设计方法首先确定层次及每层应完成的任务,确定层次时应按逻辑组成功能细化层次,使得每层功能相对单一,易于处理。但同时层次也不能太多,否则会因为层次之间的处理产生过多的开销。将整个网络通信功能划分为垂直的层次后,在通信过程中下层将向上层隐蔽下层的实现细节,而上层也只按接口要求获取信息,这样各层之间既独立同时也能顺利传递信息。
TCP/IP协议不是TCP和IP这两个协议的合称,而是指整个TCP/IP协议族。TCP/IP协议是互联网的基础协议,没有它根本就不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。TCP/IP协议定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了四层(另一说法为五层)的层次结构,自下而上依次为网络接口层(Network Interface Layer)、网络层(Network Layer)、传输层(Transport Layer)和应用层(Application Layer)。
TCP/IP协议并不完全符合OSI的七层参考模型,OSI是传统的开放式系统互联参考模型,是一种通信协议的七层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。而TCP/IP通信协议采用了四层的层次结构,每一层都要求它的下一层按接口要求提供服务。TCP/IP协议模型与OSI参考模型的对应关系如图7.1所示。
图7.1 TCP/IP协议模型与OSI参考模型
TCP/IP协议模型中网络接口层对应于OSI参考模型的物理层和数据链路层。其中物理层规定了物理介质的各种特性,包括机械特性、电子特性、功能特性和规程特性,而数据链路层是负责接收IP数据报并通过网络发送,或从网络上接收物理帧再抽离出IP数据报交给网络层。
在该层中,大家可能会接触到的两个协议是:
SLIP(Serial Line Internet Protocol)协议,提供了一种在串行通信线路上封装网络层数据的简单方法,使用户通过电话线和MODEM能方便地接入TCP/IP网络。
PPP(Point to Point Protocol)协议,是一种有效的点到点通信协议,可以支持多种网络层协议(如IP、IPX等),支持动态分配的IP地址,并且具有差错检验能力。该协议的设计目的主要是用来通过拨号或专线方式建立点对点数据连接,使其成为各种计算机、网络设备之间简单连接的一种解决方案。
- 网络层
网络层对应于OSI参考模型的网络层,提供源设备和目的设备之间的信息传输服务。它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。网络层主要功能包括处理来自传输层的分组请求,收到请求后,检查合法性,并将分组装入IP数据报,填充报头,选择去往目的设备的路径,然后将数据报发往适当的中间节点,最终达到目的端。
TCP/IP协议族中,网络层的主要协议包括:
IP(Internet Protocol)协议,是网络层的核心,负责在主机(含网络设备)之间寻址并为数据报设定路由。
IP协议是无连接的,关于是否有连接,非常类似于打电话(有连接的)和发短信(无连接的)。在打电话的过程中,需要为通话双方建立一个独占的连接,双方可以通过拨电话号码及听到铃声接通电话来建立一个连接会话。在连接建立以后,双方说的话会顺序到达对方那里,对方听到以后会进行回话,确认了信息的到达。而发短信则不需要建立连接,发送出去以后,并不知道对方是否一定收到了,前后发出的短消息,在接受方那里也并不一定还按照原来的发送顺序接收。
IP协议不仅是无连接的,而且是不可靠的,不能保证传输的正确。它总是尽最大努力传送数据报到目的设备。在传送过程中,可能发生丢失、次序紊乱、重复或者延迟发送,数据报被收到的时候,IP协议不需要进行确认,同样发生错误的时候,也不进行告知。
IP协议要负责寻找到达目的设备的路由。它首先判断目的设备地址是不是本地地址,如果是,则直接发送到本地地址。如果不是,则需要在本地的路由表中查找到达目的设备地址的路由。如果找到了这个路由,就把数据报发送到这个路由,如果没有找到,就把数据报发送给自己的网关,由网关进行处理。
ICMP(Internet Control Message Protocol)Internet控制报文协议,它的主要作用在于报告错误,并对消息进行控制。需要强调的是,Internet控制报文协议并不是让IP协议变成一个可靠的协议,它只是在特殊情况下报告错误和提供反馈。
ARP(Address Resolution Protocol)正向地址解析协议,作用是根据已知的IP地址(网络地址)获取主机(含网络设备)的MAC地址(硬件地址)。
RARP(Reverse ARP)反向地址解析协议,其作用正好和ARP协议的作用相反,是根据主机的MAC地址获取该设备的IP地址。
- 传输层
传输层对应于OSI参考模型的传输层,提供进程之间的端到端服务。传输层是TCP/IP协议族中最重要的一层,是负责总体的数据传输和控制的。其主要功能包括分割和重组数据并提供差错控制和流量控制,以到达提供可靠传输的目的。为了实现可靠的传输,传输层协议规定接收端必须发送确认信息以确定数据达到,假如数据丢失,必须重新发送。
传输层协议主要包括:
第一次握手:建立连接时,源端发送同步序列编号(Synchronize Sequence Numbers,SYN)包(SYN = j)到目的端,等待目的端确认。
第二次握手:目的端收到SYN包,确认源端的SYN(ACK = j+1),同时自己也发送一个SYN包(SYN = k),即SYN + ACK包。
第三次握手:源端收到目的端的SYN + ACK包,向目的端发送确认包ACK(ACK = k+1)。此包发送完毕,源端和目的端完成三次握手,源端可以向目的端发送数据。
在使用TCP协议传输数据之前,双方会通过握手的方式来进行初始化,握手的目的是使数据段的发送和接收同步,建立虚连接。在建立虚连接以后,TCP每次发送的数据段都有顺序号,这样目的端就可以知道是否所有的数据段都已经收到,同时在接收到数据段以后,必须在一个指定的时间内发送一个确认信息。如果发送方没有接收到这个确认信息,它将重新发送数据段。如果收到的数据段有损坏,接收方直接丢弃,因为没有发送确认信息,所以发送方也会重新发送数据段。
在使用TCP协议通信的过程中,还需要一个协议的端口号来标明自己在主机(含网络设备)中的唯一性,这样才可以在一台主机上建立多个TCP连接,告知具体哪个应用层协议来使用。端口号只能是为0~65535中的任意整数,其中常见的端口号及对应的应用层协议如表7.1所示。
表7.1 端口号及对应的应用层协议
UDP(User Datagram Protocol)用户数据报协议,是另外一个重要的协议,它提供的是无连接、面向事务的简单不可靠信息传送服务。UDP 不提供分割、重组数据和对数据进行排序的功能,也就是说,当数据发送之后,无法得知其是否能安全完整地到达。
在选择使用传输层协议时,选择UDP必须要谨慎。因为在网络环境不好的情况下,UDP协议数据丢失会比较严重。但同时也因为UDP的特性,它是无连接的协议,因而具有资源消耗小、处理速度快的优点,所以在音频和视频的传送时使用UDP较多,因为这样的数据传输即使偶尔丢失一两个数据,也不会对接收结果产生太大影响。
应用层对应于OSI参考模型的会话层、表示层和应用层,该层向用户提供一组常用的应用程序服务,比如电子邮件、文件传输访问、远程登录等。
应用层协议主要包括:
FTP(File Transfer Protocol)文件传输协议,上传、下载文件可以使用FTP服务。
Telnet是提供用户远程登录的服务,使用明码传送,保密性差,但简单方便。
DNS(Domain Name Service)域名解析服务,提供域名和IP地址之间的解析转换。
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,用来控制邮件的发送、中转。
HTTP(Hypertext Transfer Protocol)超文本传输协议,用于实现互联网中的WWW服务。
POP3(Post Office Protocol 3)即邮局协议的第三个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。
在TCP/IP层次模型中,每一层负责接收上一层的数据,根据本层的需要进行数据处理,并增加本层的头部信息后转发到下层。当接收方收到数据以后,对应的层负责查看本层的头部信息是否正确,是否需要合并或进行其他处理,然后完成相应的操作,去掉本层添加的头部信息后提交给上一层。TCP/IP协议数据封装和解封的过程如图7.2所示。
图7.2 TCP/IP协议数据封装和解封