第5章 Internet原理与技术
1、分类的IP地址
- 把整个因特网看成为一个单一的、抽象的网络。
IP地址就是给每个连接在因特网上的主机分配一个在全世界范围内惟一的32 bit的标识符。 - IP地址采用分层的地址结构:前缀+后缀
- 前缀( network- ID,网络号部分):表示主机所属的物理网络
- 后缀( host- ID,主机号部分):用来区分物理网络内的主机
IP 地址中的网络号字段和主机号字段
A 类地址
- 网络号部分
net-id
为 8 比特, 1 字节 - 主机号字段
host-id
为 24 比特, 3 字节
B 类地址
- 网络号部分
net-id
为 16 比特, 2 字节 - 主机号字段
host-id
为 16 比特, 2 字节
C 类地址
- 网络号部分
net-id
为 24 比特, 3 字节 - 主机号字段
host-id
为 8 比特, 1 字节
D 类地址是组播地址
E 类地址保留为今后使用
点分十进制记法
主要是为了提高可读性。
常用的三种类型的IP地址
判断哪类 IP 地址的方法:根据点分十进制表示时的第一个数字判断:
- 1 ~ 126:A 类
- 128 ~ 191:B 类
- 192 ~ 223:C 类
最大网络数:根据该类地址网络号部分来计算
- A 类:网络号部分为 8 比特,开头是 0,因此最大网络数为 27 - 2
00000000 和 11111111 开头的网络不分配,因此 A 类网络数会减 2。 - B 类:网络号部分为 16 比特,开头是 10,因此最大网络数为:214
- B 类:网络号部分为 24 比特,开头是 110,因此最大网络数为:221
每个网络中最大的主机数:根据该类地址主机号部分来计算
注:在任何地址中,全0为网络地址,全1为广播地址,不分配,因此数量减 2。
- A 类:主机号字段为 24 比特,最大主机数为 224 - 2
- B 类:主机号字段为 16 比特,最大主机数为 216 - 2
- C 类:主机号字段为 8 比特,最大主机数为 28 - 2
【例】给定IP地址求网络地址
IP 地址是 202.119.230.8
的主机所在网络的网络地址是多少?
分析:
- 根据开头为 202 判断出该地址为 C 类地址。
- 对于 C 类地址来说,网络号部分是 24 位,主机号部分是 8 位;
要求的是网络地址,前 24 位保留,主机号部分则为全 0。
答案:202.119.230.0
2、IP地址的分配与使用
IP 地址是一种分等级的地址结构
- 第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
- 第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间和路由查找时间。
IP 地址是标志主机或路由器和一条网络链路的接口。
- 当一个主机同时连接到两个网络上时,该主机就必须同时具有两个IP 地址,且其网络号
net-id
必须是不同的。这种主机称为多接口主机(multihomed host)。 - 由于一个路由器至少应当连接到两个网络(这样它才能将 IP数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
【例】IP地址的分配
设某单位有3个物理网络,分别分配了三个B类IP地址(如图所示),请给图中的主机和路由器分配IP地址。
解:分别分配了 3 个 B 类 IP 地址:128.9.0.0
、128.10.0.0
、128.11.0.0
。路由器要连接两个网络号不同的IP地址。经过下一个路由器之前网络号必须相同,主机地址可以自由分配。
3、IP数据报
- 因特网的基本传送单元是IP分组(或IP数据报)。
- 一个 IP 数据报由首部(报头)和数据两部分组成。
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
- IP 数据报首部的固定部分和可选字段长度之和最大为 60 字节
- 版本:占 4 bit,指IP协议的版本
目前的 IP 协议版本号为 0100,也就是4 (即 IPv4) - 首部长度:占 4 bit,可表示的最大数值是 15 个单位(一个单位为 4 字节)
因此 IP 的首部长度的最大值是60字节。 - 服务类型:占 8 bit,用来获得更好的服务
这个字段以前一直没有被人们使用 ,通常是 00000000 - 总长度:占 16 bit,指首部和数据之和的长度,单位为字节,数据报的最大长度为 65535 字节。
总长度必须不超过最大传送单元 MTU。
- 标识、标志和片偏移这三个字段和分片相关。
- 生存期 (8 bit) 记为 TTL (Time To Live)
表示IP数据报在网络中的寿命,目前的单位是跳。 - 协议 (8 bit) 字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个协议软件处理。
- 首部检验和(16 bit)字段只检验数据报的首部,不包括数据部分。
这里不采用 CRC 检验码而采用简单的计算方法。 - 源IP地址和目的IP地址都各占 4 字节
【例】IP数据报
使用 Wireshark 采集某主机访问南邮的网站服务器时所传输的报文,其中有个数据帧的内容如下图所示(均用16进制表示),请分析该帧中封装的IP数据报中的一些关键字段:
① 数据报首部长度为多少字节?
② 数据报的总长度是多少字节?
③ 数据报的协议字段是多少,表示什么协议?
④ 源主机和目的主机IP地址分别是什么?
⑤ 已知初始TTL=64,从当前主机到南邮的网站服务器,大概经过了几台路由器的转发?
解:首先来看封装的关系,当以太网MAC帧首部中的类型字段是0800时,表示其数据部分封装的是IP数据报。
IP数据报的分片与重组
为什么要进行分片? 发送的IP数据报总长度超出了某网络的 MTU。
分片的工作由谁负责完成? 路由器。
数据报分片的重组工作由谁来负责? 由目的主机来完成分片的重组工作
如何分片? 标识、标志和片偏移这三个字段和分片相关。
目的主机能够根据分片中的源主机IP地址、标识、标志字段中的MF位以及片偏移量来重装出最初始数据报的完整副本,除非没能收齐所有分片。
在实际应用中,如果需要分片,总是希望分片的个数越少越好,又因为片偏移量是以8字节为单位,所以除了最后一个分片外,其余分片的数据部分的大小应尽量接近但不超过网络 MTU,并且是8字节的整数倍。
【例】IP数据报的分片
在下图所示的小型互联网中,主机 A 向 B 发送了一个首部 20 字节,数据部分 1400 字节,且DF
位为 0 的 IP 数据报,请问该数据报会被分片吗?如果需要分片,请写出分片结果。
解:
由于数据报首部为 20 字节,因此实际分片后的数据部分长度为 660 - 20 = 640;分片个数为 1400 / 640 = 3。
片偏移字段表示该分片的数据部分的的第一个字节原数据报中数据部分的偏移量,该字段是以8个字节为单位来计算偏移量的,因此分片1的片偏移为 0 / 8 = 0;分片2的片偏移为 640 / 8 = 80;分片3的片偏移为 1280 / 8 = 160。
MF
标志表示是否有后序分片,明显分片1和分片2的MF
位为1,分片3的MF
为为0。
4、因特网地址到物理地址的映射(地址解析协议ARP)
ARP的作用:地址解析ARP为 网络层(IP)地址 和 数据链路层(MAC)地址提供动态映射。
使用广播的方式获得物理地址
使用ARP高速缓存
- 每一个主机中都设有一个 ARP 高速缓存(ARP cache),里面存放的是最近获得的局域网上各主机和路由器的 IP 地址到硬件地址的映射表。
- 可以通过命令
arp -a
来查看本机的ARP缓存中内容
所以,当发送分组时,计算机在发送ARP请求之前总是先在 ARP缓存中寻找所需的绑定,若有,则无须广播。
但这种方法中存在一个问题:信息可以在没有任何警告的情况下变的“失效”。如何解决?
- 在协议中设置 一 计时器,典型的超时时间为20分钟,当计时器超时时则删除状态信息。
【思考题】ARP协议思考题
若想访问南京邮电大学网站,在浏览器地址栏中输入 http://www.njupt.edu.cn, 请问此时通过自己电脑中的 ARP 协议软件获得我们学校 WWW 服务器的物理地址吗?
应当注意的问题:
- ARP 是解决同一个物理网络上的主机或路由器的 IP 地址和硬件地址的映射问题。
- 从IP地址到硬件地址的解析是自动进行的,是由主机所运行的TCP/IP内核实现的,主机的用户对这种地址解析过程是不知道的。
5、因特网控制报文协议 ICMP
ICMP 背景:
ICMP 概念:
- ICMP(Internet Control Message Protocol)是因特网控制报文协议。
- ICMP 用于在IP主机、路由器之间传递控制消息。
- ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。
- ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成IP数据报发送出去。
ICMP 报文的格式:
ICMP报文种类:
- ICMP差错报告报文
- ICMP询问报文
ICM差错报告报文
- IP数据报出差错的时候,路由器或者主机会发出此类报文
- ICMP报文仅发给引起问题的数据报的源站
- 复制了产生问题的IP数据报的首部和前64比特数据
五种ICMP差错报告报文:
- 终点不可达
- 时间超过
- 源站抑制
- 参数问题
- 路由重定向
ICMP询问报文
• 用于给网络管理人员或应用程序对网络进行可达性分析、地址掩码设置、时钟同步等检测
四种ICMP询问报文
- 回送请求和回答报文
- 时间戳请求和回答报文
- 掩码地址请求和回答报文
- 路由器询问和通告报文
ICMP的应用
- ICMP协议可以实现网络可达性检查、网络时延测量、网络路由追踪、网络安全排查等方面都有重要的应用。
- Tracert(跟踪路由)基于ICMP终点不可达和时间超过差错报告报文原理实现的。
- Ping(因特网包探索器)基于ICMP询问报文类型中的回送请求和回答报文实现的。
6、子网编址
内容导入
- 因特网发展速度较快,大大超出预期;
- IP地址利用率较低;
- 在不放弃分类编址的情况下,如何适应网络增长的需要呢?
- 能不能把一个大的网络拆成若干个规模较小的网络呢?
划分子网、子网掩码
- 从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级的IP 地址变成为三级的 IP 地址。
- 使得多个物理网络可以共用一个网络前缀
- 这种做法叫作划分子网(subnetting) 。划分子网已成为因特网的正式标准协议。
默认子网掩码
A类网络:255.0.0.0
B类网络:255.255.0.0
C类网络:255.255.255.0
【例】 求子网掩码
【例】求子网地址
结论:子网地址 = 主机IP地址 & 子网掩码
广播地址
特点:主机号部分全为 1
【例】求子网掩码
分析:
若全0、全1的子网地址可以分配,则若借用 x 位进行子网划分,可以划分出2x个子网;
若全0、全1的子网地址不能分配,则若借用 x 位进行子网划分,可以划分出2x - 2个子网;
对于本题中,要划分14个子网,x=4 至少划分 24 - 2 = 14 个子网,无论哪种情况都满足需求。
因为是C类地址,所以其子网掩码是 24+4=28 比特的 1, 32-28=4 比特的 0。
答案: 255.255.255.11110000 ——> 255.255.255.240
【例】子网编址综合题
解:
根据网络地址 210.xxx 或者 子网掩码 255.255.255.xxx 可知,这是一个 C 类 网络 。
主机号部分的位数也就是子网掩码中0的个数,有6位。
每个子网中第一个可分配的IP地址:主机号部分除了最后一位为1,其余位均为0的地址;
每个子网中最后一个可分配的IP地址:主机号部分最后一位是0,其余位均为1。
可得子网1的范围是:210.10.30.0100001
~ 210.10.30.0111110
,即 210.10.30.60
~ 210.10.30.126
子网2的范围是:210.10.30.1000001
~ 210.10.30.10111110
,即 210.10.30.129
~ 210.10.30.190
广播地址就是主机号部分全为 1 ;
可得子网1的广播地址为:210.10.30.01111111
,即 210.10.30.127
可得子网2的广播地址为:210.10.30.10111111
,即 210.10.30.191
【例】子网编址综合题2
网络地址为 128.xxx,因此该地址为 B 类地址,默认子网掩码为 255.255.xxx;
由题意可知,子网掩码为 255.255.11111111.11000000
,有10个1,可知借用了10位来划分子网,由于全0全1的子网地址不分配,可以划分 210 - 2 = 1022 个子网。
根据子网掩码255.255.11111111.11000000
,最后有6个0,每个子网可以容纳 26 - 2 = 62 个主机。
7、无分类编址与CIDR
内容导入
- 因特网的发展速度太快,对地址的需求量大;
- 缺乏适合于中等大小组织所需要的网络类型;
- 即使采用划分子网的办法,对于B类地址也未能得到充分利用
- 1993年,B类网络地址空间即将耗尽;
- 因特网主干网上的路由表中的项目数增长迅速(从几千个增长到几万个);
- 推出了无分类域间路由选择(Classless Inter-Domain Routing,简称CIDR)过渡方案,一直使用到现在;
- 1993年发布的有关CIDR的RFC文档为RFC1517~ RFC1520。
CIDR地址块
应用:互联网服务提供商(Internet Service Provider),简称 ISP
- 地址块57.0.0.0/7被IANA(因特网编号管理局)分配给了亚太地区网络信息中心;
- 亚太地区网络信息中心再分成一个个地址块分配给大型ISP;
- 大型ISP再根据用户的需求划分成小块分配给单位或者小型ISP;
- 各单位再划分出大小相等或者大小不能的若干块,分配给各个物理网络。
【例】CIDR地址块最小、最大地址
题:128.14.32.0/20
表示的地址块共有多少个地址?最大和最小的地址分别是什么?
分析:因为是一个/20
的地址块,\20
表示网络部分为20位,所以主机号部分共有32-20=12位,所以地址个数是212=4096个。
主机地址全0或者全1不可用,所以可用地址为 212 - 2 = 4094 个。
【例】根据需求分配地址块
主要就是算出主机号需要多少位,然后要注意每个大学分配的地址不能重复!
A大学:申请4000个IP地址的地址块,可知主机号部分需要12位,212 = 4096 > 4000;网络前缀为 32 - 12 = 20 位;
起始地址为:202.192.00000000.0/20
,即 202.192.0.0/20
;
结束地址为:202.192.00001111.255
,即 202.192.15.255
;
8、IP分组的转发
内容导入
网络设备—路由器
- 路由器实际上就是一种通信专用的计算机,具有和计算机类似的结构。
- 每台路由器与两个或两个以上的物理网络有直接的连接。路由器的每个网络接口(network interface)都提供了双向通信,包含输入和输出端口。
- 接口:控制台接口、局域网接口、广域网接口等;
- 整个路由器结构可分为两大部分:路由选择部分和分组转发部分。
- 分组转发部分由三个部分组成:交换结构、一组输入端口和一组输出端口。
路由器的结构:
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃。
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。
直接交付与间接交付
直接交付不需要使用路由器但间接交付就必须使用路由器。
【例】判断直接交付与间接交付
如何判断源和目的是否在同一个物理网络中?
- 若采用传统的分类IP地址,可以根据分类编址规则,很容易地从目的IP地址中抽取出目的网络地址,再与本机IP地址所对应的网络地址作比较。
例如:源主机202.119.224.201
和目的主机202.119.224.8
,根据都是C类地址,两个IP地址中高24位都是一样的,很容易判断出来源和目的是属于同一个网络。 - 对于进行了子网划分或者无分类编址的网络,也是类似,仍然是根据目的IP地址、源IP地址分别和源主机所在的子网的子网掩码相与的结果是否相等来判断。
IP分组转发算法
特定主机路由、默认路由
特定主机路由:出现在路由表第一列的不是一个网络地址,而是某台主机的IP地址。
比如,在调试网络连接或路由表时,可能会需要为单个主机指定一条特殊路由。所以,特定主机路由主要用于网络测试,或者出于安全的考虑。
- 对于特定主机路由来说,在路由表中如何表示呢?
该行对应的子网掩码为255.255.255.255
默认路由:如果互联网包含的物理网络很多,让路由表包含所有网络将使路由表表项数很多,查找起来速度较慢。是把多个下一跳相同的表项合并成一个表项,即默认路由。
- 对于默认路由来说,在路由表中如何表示呢?
该行对应的子网掩码为0.0.0.0
,目的网络地址为0.0.0.0
【例】划分子网
注意审题:R1的录表结构!
子网掩码:网络号、子网号全为 1,主机号全为 0 。
解:
对于目的网络IP地址202.118.1.0
:网络前缀长度为 25;
- 求得子网掩码为
255.255.255.10000000
,即255.255.255.128
由于是直接交付,下一跳路由器IP地址无,接口为 E1
对于目的网络IP地址202.118.1.128
:网络前缀长度为 25;
- 求得子网掩码为
255.255.255.10000000
,即255.255.255.128
- 由于是直接交付,下一跳路由器IP地址无,接口为 E2
对于目的网络IP地址DNS 202.118.3.2
:视为特定主机路由
- 因此子网掩码为
255.255.255.255
,下一跳路由器IP地址为202.118.2.2
,接口为202.118.2.1
对于目的网络IP地址互联网,视为默认路由:IP地址和子网掩码都是 0.0.0.0
- 下一跳路由器IP地址为
202.118.2.2
,接口为202.118.2.1
解:
局域网1网络IP地址为 202.118.1.0
;
局域网2网络IP地址为 202.118.1.128
;
将他们不同的地方展开为二进制:202.118.1.00000000
,202.118.1.10000000
,发现是连续的;
因此可以通过路由聚合技术,聚合为 202.118.1.0
【例】路由聚合
最长前缀匹配
- 因为里面可能存在着小地址块包含在大地址块里面的情况,所以,有可能找到的匹配项不止一项。
- 在多个匹配项中,究竟应该选哪个匹配项对应的下一跳路由器进行转发呢?
- 选择网络前缀最长的匹配项,因为前缀越长,地址块中地址数量越少,这样的路由就越具体。就称为最长前缀匹配。
私有地址
- IP地址资源是有限的,为了节约地址的使用,IANA 保留了三块只能用于专用互联网内部通信的IP地址空间。
慕课作业
第一题
利用三台路由器组建校园网,当前的网络连接拓扑如题图所示。已知路由器R2的E0.4.1接口配置的IP地址是 192.168.4.1
,请回答以下问题:
(1)假设某一个用户携带笔记本电脑,想通过手动配置网络,接入到192.168.4.0/24
物理网络中,要想成功连网,则该用户允许配置的最小主机IP地址、最大主机IP地址、子网掩码和默认网关(路由器)IP地址分别是什么?(要求均用点分十进制表示)
(2)现考虑将主机H2所连网络划分成两个一样大的子网,且每个子网规模尽可能的大,且不允许使用全0和全1的子网号。请写出子网掩码,每个子网对应的子网地址和子网广播地址,以及每个子网允许接入的主机数目。
解:
(1)
根据 192.168.4.0/24
分析,有 24 位网络前缀,所以借用了 24-24 = 0位,由于是C类地址,一眼看出子网掩码为 255.255.255.0
。
默认网关题目说是路由器,由于接入到 192.168.4.0/24
物理网络中,并且已知路由器R2的E0.4.1接口配置的IP地址是 192.168.4.1
,直接看出默认网关为 192.168.4.1
。
想要成功联网,网络前缀要一样,由于路由器R2的IP地址 192.168.4.1
,因此最小主机IP地址为 192.168.4.2
;最大主机IP地址为 192.168.4.254
(去掉全1)。
(2)
192.168.5.100
是个C类地址,划分两个子网(不能全0和全1),借用2位主机位,前26位为1,子网掩码为 255.255.255.11000000
,即 255.255.255.192
。
子网地址中高 24 位为网络号,肯定是 192.168.5
,子网地址中主机号部分全为 0,由于不允许使用全0和全1的子网号,子网号要么01
,要么10
。
广播地址 即 主机号全为1。
子网1的子网地址:192.168.5.01000000
,即 192.168.5.64
;
子网1的广播地址:192.168.5.01111111
,即 192.168.5.127
;
子网2的子网地址:192.168.5.10000000
,即 192.168.5.128
;
子网2的广播地址:192.168.5.10111111
,即 192.168.5.191
;
因为主机号部分的位数也就是子网掩码中0的个数,有6位。
每个子网允许接入的主机数目:26 - 2 = 62 个(全0和全1的主机地址始终不分配)
第二题
某公司网络如题4-4图所示,IP地址空间202.119.5.0/24
已经被平分给研发部和市场部两个子网(全0和全1的子网地址可以使用),并已经分别为两个子网内若干台主机分配了IP地址,路由器两个接口 F0 和 F1 的IP地址分别是202.119.5.1
和202.119.5.254
,研发部子网的MTU=1500字节,市场部子网的MTU=820字节。请回答下列问题:
(1)研发部子网和市场部子网的子网地址、广播地址分别是什么?
(2)若每台主机仅分配一个IP地址,则研发部子网还能再连接多少台主机?
(3)若研发部某主机202.119.5.2
向市场部某主机202.119.5.200
发送一个总长度是1500字节(首部长度20字节)的IP分组,则在路由器处会分成几个分片?并写出每个分片的片偏移字段的值以及数据部分的长度。
解:
(1)
由于IP地址空间202.119.5.0/24
被平分给两个子网(全0和全1也可以用),所以从主机号借了1位(因为全0和全1可以使用,所以划分的就是全0和全1),子网掩码为255.255.255.10000000
,即 255.255.255.128
。
根据图上的研发部已分配地址:202.119.5.2
— 202.119.5.20
,可得:
研发部子网地址:202.119.5.00000000
,即 202.119.5.0
;
研发部广播地址,主机号全为1:202.119.5.01111111
,即 202.119.5.127
;
根据图上的市场部已分配地址:202.119.5.129
— 202.119.5.200
,可得:
市场部子网地址:202.119.5.10000000
,即 202.119.5.128
;
市场部广播地址,主机号全为1,:202.119.5.11111111
,即 202.119.5.255
;
(2)
研发部子网可分配IP地址的范围是:202.119.5.1
— 202.119.5.127
,每台主机1个IP,则总共127台;
根据图上的研发部已分配地址:202.119.5.2
— 202.119.5.20
,已分配了19台,可得:
研发部子网还能连接 127 - 19 = 108 台。
(3)
由于研发部的MTU=1500字节,所以不会分片。
市场部MTU=820字节,由于首部长度为20字节,因此实际分片后的数据部分长度为 820 - 20 = 800 字节;分片个数为 1500 / 800 向上取整为 2;
分片1:
片偏移:0 / 8 = 0;数据部分的长度:800字节;MF = 1。
分片2:
片偏移:800 / 8 = 100;数据部分的长度:700字节;MF = 0。