跳到主要内容

任务二 IP协议

知识点​

1.IP协议在TCP/IP中的地位和特点是什么?​

IP 协议是互联网层中的核心协议,主要涉及互联网上的数据包格式、编址规则和主机之间的数据包传递途径。IP 协议与互联网层中的其他协议(路由协议、网际控制报文协议、地址解析协议等)共同完成互联网中的节点编址和数据包转发功能。

IP 协议的特点:

特点说明
面向无连接在传递数据包之前,通信双方无需就本次数据交换进行连接
不可靠IP 数据包在传输途中可能会丢失、传输无序、被人复制或者延迟到达
尽力而为IP 不负责这类错误的恢复,而是把纠错任务交给更高层协议(如 TCP 或某个应用协议),由高层确认所传输的数据包并根据需要恢复丢失的数据包

2.IP数据包由哪几部分组成?​

一个 IP 数据包(Packet)由两部分组成:

  1. IP 数据包头(首部):包含着传输该数据包所需的全部控制信息,如发送主机的源 IP 地址、接收主机的目的 IP 地址、IP 数据包总长度等
  2. IP 负载:上层递交下来的数据块,如 TCP 段或 UDP 消息

分段的前提:当上层递交下来的数据量很大且一个 IP 数据包无法承载时,就要被分段后装在多个 IP 数据包中运载。

3.IP数据包首部各字段的含义是什么?​

首部字段说明
版本规定了数据包的 IP 版本。不同的 IP 版本使用不同的数据包格式
首部长度用来确定 IP 数据包中 IP 负载(数据单元部分)实际开始位置。一般的 IP 数据包首部长度均为 20B;如果包含选项,首部长度就大于 20B
数据包长度IP 数据包的总长度(包头 + 负载),理论上最大长度为 65 535B,实际很少有超过 1500B 的
标识管理 IP 数据包的分段和重组,用来识别一个特定的分段属于哪个数据包
标志管理 IP 数据包的分段和重组,共 3 位:第 1 位保留未用;第 2 位为"不分段"位,若置 1 则该数据包不分段;第 3 位是"更多的段"位,若置 1 表明后续还有段,置 0 表示这是该数据包的最后一段
偏移字段用来确认一个段在原数据包中的位置
寿命(TTL)防止数据包在 IP 网络中无休止地循环传播。每次数据包经过一台路由器时,该字段的值减 1;如果 TTL 的值减为 0,则该数据包必须丢弃
协议仅在一个 IP 数据包到达其最终目的地才会用到。字段值用于指明 IP 数据包中的数据部分应交哪个传输层协议:值为 6 表明交给 TCP,值为 17 表明交给 UDP
源和目的地址当源主机产生一个数据包时,它在源 IP 地址字段插入自己的 IP 地址,在目的 IP 地址字段插入最终目的主机的 IP 地址。通常源主机经 DNS 查找目的主机的 IP 地址
校验和用于检查 IP 数据包头中的位错误。计算方法是:将头部的每两个字节当成一个数,用反码运算对这些数求和

记忆要点:首部长度 20B、总长最大 65 535B、TTL 逐跳减 1、协议号 6=TCP / 17=UDP。

4.什么是IP负载?​

IP 负载即运载的数据部分,是 IP 数据包中的重要组成。

  • 大多数情况下,IP 数据包中的数据部分含有要交付给目标节点传输层的报文段
  • 也可以承载其他类型的数据,如 ICMP

5.为什么要分段?IP数据包分段和重组的过程是怎样的?​

原因:IP 数据包从发送方到达目标方,中间经过的物理网络其链路承载数据包的能力不可能完全相同。

  • 以太网链路可承载不超过 1500B 的数据
  • 广域网链路只可承载不超过 576B 的数据

分段过程:对于互联几条承载能力不同链路的路由器,采用把要转发的数据包分段的方法,以适应不同链路的承载能力。

  1. 路由器从某条链路收到一个数据包,通过检查路由转发表决定出链路
  2. 如果输出端链路无法承载原数据包的长度,则将 IP 数据包中的 IP 数据部分拆成两个或多个较小的 IP 数据包(称为段)
  3. 然后向输出端链路发出这些较小的数据包

重组过程:传输层希望从网络层收到完整的未分段的数据包,因此一个数据包的分段到达目的地时,目的地主机上的 IP 层在递交给传输层之前需要重新进行组装。

