1.3 不能不知道的网络协议
在网络中,计算机之间需要交换信息就必须使用相同的网络协议。网络协议就像人们说话时使用的某种语言一样,是网络上计算机之间交换信息采用的一种语言。
1.3.1 TCP/IP协议簇
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网络协议)是Internet最基本的协议,由网络层的IP协议和传输层的TCP协议组成。它主要用于规范网络上所使用的通信设备,也是一个主机与另一个主机之间数据的传送方式。在Internet中,TCP/IP是传输数据打包和寻址的标准方法。
TCP/IP允许独立的网络添加到Internet中或私有的内部网(Intranet)中。通过路由器(可以将一个网络的数据包传输给另一个网络的设备)或IP路由器等设备将独立的网络连接在一起,就构成了内部网。在使用TCP/IP协议的内部网中,数据将被分成独立的IP包或IP数据报数据单元进行传输。
TCP/IP通常被称为TCP/IP协议簇。在实际应用中,TCP/IP是一组协议的代名词。它还包括许多别的协议,组成了TCP/IP协议簇,其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP协议、FTP协议、DNS协议、SMTP协议等。
1.3.2 IP协议
IP协议是为计算机网络相互连接进行通信而设计的协议。在互联网中,可以使连接到网上的所有计算机网络实现相互通信,同时还规定了计算机在互联网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只有遵守IP协议才可以与互联网互连互通。
IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。每台联网计算机都依靠IP地址来标识自己。正因为有这种唯一的地址,才保证了用户在联网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需要的。
(1)IP地址的基本格式。
按照TCP/IP协议的规定,IP地址用二进制来表示,每个IP地址长32bit,也就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也比较难。为了方便人们的使用,IP地址经常被写成4个十进制的数,中间使用符号“.”分隔开。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示方法叫作“点分十进制表示法”,显然比1和0容易记忆得多。IP地址格式:网络地址+主机地址或网络地址+子网地址+主机地址。
IP地址的分类
(2)IP地址的分类。
在互联网中的每个接口都有一个唯一的IP地址与其对应,该地址并不是采用平面形式的地址空间,而是具有一定的结构。一般情况下,IP地址可分为五大类,如下图所示。
从中不难得出如下结论。
在A类中,第一段为网络位,后3段为主机位,其范围为1~127,如127.255.255.255。
在B类中,前2段是网络位,后2段为主机位,其范围为128~191,如191.255.255.255。
在C类中,前3段为网络位,后1段为主机位,其范围为192~223,如223.255.255.255。
D类地址用于多播,也叫组播地址,在互联网上不能作为接点地址使用,其范围为224~239,如239.255.255.255。
E类地址用于科学研究,也不能在互联网上使用,其范围为240~254。
1.3.3 ARP协议
ARP协议(Address Resolution Protocol,地址解析协议)的主要作用是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。ARP协议将局域网中的32位IP地址转换为对应的48位物理地址,即网卡的MAC地址。例如,IP地址是192.168.0.10,而网卡的MAC地址为00-1B-7C-17-B0-79,整个转换过程是一台主机先向目标主机发送包含有IP地址和MAC地址的数据包,再通过MAC地址两个主机,就可以实现数据传输了。
1.ARP工作原理
计算机在相互通信时,实际上是互相解析对方的MAC地址。其具体的操作步骤如下。
1每台主机都会在自己的ARP缓冲区中建立一个ARP列表,来表示IP地址和MAC地址的对应关系。
2当源主机需要将一个数据包发送到目的主机时,会检查自己ARP列表中是否存在该IP地址对应的MAC地址。如果存在,则将数据包发送到这个MAC地址;如果不存在,就向本地网段发起一个ARP请求的广播包,来查询此目标主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址,以及目的主机的IP地址。
3网络中所有的主机收到这个ARP请求后,都会检查数据包中的目的IP是否和自己的IP地址相同。如果不相同,就忽略此数据包;如果相同,该主机首先就会将发送端的MAC地址和IP地址添加到自己的ARP列表中。
4如果ARP列表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址。
5当源主机收到这个ARP响应数据包后,便将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
2.查看ARP缓存表
每台计算机中都保存着一个ARP缓存表,其中记录了局域网中其他IP地址对应的MAC地址,以便访问到正确的IP地址。ARP缓存表是可以查看的,也可以对其进行删除。在“命令提示符”窗口中输入“arp -a”命令可以查看ARP缓存表中的内容,如图所示;而输入“arp-d”命令可以删除ARP缓存表中所有的内容,如图所示。
查看和删除ARP缓存表中所有的内容
1.3.4 ICMP协议
ICMP(Internet Control Message Protocol,Internet控制消息协议)是TCP/IP协议簇中的子协议,主要用于查询报文和差错报文。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用;一些ICMP报文把差错报文返回给用户进程。通过IP包传送的ICMP信息主要用于涉及网络操作或错误操作的不可达信息。ICMP包发送是不可靠的,所以主机不能依靠接收ICMP包解决任何网络问题。
ICMP协议的主要功能如下。
1.发现网络错误
可以发现某台主机或整个网络由于某些故障不可达。
2.通告网络拥塞
当路由器缓存太多数据包时,由于传输速度无法达到它们的接收速度,将会生成ICMP源结束信息。对于发送者,这些信息将会导致传输速度降低。当然,更多ICMP信息生成也将引起更多的网络拥塞。
3.协助解决故障
ICMP支持echo功能,即在两台主机间一个往返路径上发送一个数据包。Ping是一种基于这种特性的通用网络管理工具,可传输一系列的数据包,测量平均往返次数并计算丢失百分比。
4.通告超时
如果一个IP包的TTL值降低到0,路由器就会丢弃此IP包,这时会生成一个ICMP包通告这一事实。TraceRoute是一个工具,通过发送小TTL值的包及监视ICMP超时通告可以显示网络路由。
其实在网络中经常会使用到ICMP协议,只不过大家觉察不到而已。例如,经常使用的用于检查网络接通情况的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令,如跟踪路由的Tracert命令也是基于ICMP协议的。
ICMP协议对于网络安全具有极其重要的意义,其本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB的规定,向主机发起“Ping of Death”(死亡之Ping)攻击。