简介
本章从P报文的结构讲起,引入了两个重要的协议--ARP和ICMP,值得注意的是,P报文结构并不是本章的重点内容,讲解的目的只是让大家简单了解,当然,并不是这部分内容不重要,只是从目前大家学习的层次来看,还不是全面深入地剖析P数据包的最佳时机,大家会在后续内容学习到这部分知识,到那时大家会对网络世界有更深一层的认识。
学习协议的关键不在于死记硬背,而应该理解协议应用在实际环境中的过程和原理,如为什么要如此设计,为网络通信提供哪些辅助作用,等等,所以本章的重点是理解,本章的目标就是根据自己的理解能够描述出协议详细的工作过程,关注每一个细节。
1.IP数据包格式
我们学习了iP地址,网络层负责定义数据通过网络流动所经过的路径。其主要功能可以总结为以下几点。
定义了基于P协议的逻辑地址。
选择数据通过网络的最佳路径。
连接不同的媒介类型。
首先来看一下iP数据包头的格式,如图所示
各字段的含义如下。
版本(Version):该字段包含的是IP的版本号,4bit。目前IP的版本为4(即Pv4)。该版本形成于20世纪80年代早期,现在无论是在局域网还是在广域网中,使用的都是IPv4。目前IPv4所面临的最大问题是IP地址空间不足,即将使用的IPv6是P的下一个版本,但也不能解决IP地址缺乏的问题。
首部长度(HeaderLength):该字段用于表示IP数据包头长度,4bitP数据包头最短为20字节,但是其长度是可变的,具体长度取决于选项字段的长度。
优先级与服务类型(Priority &Type of Service):该字段用于表示数据包的优先级和服务类型,8bit,通过在数据包中划分一定的优先级,用于实现QoS(服务质量)的要求。
总长度(TotalLength]:该字段用以指示整个P数据包的长度,16bit,最长为65535字节,
包括包头和数据。
标识符(ldentification):该字段用于表示P数据包的标识符,16bit。当P对上层数据进行分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组,标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包,标志(Flags):标志字段,3bit。标志和分片一起被用来传递信息。例如,对当前的包不能进行分片(当该包从一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出。
段偏移量(Fragment Offset):该字段用于表示段偏移量,13bit。段偏移量中包含的信息是指在一个分片序列中如何将各分片重新连接起来。
TTL(Time to Live):该字段用于表示IP数据包的生命周期,8bit,该字段包含的信息可以防止一个数据包在网络中无限循环地转发下去。TTL 值的意义是一个数据包在被抛弃前在网络中可以经历的最大周转时间。该数据包经过的每一个路由器都会检查该字段中的值,当TTL的值为0时,该数据包将被丢弃,TTL对应于一个数据包通过路由器的数目,一个数据包每经过一个路由器,TTL将减去1.协议号(Protocol):协议字段,8bit。该字段用以指示在P数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6UDP的协议号为17。
首部校验和(Header Checksum):该字段用于表示校验和,16bit,校验和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算报头的校验和,就如同源机器所做的一样。如果数据没有被改动过,两个计算结果应该是一样的。
源IP地址(Source IP Address):该字段用于表示数据包的源地址,32bit。这是一个网络地址,指的是发送该数据包的设备的网络地址。 目标P地址(DestinationIP Address):该字段用于表示数据包的目的地址,32bit,这也是一个网络地址,但指的是接收节点的网络地址。
可选项(Options);选项字段根据实际情况可变长,可以和P一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据。
2 ARP 协议
使用ARP协议可以查出擅自更改P地址主机的MAC地址,在学习ARP协议前需要了解广播和广播域的相关概念。
2.1 广播与广播域
在超市找人时,如果不知道对方的位置就需要到服务台通过广播进行找人;当知道对方的位置时就可以直接到对方所在位置。在网络中也存在这种情况,如果不知道对方的地址就需要进行广播,即发送广播帧:而知道对方的地址就发送单播到对方处。所以,广播通信是“一对所有”的通信形
式,而单播通信是“一对一”的通信形式。所有听到找人广播的范围就是广播域,广播和广播域的具体定义如下。
>广播:将广播地址作为目的地址的数据帧。
>广播域:网络中能接收到同一个广播的所有节点的集合。
1.MAC地址广播
MAC地址的广播地址为FF-FF-FF-FF-FF-FF MAC地址广播域是所有相连接的交换机和集线器的集合,如果一台主机发送一个MAC地址广播,则这个广播将转发到所有相连的交换机或集线器的所有端口。收到广播帧的主机会比较数据包中的目的P地址是否为自身P地址,如果是,则继续处理数据包中的承载数据;如果不是,则丢弃数据。
交换机转发MAC地址广播,而路由器会阻挡MAC 地址广播。
2.IP 地址广播
iP网段的最后一个地址为广播地址,即主机部分全部为1,在数据帧中,目的 MAC 地址是
FF-FF-FF-FF-FF-FF,目的P地址是P网段的广播地址。
例如,主机IP地址是1921681.20掩码是255255255.0,主机所在网段的广播地址是
192.168.1.255,如果主机发送一个目的P地址为1921681255、目的MAC 地址为FF-FF-FF-FF-FF-FF的广播,由于目的MAC地址为广播地址,因此广播域的范围和MAC 地址的广播域范围相同。当设备或主机接收到此广播后,查看是否属于同一P网段,如果处于同一网段,则对承载的数据进行处理,否则丢弃数据。同样路由器会阻挡IP地址广播。
如图(a)所示,A主机发送广播信息,B主机C主机都能收到。因为负责连接网络的中心设备是一台二层设备,A、B、C三台主机处于同一个广播域:而图(b)中,A主机发送的广播只有B主机能够收到,C主机是收不到的,因为网络已经被路由器隔开变成两个广播域,这就好比在教室里讲课,每个同学都会听到,但是隔壁教室的同学就听不到了。如果A.B是在同一个教室上课的同学,那么C就好比是在隔壁教室上课的同学。