分段实例:1 个 3000B 的数据包(20B 的 IP 数据包头 + 2980B 的 IP 负载)到达一台路由器,必须转发到承载能力只有 1500B 的链路上,则 2980B 数据必须分配到 3 个独立的段中。假定原始数据包的标识号为 555,则 3 个段中与分段相关的字段如下(3 个段的源和目标 IP 地址与原始数据包相同):

段IP 负载中的字节数(B)标识号偏移字段值(以 8 个字节块为单位)标志值
第 1 段14805550(插入数据开始于字节 0)1(表示后面还有)
第 2 段1480555185(插入数据开始于字节 1480,1480 = 185 × 8)1(表示后面还有)
第 3 段20555370(插入数据开始于字节 2960,2960 = 370 × 8)0(表示最后一段)

目标主机如何重组:

  1. 收到来自同一源主机的数据包时,通过检查标识号确定这些数据包是不是一个大的数据包的段
  2. 通过检查标志字段是否为 0 来确定最后一个段是否到达
  3. 偏移字段指出该段应放在原数据包的某个位置

6.什么是IP地址?如何表示?​

IP 地址也称为互联网地址或 Internet 地址。IP 协议要求接入网络中的每台主机和路由器接口具有自己的 IP 地址,这样每台主机与路由器才能发送和接收 IP 数据包。

两个重要性质:

  • IP 地址是在互联网层分配的,是一个逻辑地址
  • 它与主机和路由器接口的物理地址(如 48 位的以太网卡地址)毫无关系

地址长度:每个 IP 地址长 32 位,即 4 个字节,共有 2 的 32 次方个可能的 IP 地址;若用 1000 近似表示 1024,则约有 40 亿个不同的 IP 地址。

书写方式:按"点分十进制"方式书写,用英文句号分隔 4 个十进制数,通用格式为 w.x.y.z,其中 w、x、y、z 为任意一个值为 0~255 的十进制数,每个十进制数代表 32 位地址中的 8 位(即 1 个字节)。

换算示例:

  • 地址 192.168.3.32:192 等价于第一个字节 11000000,168 等价于第二个字节 10101000,因此二进制表示为 11000000 10101000 00000011 00100000
  • 二进制 11000001001000001101100000001001:先分割成 8 位的块 11000001 00100000 11011000 00001001,再转换为十进制 193.32.216.9

7.IP地址的结构和编址规则是什么?​

IP 地址由两部分组成:

  1. 网络号(网络 ID):表示主机所属的网络
  2. 主机号(主机 ID):表示在该网络中的主机编号

类比:类似学生的学号,例如学号 0537,"05" 表示该学生所在班级的编号,"37" 表示该学生在班级内的编号。

示例:图 4-8 中路由器连接 7 台主机,左边 3 台主机和路由器端口 IP 地址形式为 192.168.7.x(x 取 14),下面两台为 192.168.8.x(x 取 13),右上部两台为 192.168.9.x(x 取 1~3)。

  • 左边 3 台主机和路由器构成一个子网,分配网络地址 192.168.7.0
  • 同理子网 2 为 192.168.8.0,子网 3 为 192.168.9.0
  • 若某计算机 IP 地址是 192.168.7.32,则它位于左边子网,网络 ID 是 192.168.7.0,主机 ID 是 32

为子网分配网络 ID 的准则:

  1. 网络 ID 在 IP 网络中必须是唯一的
  2. 网络 ID 不能以数字 0 或 127 开头

为子网内节点分配主机 ID 的准则:

  1. 主机 ID 在一个子网内必须是唯一的
  2. 主机 ID 的各个二进制位不能全 0 或全 1

8.IP地址分为哪五类?各类有什么特征?​

互联网中的子网规模不同,既有小型局域网(LAN),也有较大广域网(WAN)。为系统地给不同大小的子网分配网络地址,IP 编址将 IP 地址分为 5 大类:A、B、C 类常用来配置子网中的主机或路由器设备;D 类为多播地址保留;E 类为试验性用途保留。

类别w 的值网络 ID 部分主机 ID 部分网络 ID 个数每个网络的主机 ID 个数
A 类1~126wx.y.z12616 777 214
B 类128~191w.xy.z16 38465 534
C 类192~223w.x.yz2 097 152254
D 类224~239多播地址(4 个高位固定为 1110)———
E 类240~255试验性用途(高位固定为 1111)———

各类地址的推导要点:

