任务二 IP协议
知识点
1.IP协议在TCP/IP中的地位和特点是什么?
IP 协议是互联网层中的核心协议,主要涉及互联网上的数据包格式、编址规则和主机之间的数据包传递途径。IP 协议与互联网层中的其他协议(路由协议、网际控制报文协议、地址解析协议等)共同完成互联网中的节点编址和数据包转发功能。
IP 协议的特点:
| 特点 | 说明 |
|---|---|
| 面向无连接 | 在传递数据包之前,通信双方无需就本次数据交换进行连接 |
| 不可靠 | IP 数据包在传输途中可能会丢失、传输无序、被人复制或者延迟到达 |
| 尽力而为 | IP 不负责这类错误的恢复,而是把纠错任务交给更高层协议(如 TCP 或某个应用协议),由高层确认所传输的数据包并根据需要恢复丢失的数据包 |
2.IP数据包由哪几部分组成?
一个 IP 数据包(Packet)由两部分组成:
- IP 数据包头(首部):包含着传输该数据包所需的全部控制信息,如发送主机的源 IP 地址、接收主机的目的 IP 地址、IP 数据包总长度等
- 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 的数据
分段过程:对于互联几条承载能力不同链路的路由器,采用把要转发的数据包分段的方法,以适应不同链路的承载能力。
- 路由器从某条链路收到一个数据包,通过检查路由转发表决定出链路
- 如果输出端链路无法承载原数据包的长度,则将 IP 数据包中的 IP 数据部分拆成两个或多个较小的 IP 数据包(称为段)
- 然后向输出端链路发出这些较小的数据包
重组过程:传输层希望从网络层收到完整的未分段的数据包,因此一个数据包的分段到达目的地时,目的地主机上的 IP 层在递交给传输层之前需要重新进行组装。
分段实例:1 个 3000B 的数据包(20B 的 IP 数据包头 + 2980B 的 IP 负载)到达一台路由器,必须转发到承载能力只有 1500B 的链路上,则 2980B 数据必须分配到 3 个独立的段中。假定原始数据包的标识号为 555,则 3 个段中与分段相关的字段如下(3 个段的源和目标 IP 地址与原始数据包相同):
| 段 | IP 负载中的字节数(B) | 标识号 | 偏移字段值(以 8 个字节块为单位) | 标志值 |
|---|---|---|---|---|
| 第 1 段 | 1480 | 555 | 0(插入数据开始于字节 0) | 1(表示后面还有) |
| 第 2 段 | 1480 | 555 | 185(插入数据开始于字节 1480,1480 = 185 × 8) | 1(表示后面还有) |
| 第 3 段 | 20 | 555 | 370(插入数据开始于字节 2960,2960 = 370 × 8) | 0(表示最后一段) |
目标主机如何重组:
- 收到来自同一源主机的数据包时,通过检查标识号确定这些数据包是不是一个大的数据包的段
- 通过检查标志字段是否为 0 来确定最后一个段是否到达
- 偏移字段指出该段应放在原数据包的某个位置
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 地址由两部分组成:
- 网络号(网络 ID):表示主机所属的网络
- 主机号(主机 ID):表示在该网络中的主机编号
类比:类似学生的学号,例如学号 0537,"05" 表示该学生所在班级的编号,"37" 表示该学生在班级内的编号。
示例:图 4-8 中路由器连接 7 台主机,左边 3 台主机和路由器端口 IP 地址形式为 192.168.7.x(x 取 14),下面两台为 3),右上部两台为 192.168.8.x(x 取 1192.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 的准则:
- 网络 ID 在 IP 网络中必须是唯一的
- 网络 ID 不能以数字 0 或 127 开头
为子网内节点分配主机 ID 的准则:
- 主机 ID 在一个子网内必须是唯一的
- 主机 ID 的各个二进制位不能全 0 或全 1
8.IP地址分为哪五类?各类有什么特征?
互联网中的子网规模不同,既有小型局域网(LAN),也有较大广域网(WAN)。为系统地给不同大小的子网分配网络地址,IP 编址将 IP 地址分为 5 大类:A、B、C 类常用来配置子网中的主机或路由器设备;D 类为多播地址保留;E 类为试验性用途保留。
| 类别 | w 的值 | 网络 ID 部分 | 主机 ID 部分 | 网络 ID 个数 | 每个网络的主机 ID 个数 |
|---|---|---|---|---|---|
| A 类 | 1~126 | w | x.y.z | 126 | 16 777 214 |
| B 类 | 128~191 | w.x | y.z | 16 384 | 65 534 |
| C 类 | 192~223 | w.x.y | z | 2 097 152 | 254 |
| D 类 | 224~239 | 多播地址(4 个高位固定为 1110) | — | — | — |
| E 类 | 240~255 | 试验性用途(高位固定为 1111) | — | — | — |
各类地址的推导要点:
| 类别 | 高位特征 | 可用首字节 | 网络 ID 位数 | 主机 ID 位数 |
|---|---|---|---|---|
| A 类 | 最高位固定为 0;00000000 和 01111111 不能分配 | 00000001 | 8 位 | 24 位 |
| B 类 | 两个高位固定为 10 | 10000000 | 16 位(实际用 14 位表示,2 的 14 次方 = 16 384) | 16 位(2 的 16 次方 − 2 = 65 534) |
| C 类 | 三个高位固定为 110 | 11000000 | 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)的主机或路由器接口中。
| 范围 | 地址段 | 对应类别 |
|---|---|---|
| 范围 1 | 10.0.0.0~10.255.255.255 | A 类地址全范围 |
| 范围 2 | 172.16.0.0~172.31.255.255 | B 类地址 |
| 范围 3 | 192.168.0.0~192.168.255.255 | C 类地址 |
使用原因:一般单位的网络只需要很少已注册的 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。
运算规则:
- 将子网掩码和 IP 地址按位进行逻辑"与"运算,可获取 IP 地址中的子网 ID(网络 ID)
- 再用子网 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:
- 未划分子网时,校园网中所有主机 IP 地址的网络 ID 均相同,主机 ID 不同,子网掩码为
255.255.0.0 - 从右边的 16 个主机 ID 位中划出 8 位(即 IP 地址中的第 3 个 8 位位组)用作子网号,8 位可标识 256 个子网
- 可用子网号创建不同子网:
157.60.1.0/24、157.60.2.0/24、157.60.3.0/24,每个子网最多拥有 254 个主机号(ID) - 本地路由器会识别不同的子网 ID,将 IP 数据包路由到相应的子网
- 划分不需要重新配置 Internet 中的路由器,只需重新配置本地路由器;Internet 中的路由器仍认为 3 个子网上所有节点都位于
157.60.0.0/16上
(5)子网编址的方法归纳
- 根据组织内部网络环境,规划需要的子网数目(假设是 n)和每个子网能容纳的主机数(假设是 m)
- 确定子网位和子网掩码:选取一个最小的数值 b,使得 2 的 b 次方大于等于 n 成立;从主机号(从高位开始)划出 b 位作为子网 ID 部分;从左边开始将对应的网络 ID 和子网 ID 的位都设置为 1,其余位设置为 0
- 每个子网的主机 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:
ping命令利用 ICMP 的回复请求消息格式,向指定主机发出一个 ICMP 类型为 8、代码值为 0 的报文- 接收主机收到回复请求消息后,直接向源主机回送一个对应的回复应答消息,即送回一个 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 的物理地址):
- A 首先广播一个 ARP 请求报文,要求目标主机回应
- 以太网上所有主机都会收到此分组,但只有 B 主机(通过识别目标 IP 地址是否与本机相同)响应 A 的 ARP 请求报文
- B 主机发出包含 B 的 MAC 地址和 IP 地址的 ARP 响应报文给主机 A
- A 获知 B 的物理地址后,即可向 B 发送数据包(因为封装数据包时要用到目标主机的物理地址)
- 为避免每次都发送 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)客户机和服务器在同一个子网中
- 首先查看本机的路由表(用
route print命令显示),是否存在与该 IP 地址完全匹配的表项 - 如果有,则服务器与自己是直接连接到同一个网络上
- 在已知服务器 IP 地址的物理地址 MAC 的情况下,IP 数据包在其包头中附上服务器的 IP 地址和本客户机的 IP 地址后,就被传输到本机的网络接口卡(网卡),并生成以太网帧后广播到局域网
- 服务器的网卡捕获这些帧并对其进行检查,网卡接口获知协议类型字段值是 IP 后,将 IP 数据包上传给 IP 协议
- IP 协议识别出目的 IP 地址是本机的 IP 地址后,根据协议字段值把 IP 数据包中的数据部分传递给上层协议
(2)客户机和服务器不在同一个子网中
- 如果 IP 协议在本机路由表中查找到与服务器 IP 地址的网络部分相匹配的表项(如
219.220.243.0/24),则 IP 数据包通过该表项中指定的网关计算机来发送 - 如果找不到与服务器 IP 地址网络部分相匹配的表项,则继续检查表中是否有指定的默认网关,在检查不到其他可用表项时就使用该表项
- IP 数据包在其包头中附上服务器的 IP 地址和本客户机的 IP 地址;在获得网关的 MAC 地址后,被传输到本机网卡,生成以太网帧后广播到局域网
- 指定的网关计算机的网卡捕获这些帧并检查,检查协议类型字段后将 IP 数据包上传给 IP 协议
- 网关中的 IP 协议检查 IP 数据包后会发现目的 IP 地址不是本机,就按照路由表中的定义将 IP 数据包转发出去,IP 数据包最终被转发到服务器中
两种情况的区别:同子网时 IP 数据包直接交付给目的主机;不同子网时 IP 数据包先交付给默认网关,再由网关逐跳转发。
15.本任务概念速查表
| 概念 | 关键数据/结论 |
|---|---|
| IP 首部固定长度 | 20B |
| IP 数据包最大总长度 | 65 535B |
| IP 地址长度 | 32 位(4 字节) |
| 协议字段值 | 6 = TCP,17 = UDP |
| 以太网 MTU | 1500B(广域网常用 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 地址 |