IP 分组和 IP 数据报的区别:大多数计算机网络都不能连续地传送任意长的数据报,所以实际上网络系统把数据报分割成小块,然后逐块地发送,这种小块就称作分组。
一个 IP分组由首部和数据部分组成。.首部前一部分的长度固定,共20B
,是所有 IP分组必须具有的。在首部固定部分的后面是–些可选字段,其长度可变,用来提供错误检测及安全等机制。
IP 首部 的部分重要字段含义如下:
DF=0
时才允许分片。注:
在P数据报首部中有三个关于长度的标记,一个是首部长度、一个是总长度、一个是片偏移,基本单位分别为4B、1B、8B(这个一定要记住)。题目中经常会出现这几个长度之间的加减运算。另外,读者要熟悉IP 数据报首部的各个字段的意义和功能,但不需要记忆 IP数据报的首部,正常情况下如果需要参考首部,题目都会直接给出。第5章学到的TCP、UDP 的首部也是一样的。
一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的MTU严格地限制着P数据报的长度,而且在TP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的MTU。例如,以太网的MTU为1500B,而许多广域网的MTU不超过576B。当 IP数据报的总长度大于链路的 MTU时,就需要将 IP数据报中的数据分装在两个或多个较小的 IP数据报中,这些较小的数据报称为片。
IP 首部中的标志位有 3 比特
,但只有后 ⒉比特有意义,分别是 DF位(Don't Fragment) 和 MF位(MoreFragment)
。
中间位DF(Don’t Fragment)决定是否能被分片。
MF 则用来告知目的主机该 IP数据报是否为原始数据报的最后一个片。
目的主机在对片讲行重组时,使用片偏移字段来确定片应放在原始数据报的哪个位置。(片偏移的单位为 8B,除了最后一个分片,每个分片长度一定是8B的整数倍。)
分片涉及一定的计算。例如,一个长 4000B 的 IP数据报(首部20B,数据部分3980B) 到达一个路由器,需要转发到一条 MTU 为 1500B 的链路上。这意味着原始数据报中的 3980B 数据必须被分配到 3 个独立的片中(每片也是一个P数据报)。假定原始数据报的标识号为777,那么分成的3片所示。可以看出,由于偏移值的单位是 8B,所以除最后一个片外,其他所有片中的有效数据载荷都是8的倍数。
网络层的路由器执行的分组转发算法如下:
1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址N。
2)若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付:否则是间接交付,执行步骤3)。
3)若路由表中有目的地址为D的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器:否则,执行步骤4)。
4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤5)。
5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器:否则,执行步骤6)。
6)报告转发分组出错。
注意:得到下一跳路由器的地址后并不是直接将该地址填入待发送的数据报,而是将该地址转换成MAC地址(通过ARP),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分。
在上表中,A类地址可用的网络数为
2
7
−
2
2^{7}-2
27−2,减 2 的原因是:第一,网络号字段全为0的IP地址是保留地址,意思是“本网络":第二,网络号为 127 的 IP地址是环回自检地址。
B类地址的可用网络数为
2
14
−
1
2^{14}-1
214−1,减1的原因是128.0 这个网络号是不可指派的。
C类地址的可用网络数为
2
21
−
1
2^{21}-1
221−1,减1的原因是网络号为192.0.0 的网络是不可指派的。
地址类别 | 地址范围 | 网段个数 |
---|---|---|
A类 | 10.0.0.0~10.255.255.255 | 1 |
B类 | 172.16.0.0~172.31.255.255 | 16 |
C类 | 192.168.0.0~192.168.255.255 | 256 |
注:
网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的 IP地址。它使得整个专用网只需要一一个全球 IP地址就可以与因特网连通,由于专用网本地P地址是可重用的,所以 NAT技术大大节省了 IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
网络地址转换NAT(Network Address Translation):在专用网
连接到因特网
的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址
。
使用本地地址的主机和外界通信时,NAT 路由器使用 NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着 {本地 IP地址:端口} 到 {全球 IP地址:端口} 的映射。通过 {ip地址:端口} 这样的映射方式,可让多个私有IP地址映射到同一个全球 IP地址。
注:本地端对应的是 LAN 端,全球IP对应的是 WAN 端。
注意:普通路由器在转发P数据报时,不改变其源 IP地址和目的 IP地址。而NAT路由器在转发 IP数据报时,一定要更换其 IP地址(转换源P地址或目的P地址)。普通路由器仅工作在网络层,而 NAT路由器转发数据报时需要查看和转换传输层的端口号。
子网掩码:是一个与P地址相对应的、长 32bit 的二进制串,它由一串1 和跟随的一串0 组成。其中,1 对应于IP地址中的网络号及子网号,而 0 对应于主机号。计算机只需将 IP地址和其对应的子网掩码逐位“与”(逻辑AND运算),就可得出相应子网的网络地址。
二级 IP分类(ABCD类网络)具有 IP地址空间的利用率有时很低,且不够灵活的缺点,为此由三级 IP 地址的出现。
CIDR 使用 “网络前缀” 的概念代替子网络的概念。因此,IP地址的无分类两级编址为:IP::= {<网络前缀>,<主机号>}
。
CIDR还使用“斜线记法”(或称CIDR记法),即 IP地址/网络前缀所占比特数
。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。
CIDR 的优点:
最长前缀匹配(最佳匹配)
:使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
将多个子网聚合成一个较大的子网,叫做构成超网
,或路由聚合
。
方法:将网络前缀缩短(所有网络地址取交集)。