类别高位特征可用首字节网络 ID 位数主机 ID 位数
A 类最高位固定为 0;00000000 和 01111111 不能分配0000000101111110(1126),共 126 = 2 的 7 次方 − 28 位24 位
B 类两个高位固定为 101000000010111111(128191)16 位(实际用 14 位表示,2 的 14 次方 = 16 384)16 位(2 的 16 次方 − 2 = 65 534)
C 类三个高位固定为 1101100000011011111(192223)24 位(实际用 21 位,2 的 21 次方 = 2 097 152)8 位(2 的 8 次方 − 2 = 254)

为什么主机数要减 2:对任何一个网络 ID 来说,主机位全 0(表示网络本身)和主机位全 1(表示广播地址)的两个主机 ID 是保留的,不能分配给网络中主机或路由器接口,因此每个 A 类网络的主机数为 16 777 214(2 的 24 次方 − 2)。

9.什么是私有地址和特殊用途地址?​

(1)专用(私有)IP 地址

一组特定范围的 IP 地址被保留用于私有网络,用在不直接与全球互联网相连的内联网(Intranet)的主机或路由器接口中。

范围地址段对应类别
范围 110.0.0.0~10.255.255.255A 类地址全范围
范围 2172.16.0.0~172.31.255.255B 类地址
范围 3192.168.0.0~192.168.255.255C 类地址

使用原因:一般单位的网络只需要很少已注册的 IP 地址,供直接连接到 Internet 的节点(网关代理、服务器、路由器、防火墙和转换器等)使用,其他大多数主机只需通过这些节点上的网络服务软件访问 Internet。

(2)特殊用途的 IP 地址

地址名称含义与用途
0.0.0.0未指定的 IP 地址表示当前节点 IP 地址缺失。仅用作源地址:某个 IP 节点因没有配置 IP 地址,正尝试通过某个配置协议(如 DHCP)获取一个地址
127.0.0.X回送地址用于网络软件测试与自身主机进程之间通信。任何程序一旦使用回送地址作为接收数据包的目的方,则该数据包不会被传输到网络接口,而直接传递到目标应用进程
主机号部分全 1子网广播地址如目标主机 IP 地址为 192.168.7.255,则该数据包将发送给 192.168.7.0 子网上所有节点的接口,并且路由器会转发该数据包到其他子网
255.255.255.255有限广播地址所有 32 位全设为 1。用于本地子网上的"一对所有"传输,路由器在默认设置下不会转发该数据包

10.什么是子网掩码?如何用子网掩码求网络ID和主机ID?​

定义:子网掩码是为了确定一个 IP 地址中网络部分所占用的位数,即通过子网掩码来决定网络 ID 和主机 ID 各占用的位数。

构成:长度为 32 位二进制数,与网络 ID 对应的位用 1 标识,与主机 ID 对应的位用 0 标识。常用子网掩码有 255.255.255.0、255.255.0.0、255.0.0.0。

运算规则:

  1. 将子网掩码和 IP 地址按位进行逻辑"与"运算,可获取 IP 地址中的子网 ID(网络 ID)
  2. 再用子网 ID 与 IP 地址进行"异或"运算,得到主机 ID

示例 1:子网掩码 255.255.255.128,IP 地址 150.100.12.178

10010110 01100100 00001100 10110000 IP地址
11111111 11111111 11111111 10000000 子网掩码
10010110 01100100 00001100 10000000 子网ID(与运算)
0110000 主机ID(异或运算)
  • 子网 ID 为 150.100.12.128,子网 ID 占用 25 位
  • 可分配给主机的地址范围:150.100.12.129~150.100.12.254
  • 子网广播地址:150.100.12.255

示例 2:IP 地址 192.15.1.129,子网掩码 255.255.255.0

11000000 00001111 00000001 10000001 IP地址
11111111 11111111 11111111 00000000 子网掩码
11000000 00001111 00000001 00000000 子网ID(与运算)
10000001 主机ID(异或运算)
  • 子网 ID 是 192.15.1.0,子网 ID 占用 24 位
  • 可分配主机地址范围:192.15.1.1~192.15.1.254
  • 子网广播地址:192.15.1.255

另一种表示方法:子网掩码除用点分十进制表示外,还可用"IP 地址/掩码位数"方式表示。如 192.168.20.80/24 表示 IP 地址的前 24 位为网络 ID,用点分十进制表示子网掩码则是 255.255.255.0。

11.为什么要划分子网?子网编址的方法和步骤是什么?​

