图3-3为TCP/IP参考模型的各层协议详解。下面分别对各个协议进行说明。
图3-3 TCP/IP参考模型详解
(1)应用层协议分析。
前面已介绍过,应用层协议可以分为3类:①面向连接的TCP协议;②面向无连接的UDP协议;③既是TCP协议也是UDP协议。其中以TCP为基础的协议主要有文件传输协议FTP、电子邮件协议SMTP、超文本传输协议HTTP、网络终端协议TELnet。
1)FTP协议的功能是实现互联网中的交互式文件传输。
2)SMTP协议的功能是实现互联网中电子邮件的传送。
3)HTTP协议的功能是实现WWW服务,浏览网页。
4)TELnet协议的功能是实现互联网中远程登录功能。
以UDP协议为基础的协议主要有简单网络管理协议SNMP、简单文件传输协议TFTP。既是TCP协议又是UDP协议的是域名服务协议DNS和路由信息协议RIP。DNS协议的功能是实现网络设备名字到IP地址映射的网络服务。RIP协议的功能是网络设备之间的交换路由信息服务。
(2)传输层协议分析。
在网络中的连接服务被定义成3种:
1)无连接服务。这种服务的特点是实现网络之间的不可靠连接,相对应的无连接协议也是不可靠协议。优点是实现速度快,缺点是可靠性差。
2)面向连接服务。这种服务的特点是实现网络之间的可靠连接,相对应的面向连接协议也是实现网络之间的可靠性连接。优点是连接可靠性强,缺点是速度慢。
3)点—点服务,实现两点之间的直接连接方式的数据传输。优点是可靠性好而且速度快,缺点是成本过高,不可能在互联网上实现。
传输层的传输控制协议TCP协议是面向连接协议。它通过“三次握手”建立连接来实现通信双方的可靠连接;用户数据包协议UDP协议是无连接协议,主要用于传送大量数据。
(3)互联层协议分析。
互联层主要有3个协议。①地址解析协议ARP/RARP,介于网络层和低层之间,主要功能是实现网卡的物理地址与IP地址的解析;②IP协议又称网际协议,主要功能是实现网络设备之间的寻址操作;③网际报文控制协议ICMP的功能则是实现对IP协议的可靠性保障。
(一)文件传输服务
文件传输服务(FTP)是因特网中最早的服务功能之一,目前仍在广泛使用。FTP为计算机之间双向文件传输提供了一种有效的手段。它允许用户将本地计算机中的文件上载到远端的计算机中,或将远端计算机中的文件下载到本地计算机中。目前因特网上的FTP服务多用于文件的下载,利用它可以下载各种类型的文件,包括文本文件、二进制,以及语音、图像和视频文件等。因特网上的一些免费软件、共享软件、技术资料、研究报告等,大多都是这种渠道发布的。
1.FTP服务器与客户机
FTP服务也采用典型的客户机/服务器工作模式,远端提供FTP服务的计算机称之为服务器,通常是因特网信息服务提供者的计算机,它负责管理一个文件仓库,因特网用户可以通过FTP客户机从文件仓库中取文件或向文件仓库中存入文件,客户机通常是用户自己的计算机。将文件从服务器传到客户机称之为下载文件,而将文件从客户机传到服务器称之为上载文件。FTP服务是一种实时的联机服务,用户在访问FTP服务器之前必须进行登录,登录时要求用户给出用FTP服务器上的合法账号和口令:只有成功登录的用户才能访问该FTP服务器,并对授权的文件进行查阅和传输。FTP的这种工作方式限制了因特网上一些公用文件及资源的发布,为此因特网上的多数服务器都提供了一种匿名FTP服务。
2.FTP匿名服务
目前大多数提供公共资料的FTP服务器都提供匿名的FTP服务,因特网用户可以随时访问这些服务器要预先向服务器申请账号。当用户访问提供匿名服务的FTP服务器时,用户登录时一般不需要输入密码或使用匿名账号和密码。匿名账户和密码是公开的,如果没有特殊声明,通常用“anonymous”作为账号,用“guest”作为口令。有些FTP服务器会要求用户输入自己的电子邮件地址作为口令。如果FTP服务器不使用“anonymous”和“guest”作为账号和口令,那么在用户登录时FTP服务器会告诉用户进入该FTP的方法。因特网用户目前所使用的FTP服务大多数是匿名服务。为了保证FTP服务器的安全性,几乎所有的FTP匿名服务只允许用户下载文件,而不允许用户上载文件。
3.FTP客户端应用程序
因特网用户使用的FTP客户端应用程序通常有3种类型,即传统的FTP命令行、浏览器和FTP下载。
传统的FTP命令行形式是最早的FTP客户端程序,在目前的Windows NT等图形界面操作中仍保留着该功能,但需要切换到MS—DOS窗口中执行。FTP命令行包含约50条命令,对于因特网的初学者来说,要记住如此多的命令及命令参数并不是一件容易的事情。因而用户很少使用它们,而多求助介绍的另两种应用程序:不过由于FTP命令行通常包含在操作系统中,用户在没有其他工具可用的时候不妨试着用一用。
通常,浏览器是访问WWW服务的客户端应用程序,用户通过指定URL便可以浏览到相应的页面信息。用户在访问WWW服务时,URL中的协议类型使用的是http,如果将协议类型换成FTP后面指定服务器的主机名,便可以通过浏览器访问FTP服务器。例如,要访问吉林大学FTP服务器根目录下的文件sample.txt,其URL可以书写成:
ftp://ftp.jlu.edu.cn/sample.txt
协议类型 主机名 路径及文件名
其中“ftp:”指明要访问的服务器为FTP服务器;“ftp.jlu.edu.cn”指明要访问的FTP服务器的主机名;“/sample.txt”指明要下载的文件名。另外,在Web页面中通常也包含着一些到FTP服务器的链接,用户可以通过这些链接方便地访问到服务器,并从中下载文件。当然,通过浏览器用户只能从FTP服务器下载文件而不能上载文件;用户利用FTP命令行或浏览器从FTP服务器下载文件时,经常会遇到一件令人扫兴的事情,即在下载完成了95%的时候,网络连接突然中断,文件下载前功尽弃,一切必须从头开始。这时候用户非常希望线路恢复链接之后继续将剩余的5%传完,这就需要使用FTP下载工具。FTP下载工具一方面可以提高文件下载的速度,另一方面可以实现断点续传,即接续前面的断接点完成剩余部分的传输。
常用的下载工具主要有GetRight、CuteFtp、net Ants等。图3-4是常用下载工具网络蚂蚁的初始化界面和下载界面。
(二)电子邮件服务
电子邮件服务(又称E-mail服务)是目前因特网上使用最频繁的一种服务,它为因特网用户之间发送和接收信息提供了一种快捷、廉价的现代化通信手段,特别是在国际之间的交流中发挥着重要的作用。例如,如果发一封普通信件到美国,需要花费十几元人民币,信件要旅行长达一周的时间才能到达收信人手中。如果通过电子邮件发送同样多文字的内容,通常只需0.2~0.3元人民币,如果顺利的话在几秒钟就可以到达收件人的邮箱中,最长也只需几个小时的时间。
早期的电子邮件系统只能传输西文文本信息,而今的电子邮件系统不但可以传输各种文字和各种格式的文本信息,而且还可以传输图像、声音、视频等多种信息,使电子邮件成为多媒体信息传输的重要手段之一,每天有超过2500万人在世界各地发送电子邮件,而且,多数因特网用户对因特网的了解都是从收发邮件开始的。
图3-4 网络蚂蚁界面
电子邮件之所以受到广大用户的喜爱,是因为与传统通信方式相比具有明显的优点:①电子邮件比人工邮件传递迅速,可达到的范围广,而且比较可靠;②电子邮件与电话系统相比,它不要求通信双方都在场,而且不需要知道通信对象在网络中的具体位置;③电子邮件可以实现一对多的邮件传送,这样可以使得一位用户向多人发出通知的过程变得很容易;④电子邮件可以将文字、图像、语音等多种类型的信息集成在一个邮件中传送,因此它将成为多媒体信息传递的重要手段。
1.电子邮件服务器与电子邮箱
电子邮件服务采用客户机/服务器工作模式。电子邮件服务器(以下简称邮件服务器)是因特网邮件的核心,它的作用与人工邮递系统中邮局的作用非常相似。邮件服务器一方面负责接收用户送来的信息,根据邮件所要发送的目的地址,将其传送到对方的邮件服务器中;另一方面,它负责接收从其他邮件服务器发来的邮件,并根据收件人的不同将邮件分发到各自的电子邮箱(以下简称邮箱)中。
网中存在着大量的邮件服务器,如果某个用户要利用一台邮件服务器发送和接收邮件,则该用户必须向该服务器中申请一个合法的账号,包括账号名和密码。一旦用户在一台邮件服务器中拥有了账号,就在邮件服务器中拥有了自己的邮箱。邮箱是在邮件服务器中为每个合法用户开辟的一个存储用户邮件的信箱。
在因特网中,每个用户的邮箱都有一个全球唯一的邮箱地址,即用户的电子邮件地址。用户的电子邮件地址由两部分组成,后一部分为邮件服务器的主机名或邮件服务器所在域的域名,前一部分为用户在该邮件服务器中的账号,中间用“@”分隔。如whdzy@sohu.com为一个用户的电子邮件地址,其中sohu.com是邮件服务器的主机名,whdzy为用户在该邮件服务器中的账号。
邮箱是私人的,只有拥有账号和密码的用户才能阅读邮箱中的邮件,而其他用户可以向该邮件地址发送邮件,并由邮件服务器分发到邮箱中。
2.电子邮件应用程序
用户发送和接收邮件需要借助于装载在客户机中的电子邮件应用程序来完成。电子邮件应用程序一方面负责将用户要发送的邮件送到邮件服务器中,另一方面负责检查用户邮箱,读取邮件。因而电子邮件应用程序应具有如下两项最为基本的功能:①创建和发送邮件功能;②接收、阅读和管理邮件的功能。
电子邮件应用程序在向邮件服务器传送邮件时使用简单邮件传输协议SMTP(Simple Mail Transfer Protocol);而从邮件服务器的邮箱中读取时可以使用POP3(Post Office Protocol)协议,人们通常称支持POP3协议的邮件服务器为POP3服务器。POP3服务器的工作过程是:当使用电子邮件应用程序访问POP3服务器时,邮箱中的邮件被拷贝到用户的客户机中,邮件服务器中保留邮件的副本,用户在自己的客户机中阅读和管理邮件。POP3服务器比较适合于用户只从一台固定的用户机访问邮箱的情况:它将所有的邮件都读取到这台固定的客户机中存储。
3.电子邮件格式
与普通的邮政信件一样,电子邮件也有自己固定的格式。电子邮件由两部分组成:邮件头(Mail Header)和邮件体(Mail Body)。邮件头由多项内容构成,其中一部分内容是由电子邮件应用程序根据系统设置自动产生的,如发件人、邮件发送的日期和时间等;而另一部分内容则需要根据用户在创建邮件时输入的信息产生,如收件人、抄送人地址、邮件主题等。邮件体是实际要传送的内容:传统的电子邮件系统只能传递西文文本信息,而目前使用的多目的因特网电子邮件扩展协议(MIME,即Multipurpose Internet Mail Extensions)具有较强的功能,不但可以发送各种文字和各种结构的文本信息,而且还可以发送语音、图像和视频等信息,例如可以通过电子邮件为过生日的朋友发去一张音乐贺卡。
4.邮件的发送和接收过程
邮件的发送和接收过程如下:
(1)用户需要发送电子邮件时,首先利用客户端电子邮件应用程序按规定格式起草、编辑收件人的电子邮件地址,然后利用SMTP协议将邮件送往发送端的邮件服务器。
(2)发送端的邮件服务器接收到用户送来的邮件后,按收件人地址中的邮件服务器主机名,通过SMTP将邮件送到接收端的邮件服务器,接收端的邮件服务器根据收件人地址中的账号将邮件投递到对应的邮箱中。
(3)利用POP3协议,接收端的用户可以在任何时间和地点利用电子邮件应用程序从自己的邮箱中读取邮件,并对邮件进行管理。
5.电子邮件的安全特性
在电子邮件系统中,每一个邮箱都有密码进行保护,只有知道邮箱密码的人才有可能将邮箱中的邮件取走。密码是对邮件的一个最基本的保护。但是,对于电子商务或电子政务系统中传输的机密邮件,仅仅依赖于密码的保护是不够的。因特网上传递的邮件,完全有可能被黑客获取或篡改。
电子邮件安全性的主要手段是使用数字证书。数字证书可以在电子事务中证明用户的身份,来加密电子邮件以保护个人隐私。发送签名和加密的邮件,即使该邮件被黑客获取,他也不可能知道邮件内容。在获取邮件后,如果黑客将信件的内容修改后再传递给接收方,接收方也可以立即发现收到的信已经与发送方发出的原始信件不同。
(三)远程登录服务
计算环境中,常常需要远程计算机同本地计算机协同工作,利用多台计算机来共同完成一个较大的工作。这种协同操作的工作方式要求用户能够登录到远程计算机,启动某些远程进程,并使进程之间能够相互通信。为了达到这个目的,人们开发了远程终端协议,即Telnet协议。Telnet协议是TCP/IP协议的一部分,它精确地定义了本地客户机与远程服务器之间交互过程。
远程登录是因特网最早提供的基本服务功能之一。因特网中的用户远程登录是指用户使用Telnet命令,是自己的计算机暂时成为远程计算机的一个仿真终端的过程:一旦用户计算机成功地实现了远程登录,就可以像与远程计算机直接连接的本地终端一样进行工作。
远程登录允许任意类型的计算机之间进行通信。远程登录之所以能提供这种功能,主要是因为所有的运行操作都是在远程计算机上完成的,用户的计算机仅仅是作为一台仿真终端向远程计算机传送击键命令和显示命令执行结果。
利用因特网提供的远程登录服务可以实现:
(1)本地用户与远程计算机上运行的程序相互交互。
(2)用户登录到远程计算机时,可以执行远程计算机上的任何应用程序,只要该用户具有足够的权限。
(3)可以利用个人计算机去完成许多只有大型计算机才能完成的任务。
1.远程登录协议
远程登录协议Telnet是TCP/IP协议族中一个重要的协议,它的优点之一是能够解决多种不同的计算机系统的互操作问题。不同厂家生产的计算机在硬件和软件方面都存在着差异,这种差异给计算机系统间的互操作带来了很大的困难。
不同计算机系统的差异首先表现在不同系统对终端键盘输入命令的解释上。定义的差异性给远程登录带来了很多的问题:为了解决系统的差异性,Telnet协议引入了网络终端协议NVT(Network Virtual Terminal)的概念,它提供了一种标准的键盘定义,用来屏蔽不同计算机输入的差异性。
2.远程登录的工作原理
远程登录协议采用了客户机/服务器模式。在远程登录过程中,用户的实终端采用用户终端的格式与本地Telnet客户进行通信;远程计算机采用远程系统的格式与远程服务器之间进行通信。通过TCP连接,Telnet客户机与Telnet服务器进程之间采用网络虚拟终端NVT标准进行通信。网络虚拟终端格式将不同的用户本地终端格式统一起来,使得各个不同的用户终端格式只跟标准的网络虚拟终端NVT格式打交道,而与各个不同的本地终端格式无关。
如果用户希望使用远程登录服务,那么,用户本身的计算机和向用户提供因特网服务的计算机必须支持。同时,在远程计算机上用户拥有自己的账户(包括用户名与用户密码)或该远程计算机提供公开的用户账户。
用户在使用Telnet命令进行远程登录时,首先应在Telnet命令中给出对方计算机的主机名或IP地址。然后根据对方系统的询问,正确键入自己的用户名与用户密码。有时还要根据对方的要求,回答自己所使用的仿真终端的类型。
在因特网中,有很多信息服务机构提供开放式的远程登录服务,登录这样的服务器不需事先设置用户账户,使用公开的用户名就可以进入系统。
无论用户使用自己在远程登录服务器上的账户登录,还是使用远程服务器提供的公开账户登录,一旦登录成功,用户就可以像远程主机的本地终端一样进行工作,使用远程主机对外开放的软件、硬件、数据等全部资源。(www.daowen.com)
Telnet也经常用于公共服务或商业目的。利用Telnet,用户可以远程检索大型数据库、公众图书馆的信息库或其他信息。
(四)WWW服务与超文本传输协议(HTTP)
超文本传输协议(Hyper Text Transfer Protocol,简称HTTP)提供了一种用于访问全球咨询网或企业内部网的请求/响应的方法。
WWW服务采用客户机/服务器工作模式。它以超文本标记语言HTML与超文本传输协议HTTP为基础,为用户提供界面一致的信息浏览系统。WWW服务系统中,信息资源以页面(也称网页或Web页)的形式存储在服务器(通常称为Web站点)中,这些页面采用超文本方式对信息进行组织,通过链接将一页信息接到另一页信息。这些相互链接的页面信息既可放置在同一主机上,也可放置在不同的主机上。页面到页面的链接信息由统一资源定位符URL维持,用户通过客户端应用程序(即浏览器)向WWW服务器发出请求,服务器根据客户端的请求内容将保存在服务器中的某个页面返回给客户端,浏览器接收到页面后对其进行解释,最终将图、文、声并茂的画面呈现给用户。
与其他服务相比,WWW服务具有其鲜明的特点。它具有高度的集成性,能将各种类型的信息(如文字、声音、动画、视频等)与服务(如News、FTP、Gopher等)紧密连接在一起,提供生动的图形用户界面。WWW服务不仅为人们提供了查找和共享信息的简便方法,还为人们提供了动态多媒体交互的最佳手段,WWW服务具有以下主要特点:
(1)以超文本方式组织网络多媒体信息。
(2)用户可以在世界范围内任意查找、检索、浏览及添加信息。
(3)提供生动、直观、易于使用、统一的图形用户界面。
(4)网点间可以互相链接,以提供信息查找和漫游的透明访问。
(5)可访问图像、声音、影像和文本信息。
超文本传输协议HTTP是WWW客户机与WWW服务器之间的应用层传输协议;HTTP协议是一种面向对象的协议,为了保证WWW客户机与WWW服务器之间通信不会产生二义性,HTTP精确定义了请求报文和响应报文的格式。HTTP会话过程包括4个步骤,即链接、请求、应答、关闭。
因特网中WWW服务器众多,而每台服务器中又包含有多个页面,那么用户如何指明要获得的页面呢?这就要求助于统一资源定位符URL。URL由3部分组成:协议类型、主机名和路径及文件名。
WWW服务器中的一个页面的URL为:
协议类型 主机名 路径及文件名
协议类型表明要访问服务器的类型;主机名可以是服务提供商为该主机申请的IP地址,也可以是服务提供商为该主机申请的主机名;路径和文件名则指明要访问的页面的文件名。
除了通过指定http:访问WWW服务器之外,还可以通过指定其他的协议类型访问其他类型的服务器。例如,可以通过指定ftp:访问FTP文件服务器等。
(五)域名解析系统(DNS)
除了注册IP地址外,你可以获得自己的域名。32bit的IP地址难于记忆,应该使用符号地址,比如用www.xjtu.edu.cn表示西安交通大学web服务器的IP地址。但是,网络本身是使用IP地址的,因此需要一个完成二者之间相互转换的机制。当网络规模比较小时,例如ARPAnet,每台主机只需查找一个文件(UNIX的host),该文件中列出了主机与IP地址的对应关系。当网络规模很大时,上述方法就不适用了,因此产生了域名系统DNS(Domain Name System)。域名是唯一的名字,用于定义Web页面和E-mail地址。对于人们来说,域名比IP地址更容易记忆,并且访问Internet的资源更容易,如与注册IP地址相对应,域名也必须是唯一的。注册域名阻止Internet上主机名重复。域名空间如图3-5所示,为一棵颠倒的树形结构,树上的每一块代表一个域。
图3-5 域名空间示意图
域名系统是一个典型的客户机/服务器交互系统。域名系统是一个多层次的、基于域的命名系统,并使用分布式数据库实现这种命名机制。当应用程序需要进行域名解析时(从符号名到IP地址),它成为域名系统的一个客户。它向本地域名服务器发出请求,请求以UDP包格式发出,域名服务器找到对应的IP地址后,给出响应。当本地域名服务器无法完成域名解析,它临时变成其上级域名服务器的客户,递归解析,直到该域名解析完成。
如果你已为网络申请并注册了IP地址,你就可以为网络中的主机分配地址。每台计算机需要一个唯一的地址。例如:如果你的网络被赋予B类的地址,可以为你网络中的任何主机分配IP地址。
如果你没有注册的地址,但是想在Internet中使用,可以使用Inter NIC为私有网保留的地址。这些地址通常被Internet路由器过滤掉,不会与注册的地址产生冲突。
这些保留地址如表3-2所示(RFC1918)。一个区域内机器上的应用程序进行域名解析时,首先向该区域的域名服务器发出解析请求,若查找到,则返回域名对应的资源记录。若找不到,该域名服务器向所查找域名的顶级域的域名服务器发出解析请求,顶级域的域名服务器通过向下的层次查询得到对应的资源记录,返回给该域名服务器,最后资源记录被返回给发起域名解析的机器,并在该区域的域名服务器中做缓存,超时后删除。DNS分为客户机和服务器,客户机扮演发问的角色,也就是问服务器一个Domain Name,而Server必须要回答此Domain Name的真正IP地址。而当地的DNS先会查自己的资料库。在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个客户端到次服务器上去查询相同的名称时,服务器就不用再到别的主机上去寻找,而直接可以从缓存区中找到该笔名称记录资料,传回给客户端,加速客户端对名称查询的速度。
表3-2 IP地址的使用范围
[例1]当DNS客户端向指定的DNS服务器查询网际网络上的某一台主机名称,DNS服务器会在该资料库中找寻用户所指定的名称,如果没有,该服务器会先在自己的快取缓存区中查询有无该笔记录,如果找到该笔名称记录后,会从DNS服务器直接将所对应到的IP地址传回给客户端,如果名称服务器在资料记录查不到且快取缓存区中也没有时,服务器才会向别的名称服务器查询所要的名称。
[例2]DNS客户端向指定的DNS服务器查询网际网络上某台主机名称,当DNS服务器在该资料记录找不到用户所指定的名称时,会转向该服务器的快取缓存区找寻是否有该资料,当快取缓存区也找不到时,会向最接近的名称服务器去要求帮忙找寻该名称的IP地址,在另一台服务器上也有相同的动作的查询,当查询到后回复原本要求查询的服务器,该DNS服务器在接收到另一台DNS服务器查询的结果后,先将所查询到的主机名称及对应IP地址记录到快取缓存区中,最后再将所查询到的结果回复给客户端。
有两种询问原理,分为递归式(Recursive)和交互式(Interactive)两种。前者是由DNS代理去问,问的方法是用交互式,后者是由本机直接做交互式的询问。由上面两个例子可以看出,一般查询名称的过程中,实际上这两种查询模式都是交互存在着的。
递归式:DNS客户端向DNS Server的查询模式,这种方式是将要查询的封包送出去问,就等待正确名称的正确响应,这种方式只处理响应回来的封包是否是正确响应,或者说是否找不到该名称的错误信息。
交互式:DNS Server间的查询模式,由Client端或是DNS Server上所发出去问,这种方式送封包出去问,所响应回来的资料不一定是最后正确的名称位置,但也不是如上所说的响应回来是错误信息,他响应回来告诉你最接近的IP位置,然后再到此最接近的IP上去寻找所要解析的名称,反复动作直到找到正确位置。
(六)传输控制协议(TCP)
TCP是可靠的主机到主机层协议。传输控制协议是OSI网络的第4层的可靠性连接协议,是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。是在OSI参考模型中的第4层,TCP是使用IP的网间互联功能而提供可靠的数据传输,IP不停地把报文放到网络上,而TCP是负责确信报文到达。在协同IP的操作中TCP负责握手过程、报文管理、流量控制、错误检测和处理(控制),可以根据一定的编号顺序对非正常顺序的报文给予重新排列顺序。关于TCP的RFC文档有RFC793、RFC791和RFC1700。
1.TCP连接的“三次握手”
在TCP会话初期,有所谓的“三次握手”,即对每次发送的数据量是怎样跟踪进行协商,使数据段的发送和接收同步,可靠性可以通过很多种方法来保证,在这里应该注意的是数据序列和确认。TCP通过数据分段(Segment)中的序列号,保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN(Initial Sequence Number)。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程,见表3-3。
表3-3 TCP连接的建立
TCP分段中的标志(Flag)置位主要有:
(1)同步标志(SYN)。同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
(2)确认标志(ACK)。确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。
(3)复位标志(RST)。复位标志有效。用于复位相应的TCP连接。
(4)紧急标志(URG)。紧急(The Urgent Pointer)标志有效。
(5)推标志(PSH)。该标志置位时,接收端不将该数据进行队列处理,而是尽可能快地将数据转由应用处理。在处理telnet或rlogin等交互模式的连接时,该标志总是置位的。
(6)结束标志(FIN)。带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。
图3-6 TCP三次握手示意图
如图3-6所示,在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
2.TCP端口
为了能够支持同时发生的并行访问请求,TCP提供一种称为“端口”的用户接口。端口是操作系统核心用来识别不同的网络回话过程。这是一个严格的传输层定义。通过TCP端口和IP地址的配合使用,可以提供到达终端的通信手段。实际上,在任一时刻的互联网络连接可以由4个数字进行描述:来源IP地址和来源端口、目的IP地址和目的端口。位于不同系统平台,用来提供服务的一端通过标准的端口提供相应服务。举例来说,标准的Telnet守护进程(telnet daemon)通过监听TCP 23端口,准备接收用户端的连接请求。
端口大概分为三类:
(1)公认端口(well known ports):从0~1023,他们是绑定于一些服务。通常这些端口的通信明确表明了某种服务的协议。比如,21端口是FTP服务所开放的。
(2)注册端口(registered ports):从1024~49151,他们松散地绑定于一些服务也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。比如,许多系统处理动态端口是从1024开始的。
(3)动态或私有端口(dynamic and/or private ports):从49512~65535,理论上不应该为服务分配这些端口。实际上,计算机通常从1024开始分配动态端口。这些端口常可被黑客所利用,比如7626端口是“冰河”的入侵端口等。
3.TCP缓存(TCP Backlog)
通常情况下,操作系统会使用一块限定的内存来处理TCP连接请求。每当用户端发送的SYN标志置位连接请求到服务端的一个合法端口(提供TCP服务的一端监听该端口)时,处理所有连接请求的内存使用量必须进行限定。如果不进行限定,系统会因处理大量的TCP连接请求而耗尽内存,这在某种程度上可以说是一种简单的DoS攻击。这块经过限定的,用于处理TCP连接的内存称为TCP缓存(TCP Backlog),它实际上是用于处理进站(inbound)连接请求的一个队列。该队列保存那些处于半开放(half-open)状态的TCP连接项目,和已建立完整连接但仍未由应用程序通过accept调用提取的项目。如果这个缓存队列被填满,除非可以及时处理队列中的项目,否则任何其他新的TCP连接请求会被丢弃。
一般情况下,该缓存队列的容量很小。原因很简单,在正常的情况下TCP可以很好地处理连接请求。如果当缓存队列填满的时候新的客户端连接请求被丢弃,客户端只需要简单的重新发送连接请求,服务端有时间清空缓存队列以相应新的连接请求。
(七)用户数据报协议(UDP)
“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。UDP是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。用户数据报协议是ISO参考模型中一种无连接的传输层协议,提供面向操作的简单不可靠信息传送服务。UDP协议直接工作于IP协议的顶层。UDP协议端口不同于多路应用程序,其运行是从一个单个设备到另一个单个设备。大多数网络应用程序都是在相同的机器上运行。计算机上必须能确保目的地的正确软件应用程序从源地址处获得数据包,以及源计算机上的正确应用程序的回复获得选择路径。这一过程是通过使用UDP的“端口号”完成的。例如,如果一个工作站希望在站128.1、123.1上使用域名系统,它就得对欲连接的站128.1、123.1的包进行寻址操作并在UDP端口插入目标端口号53。源端口号确定被请求域名服务的本地机的应用程序,同时需要对所有由目的站生成的响应包进行寻址。与TCP不同,UDP并不提供数据传送的可靠机制、流控制以及错误恢复功能等。由于UDP比较简单,UDP头包含很少的字节,比TCP消耗少。UDP适用于不需要TCP可靠机制的情形,如:高层协议或应用程序提供错误和流控制的情况。UDP是传输层协议,应用于个别应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
UDP适用于一次只传送大量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。
(八)网际报文控制协议(ICMP)
ICMP是Internet Control Message Protocol(网际报文控制协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的ping命令,这个“ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上。可见,ICMP的重要性绝不可以忽视。
比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death”攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。
(九)地址解析协议(ARP)
ARP是Address Resolution Protocol(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。这个目标MAC地址是通过地址解析协议获得的。所谓“地址解析”,就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的。
以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例来说明ARP。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A作出这样的回应:“192.168.1.1的MAC地址是00—aa—00—62—c6—09。”这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp—a”就可以查看ARP缓存表中的内容了,如图3-7所示。用“arp—d”命令可以删除ARP表中某一行的内容;用“arp—s”可以手动在ARP表中指定IP地址与MAC地址的对应。
图3-7 ARP工作过程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。