IP 分组和 IP 数据报的区别:大多数计算机网络都不能连续地传送任意长的数据报,所以实际上网络系统把数据报分割成小块,然后逐块地发送,这种小块就称作分组。
一个 IP分组由首部和数据部分组成。.首部前一部分的长度固定,共,是所有 IP分组必须具有的。在首部固定部分的后面是–些可选字段,其长度可变,用来提供错误检测及安全等机制。
IP 首部 的部分重要字段含义如下:
- 版本。指IP的版本,目前广泛使用的版本号为 4。
- 首部长度。占 4 位,可以表示的最大十进制数是 15。以 32 位为单位,最大值为60B( 15×4B)。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。
- 总长度。占16位。指首部和数据之和的长度,单位为字节,因此数据报的最大长度为。以太网帧的最大传送单元(MTU)为1500B,因此当一个P数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的MTU值。
- 标识。占 16 位。它是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。但它并不是“序号”(因为 IP 是无连接服务)。当一个数据报的长度超过网络的 MTU 时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报。
- 标志。占 3 位。标志字段的最低位为 MF,MF=1 表示后面还有分片,MF = 0 表示最后一个分片。标志字段中间的一位是 DF,只有当 时才允许分片。
- 片偏移。占 13 位。它指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,即每个分片的长度一定是 8B(64位)的整数倍。
- 生存时间(TTL)。占8位。数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环,路由器在转发分组前。先把 TTL 减 1,若 TTL 被减为0,则该分组必须丢弃。
- 协议。占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应交给哪个传输层协议,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP。
- 首部校验和。占16位。IP 数据报的首部校验和只校验分组的首部,而不校验数据部分。
- 源地址字段。 占4B,标识发送方的 IP 地址。
- 目的地址字段。 占4B,标识接收方的 IP 地址.
注:
在P数据报首部中有三个关于长度的标记,一个是首部长度、一个是总长度、一个是片偏移,基本单位分别为4B、1B、8B(这个一定要记住)。题目中经常会出现这几个长度之间的加减运算。另外,读者要熟悉IP 数据报首部的各个字段的意义和功能,但不需要记忆 IP数据报的首部,正常情况下如果需要参考首部,题目都会直接给出。第5章学到的TCP、UDP 的首部也是一样的。
一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。因为IP数据报被封装在数据链路层数据报中,因此数据链路层的MTU严格地限制着P数据报的长度,而且在TP数据报的源与目的地路径上的各段链路可能使用不同的数据链路层协议,有不同的MTU。例如,以太网的MTU为1500B,而许多广域网的MTU不超过576B。当 IP数据报的总长度大于链路的 MTU时,就需要将 IP数据报中的数据分装在两个或多个较小的 IP数据报中,这些较小的数据报称为片。
IP 首部中的标志位有 ,但只有后 ⒉比特有意义,分别是 。
中间位DF(Don’t Fragment)决定是否能被分片。
- DF=1,禁止分片
- DF=0,允许分片
MF 则用来告知目的主机该 IP数据报是否为原始数据报的最后一个片。
- 当MF=1时,表示相应的原始数据报还有后续的片;
- 当MF=0时,表示该数据报是相应原始数据报的最后一个片。
目的主机在对片讲行重组时,使用片偏移字段来确定片应放在原始数据报的哪个位置。(片偏移的单位为 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帧中的源地址和目的地址要发生变化,但是网桥在转发帧时,不改变帧的源地址,请注意区分。
- 主机号全为0,表示该网络本身;
- 主机号全为1,表示该网络的广播地址;
- 127.0.0.0 保留为环回自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
- 32位全为0,即 0.0.0.0 表示本网络上的本主机。
- 32位全为1,即 255.255.255.255 表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址。
注:
- 对于网段可以理解为:子网划分后的子网个数。
- 路由器对目的地址是私有IP地址的数据报一律不进行转发。
- 私有 IP 地址只用于 LAN,不用于 WAN 连接(因此私有 IP 不能直接连接 Internet)
网络地址转换(NAT)是指通过将专用网络地址(如Intranet)转换为公用地址(如Internet),从而对外隐藏内部管理的 IP地址。它使得整个专用网只需要一一个全球 IP地址就可以与因特网连通,由于专用网本地P地址是可重用的,所以 NAT技术大大节省了 IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
网络地址转换NAT(Network Address Translation):在连接到的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个。
使用本地地址的主机和外界通信时,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还使用“斜线记法”(或称CIDR记法),即 。其中,网络前缀所占比特数对应于网络号的部分,等效于子网掩码中连续1的部分。
CIDR 的优点:
- 消除了传统的A类,B类和C类地址以及划分子网的概念。
- 融合子网地址与子网掩码,方便子网划分。
:使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
将多个子网聚合成一个较大的子网,叫做构成,或。
方法:将网络前缀缩短(所有网络地址取交集)。