(1)两级地址结构存在的问题

随着接入互联网的子网规模增大,使用原始的 IP 地址结构(两级:网络 ID + 主机 ID)会出现问题。例如某大学网络拥有 64 000 台主机,如果分配了一个 B 类网络 ID(150.100.0.0),该网络可支持接入多达 65 534 个节点;但对管理员来说,管理 64 000 台主机是一件非常庞大、困难的工作。

(2)子网编址的思想

20 世纪 80 年代中期提出了"子网"地址的思想:增加一个被称为"子网"的分级层次,将组织内部的主机分成多个子网。

方法:从主机 ID 部分取出几位作为子网号,在原来 IP 地址结构的基础上增加一级子网 ID,形成三级结构:网络 ID + 子网 ID + 主机 ID。

(3)子网编址的优点

  • 对于网络外的主机或网络来说,看到的该校园网络仍是原始的 B 类地址——网络 ID 的子网划分对被划分子网的网络外面的路由器是透明的
  • 在该学校内部,管理员可以根据实际情况选择合适的子网号和主机 ID 位数

(4)实例:对 157.60.0.0/16 划分子网

某校园网已分配 B 类网络 ID 157.60.0.0/16:

  1. 未划分子网时,校园网中所有主机 IP 地址的网络 ID 均相同,主机 ID 不同,子网掩码为 255.255.0.0
  2. 从右边的 16 个主机 ID 位中划出 8 位(即 IP 地址中的第 3 个 8 位位组)用作子网号,8 位可标识 256 个子网
  3. 可用子网号创建不同子网:157.60.1.0/24、157.60.2.0/24、157.60.3.0/24,每个子网最多拥有 254 个主机号(ID)
  4. 本地路由器会识别不同的子网 ID,将 IP 数据包路由到相应的子网
  5. 划分不需要重新配置 Internet 中的路由器,只需重新配置本地路由器;Internet 中的路由器仍认为 3 个子网上所有节点都位于 157.60.0.0/16 上

(5)子网编址的方法归纳

  1. 根据组织内部网络环境,规划需要的子网数目(假设是 n)和每个子网能容纳的主机数(假设是 m)
  2. 确定子网位和子网掩码:选取一个最小的数值 b,使得 2 的 b 次方大于等于 n 成立;从主机号(从高位开始)划出 b 位作为子网 ID 部分;从左边开始将对应的网络 ID 和子网 ID 的位都设置为 1,其余位设置为 0
  3. 每个子网的主机 ID 从 0…01 到 1…10(总共为 32 减去网络 ID 位数与子网 ID 位数)

注意:在确定主机 ID 时,需要去除主机 ID 为全 0 和全 1 两种情况。

12.ICMP协议有什么作用?报文格式如何?​

网际控制报文协议(ICMP) 是 IP 协议的一部分,由 IP 数据包来承载,主要用于报告数据包无法到达目标以及对传输错误的解释信息。

典型现象:浏览网站时遇到"目标网络不可达"之类的消息,实际上表明 IP 数据包无法被传输到目标主机。

错误消息报文的字段:

字段说明
类型用于识别消息的类型,编码为 0~12。若类型为 3,说明目标端出现一个问题
代码对于一个特定的消息类型,代码字段提供进一步描述的信息
检验和用来检验 ICMP 数据包中的位错误
原始 IP 数据包引起该 ICMP 报文首次生成的 IP 数据包

类型 3 的常见代码值:

代码含义
0网络不可达
1主机不可达
4需要分段并且已设置 DF
5源路由失败

ping 命令与 ICMP:

  1. ping 命令利用 ICMP 的回复请求消息格式,向指定主机发出一个 ICMP 类型为 8、代码值为 0 的报文
  2. 接收主机收到回复请求消息后,直接向源主机回送一个对应的回复应答消息,即送回一个 ICMP 类型为 0、代码值为 0 的报文

结论:虽然 ICMP 没有使 IP 成为一个可靠的协议,但 ICMP 会尝试报告错误并在特定情况下提供反馈,因为 ICMP 消息是依靠 IP 数据包传输的。

13.ARP协议的作用和工作过程是什么?​

作用:地址解析协议(ARP)是 IP 协议中不可缺少的部分。IP 数据包最终要通过一个特定的物理网络的链路发送,不同的物理网络有自己的寻址方式和地址格式。例如,以太网的硬件只能理解它自己的 48 位 MAC 地址格式。因此,要想将数据包成功投递到目标主机,源主机必须知道目标主机的链路接口的 MAC 地址——主机采用 ARP 协议来查找目标 MAC 地址。

