网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它定义了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。一台设备上的第n层与另一台设备上的第n层进行通信的规则就是第n层协议。在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。
一、互联网的应用层协议
通信协议是指用哪种互联网通信协议来连接服务器,常用的有HTTP、FTP、Telnet、News(代表访问网络新闻服务器)、File(访问本机文件)等。互联网还有很多为用户提供服务的应用层协议,这些服务有时也称为应用服务,包括页面显示、网络管理工具、远程登录、文件复制、电子邮件和目录服务。有些协议很常用,有些应用服务则用得少一些。下面介绍几种常用的协议。
(一)HTTP协议
HTTP(Hypertext Transfer Protocol)是超文本传输协议的缩写,它是负责传输和显示页面的互联网协议,是互联网上应用最为广泛的一种网络传输协议。最早的HTTP协议是1991年开发出来的,设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP运行在TCP/IP模型的应用层。和其他的互联网协议一样,HTTP采用客户机/服务器模式,即用户(客户机)的浏览器打开一个HTTP会话并向远程服务器发出页面请求。作为回答,服务器产生一个HTTP应答信息,并把它送回到客户机(请求者)的浏览器。如果客户机确定收到的信息是正确的,就断开TCP/IP连接,HTTP会话就结束了,由于HTTP的用户数增长很快,HTTP对互联网有极其重要的影响。所有的WWW文件都必须遵守这个标准。
(二)SMTP、POP和IMAP协议
互联网上传送电子邮件是通过一套称为邮件服务器的程序进行硬件管理并储存的。与个人计算机不同,这些邮件服务器及其程序必须每天24小时不停地运行,否则就不能收发邮件了,简单邮件传输协议SMTP(Simple Mail Transfer Protocol)和邮局协议POP(Post Office Protocol)是负责用客户机/服务器模式发送和检索电子邮件的协议。用户计算机上运行的电子邮件客户机程序请求邮件服务器进行邮件传输,邮件服务器采用简单邮件传输协议标准。很多邮件传输工具,如outlook express、fox mail等,都遵守SMTP标准并用这个协议向邮件服务器发送邮件。SMTP协议规定了邮件信息的具体格式和邮件的管理方式。
1、SMTP协议
SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
2、POP协议
POP邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。POP协议支持多用户互联网邮件扩展,后者允许用户在电子邮件上附带二进制文件,如文字处理文件和电子表格文件等,实际上这样就可以传输任何格式的文件了,包括图片和声音文件等。在用户阅读邮件时,POP命令所有的邮件信息立即下载到用户的计算机上,不在服务器上保留。
3、IMAP协议
互联网信息访问协议(IMAP)是一种优于POP的新协议。和POP一样,IMAP也能下载邮件、从服务器中删除邮件或询问是否有新邮件,但IMAP克服了POP的一些缺点。例如,它可以决定客户机请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件。客户机可先阅读邮件信息的标题和发送者的名字再决定是否下载这个邮件。通过用户的客户机电子邮件程序,IMAP可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容,完成所有这些工作时都不需要把邮件从服务器下载到用户的个人计算机上。
(三)FTP协议
文件传输协议(File Transfer Protocol,简称FTP)是TCP/IP的组成部分,它是属于应用层的协议,用于在TCP/IP连接的计算机之间传输文件,采用的是客户机/服务器模式。FTP允许文件双向传输,即从客户机到服务器或从服务器到客户机。FTP既可以传输二进制数据,也可以传输ASCII码文本,用户可在两种模式中任选一种。二进制数据包括文字处理文档、电子表格、图像和其他数据的文件。ASCII码文本是文本文件,这种文本和Windows的Notepad所创建的文件类型是一样的。FTP可以一次传输一个文件,也可以一次传输多个文件。FTP还可提供其他一些服务,如显示远程计算机或本地计算机目录、改变客户机或服务器的现有活动目录、创建并移动本地或远程目录、设置权限等。FTP采用TCP协议及其内置错误控制功能来准确无误地把文件从一台计算机拷贝到另一台计算机。
(四)Telnet协议
Telnet协议是TCP/IP通信协议中的终端机协议。利用远程登录,用户可以通过自己正在使用的计算机与其登录的远程主机相连,进而使用该主机上的多种资源,这些资源包括该主机的硬件资源、软件资源以及数据资源。
二、TCP/IP协议
(一)TCP/IP协议简介
TCP/IP是“transmission Control Protocol/Internet Protocol”的简写,中文译名为传输控制协议/互联网络协议)协议,TCP/IP全称为传输控制协议(TCP)和互联网协议(IP),是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。
TCP/IP协议,是网际互联的通信协议,由互联网的先驱文森特·瑟夫(Vincent Cerf)和罗伯特·卡恩(Robert Kahn)开发的。其目的在于通过它实现网际中异构网络或异种机之间的互相通信,即使不同企业生产的计算机能够在各种环境下运行,TCP/IP同样适用于在一个局域网中实现异种机的互联通信。TCP/IP协议是目前最完整、最被普遍接受的通信协议,其中包含了许多通信标准,用来规范各计算机之间如何通信、网络如何连接等操作。TCP/IP是一种双层程序。它包括网络上的计算机用来建立和断开连接的规则,TCP控制信息在互联网传输前的打包和到达目的地后的重组,IP控制信息包从源头到目的地的传输路径。IP处理每个信息包的所有地址信息,确保每个信息包都打上了正确的目的地地址标签。
TCP/IP参考模型分为四层(表4.2):应用层(Application Layer),传输层(Transport Layer),网络层(Internet Layer),链路层(Link Layer)。最低层也是最基本的功能层是硬件层,它管理互联网的相关没备;最高层是应用层,它是互联网的服务程序运行的地方。每一层为上一层提供服务。TCP协议在传输层工作,IP协议属于网络层。
表4.2 TCP/IP协议的结构
TCP/IP分层 | 协议 | OSI 分层 |
应用层 | FTP | SMTP | Telnet | DNS | SNMP | 7 |
传输层 | TCP | UDP | 4 |
网络层 | IP, ICMP (RIP, OSPF) | 3 |
ARP, RARP |
链路层 | Ethernet | Token Bus | Token Ring | FDDI | WLAN | 2 |
1 |
除了用于互联网,TCP/IP也可用于局域网。局域网中的每台计算机都有自己的中央处理器(CPU)来运行程序,也可用网络中其他计算机的数据和设备。通过这种方式,很多用户可以共享激光打印机和扫描仪等设备。TCP/IP协议是Windows 95/98和Windows 2000计算机的标准协议。
(二)TCP/IP协议的工作过程
1、IP协议
网际协议(Internet Protocol, IP)是规范计算机网络中数据传送的一套协议。网际协议是当前互联网的主要协议。在OSI参考模型中,处于第三层,网络层。IP协议是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机地址(源地址)和接收它的主机地址(目的地址)。目前使用的是IPv4,分为A类,B类,C类,D类,E类。由于地址空间有限,正在向IPv6迁移。
高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫做IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
2、TCP协议
传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。
在因特网协议族中,TCP层是位于IP层之上、应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。TCP连接包括三个状态:连接建立、数据传送和连接终止。
面向连接的服务(例如Telnet、FTP、login、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
3、UDP
用户数据报协议(UDP)是一个简单的面向数据报的传输层(transport layer)协议,IETF RFC 768是UDP的正式规范。在TCP/IP模型中,UDP为网络层(network layer)以下和应用层(application layer)以上提供了一个简单的接口。UDP只提供数据的不可靠交付,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。
由于缺乏可靠性,UDP应用一般必须允许一定量的丢包、出错和复制。流媒体Streaming media、实时多媒体游戏和voice over IP (VoIP)就是典型的UDP应用。
由于缺乏拥塞避免和控制机制,需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。典型网络上的众多使用UDP协议应用,包括域名系统Domain Name System (DNS)、简单网络管理协议simple network management protocol (SNMP)、动态主机配置协议Dynamic host configuration protocol (DHCP)和路由信息协议Routing Information Protocol (RIP)等。
4、ICMP
ICMP是互联网控制报文协议(Internet Control Message Protocol)的简称。ICMP与IP位于同一层,它被用来传送IP的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的“Redirect”信息通知主机通向其他系统的更准确的路径,而“Unreachable”信息则指出路径有问题。另外如果路径不可用了,ICMP可以使TCP连接“体面地”终止。PING是最常用的基于ICMP的服务。ICMP的目的是用于在TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,令管理者可以对所发生的问题作出判断,然后采取适当的措施去解决它。
ICMP是一个“错误侦测与回报机制”,其目的是让管理员能够检测网络的联机状况,也能确保联机的准确性,其功能主要有:侦测远程主机是否存在;建立及维护路由数据;重导数据传送路径;在TCP/IP网络中所有的设备必须实现ICMP。ICMP消息通过IP数据报来传送,ICMP定义了很多信息类型,例如:目的不可达;TTL超时;参数问题;时间戳应答;信息请求和应答;地址请求和地址应答等等。
5、TCP和UDP的端口结构
TCP和UDP服务通常有一个客户服务器的关系,例如一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而这个连接是双工的,可以用来进行读写。TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:
(1)源IP地址:发送包的IP地址;
(2)目的IP地址:接收包的IP地址;
(3)源端口:源系统上的连接端口;
(4)目的端口:目的系统上的连接端口
端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如FTP使用21、SMTP使用25、XWINDOWS使用6000。这些端口号是广为人知的,因为在建立与特定的主机或服务连接时,需要这些地址和目的地址进行通信。
三、OSI参考模型
OSI参考模型是开放系统互联(Open System Interconnection ,OSI)参考模型的简称。国际标准化组织ISO发布的最著名的标准是ISO/IEC 7498,通常又称为X.200建议。该体系结构标准定义了网络互联的7层框架,即OSI开放系统互联参考模型。这一框架下详细规定了每一层的功能,以在实现开放系统环境中的互联性、互操作性与应用的可移植性。OSI参考模型中的“开放”是指只要遵循OSI标准,一个系统就可以与位于世界上任何地方、遵循同一标准的其他任何系统进行通信。在OSI标准的制定过程中,采用的方法是将整个庞大而复杂的问题划分为若干个容易处理的小问题,这就是分层的体系结构方法。
OSI参考模型将整个计算机网络分成了7层,较低层通过层间接口向较高层提供服务。OSI模型的上层处理应用程序问题,并且通常只应用在软件上。最高层,即应用层是与终端用户最接近的。OSI模型的下层是处理数据传输的。物理层和数据链路层应用在硬件和软件上。最底层,即物理层是与物理网络媒介(比如说,电线)最接近的,并且负责在媒介上发送数据。在层间接口中定义了服务请求的方式以及完成服务后返回的确认事项和动作,详见图4.12所示。
图4.12 OSI参考模型及协议
(一)物理层(Physical Layer)
这是参考模型中的底层。为了将电话线、同轴电缆等物理介质用做线路而进行的电气的、机械的以及物理的管理,以保证数据流的传送。例如通信介质的标准、调制解调器信号的管理。
(二)数据链路层(Data Link Layer)
通过检查能够发现在邻接通信系统间传送线路上的数据错误并进行恢复,确保比特序列组成的数据流(数据块)准确无误地传送给对方的系统。
(三)网络层(Network Layer)
使用数据网(分组网和线路交换网)、电话网等各种通信网,与通信对方系统之间建立通信路径,为此而进行的中继、路由选择,以保证终端系统间的数据传送。这时要设定最佳的通信路径,以实现上面的传送层所必需的吞吐量、传送延迟等传送功能。
(四)传输层(Transport Layer)
通信两端的终端系统,在通信进程间进行实际的数据传送,其正确性是由这一层来保证的。因此本层要保证连接系统的通信网的质量。当传送出错概率高时,要通过检错、恢复等手段提高数据传送的可靠性。为了用便宜的通信费用传送数据,常采用在一条网络连接中组合多条传送连接的多路复用手法。
(五)对话层(Session Layer)
在进程间进行通信时,一般通过相互同步传送有一定含义的信息。例如在传送较长的文件时,采用以页为单位进行确认,确认后,再传送下一页。为此在本层中要对进程中必要的信息传送方式(如半双工、全双工的管理,发送权的管理)、进程间的同步以及重新同步进行管理,这些功能总称为对话管理。
(六)表示层(Presentation Layer)
一般来说每个进程的数据结构都是不同的,在进程间进行通信时,有必要使用双方都能处理的通用数据结构进行传送。具体地说,就是确定所使用的字符集、数据编码以及数据在屏幕和打印机上的显示方法。此外还完成信息的压缩、加密和解密等功能。
(七)应用层(Application Layer)
应用层是OSI模型的第7层,也是最高层。数据在应用层的单位还可用“消息”表示。应用层的作用是为用户提供一个OSI的工作环境,通过显示器直接为用户服务。应用层负责管理OSI的系统资源和应用资源。系统资源包括计算机的CPU、存储器、I/O设备等;应用资源包括文件、数据库等。应用层不包括用户软件,仅包括支持用户软件运行的网络服务技术。
例如,如果计算机 A 要将应用程序中的某数据发送至计算机 B ,数据首先传送至应用层。 计算机 A 的应用层通过在数据上添加协议头来和计算机 B 的应用层通信。所形成的信息单元包含协议头、数据、可能还有协议尾,被发送至表示层,表示层再添加为计算机 B 的表示层所理解的控制信息的协议头。信息单元的大小随着每一层协议头和协议尾的添加而增加,这些协议头和协议尾包含了计算机 B 的对应层要使用的控制信息。在物理层,整个信息单元通过网络介质传输。计算机 B 中的物理层收到信息单元并将其传送至数据链路层;然后 B 中的数据链路层读取计算机 A 的数据链路层添加的协议头中的控制信息;然后去除协议头和协议尾,剩余部分被传送至网络层。每一层执行相同的动作:从对应层读取协议头和协议尾,并去除,再将剩余信息发送至上一层。应用层执行完这些动作后,数据就被传送至计算机 B 中的应用程序,这些数据和计算机 A 的应用程序所发送的完全相同。
四、其他网络协议
(一)IPX/SPX
IPX/SPX(Internetwork Packet Exchange/Sequential Packet Exchange)是基于施乐的XEROX’S Network System(XNS)协议,而SPX是基于施乐的XEROX’S SPP(Sequenced Packet Protocol:顺序包协议)协议,它们都是由novell公司开发出来应用于局域网的一种高速协议,主要用于NetWare网络操作系统的连接。它和TCP/IP的一个显著不同就是它不使用ip地址,而是使用网卡的物理地址即(MAC)地址。在实际使用中,它基本不需要什么设置,装上就可以使用了。由于其在网络普及初期发挥了巨大的作用,所以得到了很多厂商的支持,包括microsoft等,到现在很多软件和硬件也均支持这种协议。
(二)NetBEUI
NetBEUI(NetBIOS Enhanced UserInterface)网络基本输入输出系统扩展用户接口。NetBEUI协议是IBM于1985年提出。NetBEUI主要为20到200个工作站的小型局域网设计的,它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如用于Windows For Workgroups及Windows NT网及最新的Windows系统,是WINDOWS98之前的操作系统的缺省协议。NetBEUI是一个紧凑、快速的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。但由于NetBEUI没有路由能力,即不能从一个局域网经路由器到另一个局域网,不能适应较大的网络。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。