工作过程(设以太网中计算机 A 的 IP 地址为 192.168.0.1,要向计算机 B(192.168.0.2)发送数据包,而 A 尚不知道 B 的物理地址):

  1. A 首先广播一个 ARP 请求报文,要求目标主机回应
  2. 以太网上所有主机都会收到此分组,但只有 B 主机(通过识别目标 IP 地址是否与本机相同)响应 A 的 ARP 请求报文
  3. B 主机发出包含 B 的 MAC 地址和 IP 地址的 ARP 响应报文给主机 A
  4. A 获知 B 的物理地址后,即可向 B 发送数据包(因为封装数据包时要用到目标主机的物理地址)
  5. 为避免每次都发送 ARP 请求,A 将 B 的 IP 地址和 MAC 地址缓存在本机的 ARP 缓冲区中,以后直接从 ARP 缓冲区查找

ARP 表的特点:

  • 每台计算机中的 ARP 自动维护着一个 IP 地址和物理地址的转换表,表中保存一定数量的从 IP 地址到 MAC 地址的映射
  • ARP 表中的各个表项可能会过时,通常如果一个表项在一段时间内没有被用过,该表项就会被删除

RARP(反向地址解析协议):与 ARP 相对应,用于 MAC 地址向 IP 地址的转换,协议实现过程与 ARP 类似。

14.IP数据包的发送和接收过程是怎样的?​

假设一台客户机要将 IP 数据包发送到一台服务器,已知服务器的 IP 地址(如网站 www.sysx.edu.cn,IP 地址 229.220.243.128),IP 协议对数据包发送的处理分为两种情况。

(1)客户机和服务器在同一个子网中

  1. 首先查看本机的路由表(用 route print 命令显示),是否存在与该 IP 地址完全匹配的表项
  2. 如果有,则服务器与自己是直接连接到同一个网络上
  3. 在已知服务器 IP 地址的物理地址 MAC 的情况下,IP 数据包在其包头中附上服务器的 IP 地址和本客户机的 IP 地址后,就被传输到本机的网络接口卡(网卡),并生成以太网帧后广播到局域网
  4. 服务器的网卡捕获这些帧并对其进行检查,网卡接口获知协议类型字段值是 IP 后,将 IP 数据包上传给 IP 协议
  5. IP 协议识别出目的 IP 地址是本机的 IP 地址后,根据协议字段值把 IP 数据包中的数据部分传递给上层协议

(2)客户机和服务器不在同一个子网中

  1. 如果 IP 协议在本机路由表中查找到与服务器 IP 地址的网络部分相匹配的表项(如 219.220.243.0/24),则 IP 数据包通过该表项中指定的网关计算机来发送
  2. 如果找不到与服务器 IP 地址网络部分相匹配的表项,则继续检查表中是否有指定的默认网关,在检查不到其他可用表项时就使用该表项
  3. IP 数据包在其包头中附上服务器的 IP 地址和本客户机的 IP 地址;在获得网关的 MAC 地址后,被传输到本机网卡,生成以太网帧后广播到局域网
  4. 指定的网关计算机的网卡捕获这些帧并检查,检查协议类型字段后将 IP 数据包上传给 IP 协议
  5. 网关中的 IP 协议检查 IP 数据包后会发现目的 IP 地址不是本机,就按照路由表中的定义将 IP 数据包转发出去,IP 数据包最终被转发到服务器中

两种情况的区别:同子网时 IP 数据包直接交付给目的主机;不同子网时 IP 数据包先交付给默认网关,再由网关逐跳转发。

15.本任务概念速查表​

概念关键数据/结论
IP 首部固定长度20B
IP 数据包最大总长度65 535B
IP 地址长度32 位(4 字节)
协议字段值6 = TCP,17 = UDP
以太网 MTU1500B(广域网常用 576B)
A 类地址范围1~126,默认掩码 255.0.0.0
B 类地址范围128~191,默认掩码 255.255.0.0
C 类地址范围192~223,默认掩码 255.255.255.0
回送地址127.0.0.0/8(常用 127.0.0.1)
有限广播地址255.255.255.255
ping 使用的 ICMP 类型请求 8,应答 0
ARP 解析方向IP 地址 → MAC 地址