第四章 网络层
第四章 网络层
1. 概述
- 网络层提供的服务是最大努力交付,也就是不可靠交付,存在 丢失 乱序 重复的问题
- 网络层向运输层提供的两种服务:
- 虚电路服务(面向连接的)
- 数据包服务(面向无连接的)
2. 网络层协议
- 网际协议IP
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
1.IP协议
IP包=包首部+数据部分
包首部=固定部分(20字节)+可变部分(40字节)
ip包首部
-
首部=固定部分+可变部分
-
固定部分(20字节) 核心字段:
-
版本:用于指定是哪个版本。版本有 IPV4版本 和IPV6版本两种,主要是Ipv4版本
-
首部长度:占有4个二进制位。单位是 4字节。二进制最大是值是 15,故首部长度最大值是(215-1)*4=60字节。
- 首部长度值得是 固定部分和 可变部分之和。多以首部可变部分最大是40字节
-
区分服务:设置了区分服务的数据包可让路由器 优先转发
-
总长度:是 数据部分 和 首部之和。16个二进制位 ,单位是字节。最大是216-1=65535字节
- 虽然一个IP包的大小最大是 65535字节,但规定最大传输单元MTU值是1500字节。如果一个ip包 的大小超过了 1500字节,需要分片
-
标识:一个包被分割成多片,每个片有相同的标识符。通过标识符可以确定 一个包有那些分片
-
标志:共有三个二进制位:
- 第一位:保留为 ,目前没有用
- 第二位: Don't Fragment :是否允许分片 。1标识不允许分片 ,0标识允许分片传输
- 第三位: more Fragment: 0标识是 某个数据包的最后一片内容 1 标识后边还有某个数据包的片
-
片偏移:单位是 8字节。较长的包在分片后,当下片在原数据包中的相对位置
-
生存时间:英文名称,TTL。数据包还可以跨过的路由器数。每当数据包跨过一个路由器,这个值会减一,当为0的时候,该数据包就会被路由器遗弃。
-
协议:指出数据包携带的数据使用的是何种协议。以便目的主机的网络层知道 该将数据部分上交给哪个处理进程。
-
每个协议都有一个对应的数值
-
-
首部校验和:只校验Ip包的首部,不校验 数据部分。
- 由于 数据包 每经过一个路由器 ttl都会发生变化,需要重新校验,不校验 数据部分是为了减轻计算工作量
-
-
数据包的可变部分:
- ip包的固定首部是20字节,ip包的最大长度是60字节。可变部分最大也就是40字节
- 一个以太网帧的大小 最小是46字节。ip包的可变部分作用之一就是 当数据包的大小不满足以太网最短帧的要求的时候 补够46字节
-
数据包分片
一个数据包的 首部是20字节,数据部分是 3800字节。超过了 MTU的限制,所以,需要分片。
数据部分 总共3800字节。
- 第一个片 :0-1399 偏移值是0/0=0
- 第二个片: 1400-2799 。偏移值 : 1400/8=175
- 第三个片: 2800-3800 。片便宜:2800/8=350
分成的三个小数据包的情况如下
分成的三个小数据包的情况如下
2. ICMP协议
- ICMP网际控制报文协议
- 通过ICMP传输控制消息,控制消息是指网络通不通,目的主机是否可达,路由是否可用等网络本身的消 息。
-
通常被ip层或者跟高层协议使用,也可利用ICMP把差错报文传递给用户进程。
-
ICMP报文类型
- Icmp请求报文 利用 ping命令发出请求,发出的就是 ICMP请求报文
- ICMP响应报文 ping命令返回的相应就是 ICMP相应报文
- ICMP差错报告报文
- 终点不可到达 当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。
- 源点抑制 当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应当降低数据包的发送速率。
- 时间超时 当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把己收到的数据报片都丢弃,并向源点发送时间超过报文。
- 参数问题当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向)路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
-
ICMP报文格式:
-
ICMP报文是在IP数据包内部被传输的,作为ip数据包的数据部分。
-
ICMP报文的首部是固定的8个字节
-
ICMP报文的数据部分是 要通知主机所发的IP包首部以及IP数据包的前8个字节
-
-
ICMP报文的应用:
- ping(分组网间探测):
- 发送的是ICMP请求报文
- 相应的是ICMP相应报文
- 用于测试目的主机或路由器的连通性
- 是应用层 直接使用网络层,中间没有经过传输层
- traceroute(跟踪路由)
- 用于跟踪 源主机到达目的主机 需要经过哪些路由器
- ping(分组网间探测):
3. IGMP
IGMP网际组管理协议 适用于管理多播组成员的一种通信协议
组播方式解决了单播情况下数据的重复拷贝及带宽的重复占用,也解决了广播方式下带宽资源的 浪费
工作两个阶段:
- 第一阶段:当某个主机加入新的多播组时,该主机应向本地的多播路由器收到 IGMP 报文后 IGMP报文,声明自己要成为该组的成员。
- 第二阶段:本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员。
4. ARP
ARP:地址解析协议:在网络层 根据ip地址解析对应的MAC地址
工作过程:首先在arp缓存中查找 有没有对应的mac地址,如果没有则发送arp报文,请求对应的mac地址,等相应报文返回mac地址之后,再把结果保存到arp缓存中,以便下次直接使用。
5.RARP
RARP:逆地址解析协议 根据mac地址解析对应的ip地址
3. IP地址以及子网划分
-
ip地址:使用ip地址,免去了异构网络通信需要硬件地址转换的繁琐工作。
-
ip地址和mac地址
-
ip地址属于网络层以上使用的地址,决定了分组最终的目的地址。
-
mac层属于数据链路层使用的地址,决定了分组在转发过程中下一跳的地址
在数据包 转发的过程中 ,源ip地址 和目标ip地址 一直没有在边 还是最初的内容,而目标mac和源mac地址一直在变化
-
-
ip地址 分类:
-
A类地址
- 网段号占据 8位 ,其中第一位是0
- 网段号的最小值:0000 0001十进制的1 。(网段为0的不能用 ,有特殊用途)
- 网段号最大值是 0111 1110 ,十进制的126。(网段为 0111 1111 十进制的127用于测试用途 )
- 主机号是后24位
- 任意类型的ip地址 ,主机号 全为0和全为1的主机号都不能用
- 可用的总共的主机号:265265265-2
- 网段号占据 8位 ,其中第一位是0
-
B类地址
- 网段号 占据 前16位 。前2位固定 是10
- 前八位网段号 范围: 最小 1000 0000 十进制128 最大 1011 1111 十进制 191
- 后八位网段号 : 最小0 ,最大255
- 主机号 :256*256-2
- 网段号 占据 前16位 。前2位固定 是10
-
C类地址
- 网段号: 占据前24位,前3位是固定的110
- 网段号的前八位范围: 最小 1100 0000 192;最大:1101 1111 223
- 中间八位网段号 和 最后八位网段号 范围 0-255
- 网段号: 占据前24位,前3位是固定的110
-
D类地址
32位地址 ,前四位固定第 1110。用于多播地址 ,没有子网掩码
网段号 前8位 最小是 1110 0000 224 ;最大是 1110 1111 239
-
E类地址
保留地址 目前还没有使用
-
-
子网掩码:
- 用于求 某个ip地址的网络号 或者判断两个ip地址是否属于同一个网段
- 32位,也是点10进制表示,1代表的是网络为,0代表的是主机位
-
CIDR(无分类域间路由选择):
- 128.14.35.7/20 20:代表网络位是前20位 也就是 子网掩码的前20位是1 后12位是0,20被称作网络前缀
- 目的:为了更有效的划分ipv4空间。
- 用途:实现路由聚合 简化路由表项
-
构造超网:
- 合并网段 实际的网络位比标准的网络位短,子网掩码向左移动
- 不是所有的网段都可以实现合并
-
划分子网:
- 不是所有的子网都可以成功划分
- 子网掩码向右移动
-
LVSM(定长子网掩码 Fixed Length Subnet Mask)
-
VLSM(变长的子网掩码 Variable Length Subnet Mask)
4. 路由算法
静态路由:由人手动设置路由表项
动态路由:通过路由算法 来自动生成路由表项
AS(自治系统):将因特网划分成多个AS,每个AS内部的路由器运行同样的路由选择协议。
-
自治系统 之间 的路由选择简称为 域间路由选择(EGP external group protocol ,也称作外部网关协议)
-
自治系统 内部 的路由选择简称为 域内路由选择(IGP internal group protocol 也称作内部网协议)
-
路由算法分类:
IGP(内部网关协议):
- RIP
- OSPF
EGP(外部网关协议)
- BGP
RIP
RIP(路由信息协议)
- 二个要点
- 和谁交换:仅和自己的邻居交换信息
- 交换什么:交换的是路由表
- 基于距离向量的算法 。距离 使用条数来衡量到达目的网络的距离(距离实际就是经过路由器的数量)
- 一条路径 最多包含15个路由器
- 距离等于16认为不可达
- 好路由就是:经过路由器数量少的路径
- 优点:实现简单 开销小
- 缺点 :
- 有路由环路的问题
- 解决:限制最大距离为15(16不可达);触发更新,而不是周期更新;
- rip限制额网络规模 ,最大距离不超过15
- 有路由环路的问题
- 适用于:小规模的网络
2. OSPF
开放路径最短优先算法(Open Shortest Path First)
- 开放:公开的算法
- 最短优先:使用了迪杰特斯拉算法
- 基于链路状态的
- 链路状态:本路由器和那些路由器相连,以及这些链路的代价
- 使用了地接特斯拉算法 ,不会出现路由环路的问题
- 链路状态公告:
- 本路由器和那些网段相连
- 本路由器和哪些路由器相连
- 收敛速度快
- 可用于大规模的网络
3.OSPF和RIP的比较:
- ospf是基于链路状态的,rip是基于距离适量的
- ospf没有路由环路的问题,rip有路由环路的问题
- ospf适合大规模的网络,rip适合小规模的网络
- ospf收敛的速度快,rip收敛的速度慢
4.BGP
边界网关协议:不同自治系统之间的路由协议
由于各个自治系统内部 衡量代价不同,无法找出最右路径,只能找到一条合适 不成环 的路由。
- rip协议使用udp
- ospf直接使用ip协议
- bgp使用的是tcp协议
考题
1.试说明 IP 地址与硬件地址的区别。为什么要使用这两种不同的地址?
解:1. 从层次的角度看,硬件地址(或物理地址)是数据链路层和物理层使用的地址;IP 地 址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地 址是用软件实现的)。
2.由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互 相通信就必须进行非常复杂的硬件地址转换工作,而统一的 IP 地址可以解决这个复杂的问 题,可以使这些开起来好像是一个统一的网络。
2.IP 数据报中的首部校验和并不校验数据报中的数据。这样做的最大好处是什么? 坏处是什么?
解:好处:可减小计算的工作量,加快检验的过程,使分组转发更快。 坏处:数据部分出现错误不能被及早发现
3.当某个路由器发现一 IP 数据报的检验和有差错时,为什么采取丢弃的办法而不 是要求源站重传此数据报?计算首部校验和为什么不采用 CRC 检验码?
解:1.IP 首部中的源地址也可能变成错误的,要求错误的源地址重传数据报是没有意义的。2.为了进一步减小计算的工作量
4.什么是最大传送单元 MTU?它和 IP 数据报首部中的哪个字段有关?
解:1.MTU 指数据链路层协议规定的一个数据帧中数据字段的最大长度。 2.“总长度”,若所传送的数据报长度超过 MTU 值,必须分片处理。
5 在互连网中将 IP 数据报分片传送的数据报在最后的目的主机进行组装。还可以 有另一种做法,即数据报片通过一个网络就进行一次组装。试比较两种方法的优缺点。
解:在目的站进行组装的原因:路由器处理数据报更简单; 并非所有的数据报片都会经过同样的路由器,故在中间路由器组装可能缺少若干数据报片;
6.链路层广播和IP 广播有何区别?
解答:链路层广播是用数据链路层协议,在一个以太网上实现的对该局域网上的所有主机的 MAC 进行广播。
IP广播则是用 IP 协议(在第三层),通过因特网实的对一个网络(即的网络)上的所有主机的IP数据报广播。
7 主机在接收一个广播或多播时,其 CPU 所要做的事情有何区别?
解答:在接收广播时,网卡无条件接收每一个广播然后将其传递给操作系统。CPU 执行协议软件,并界定是否接受和处理该帧。
在接收多播帧时,凡与多播地址表不匹配的帧都会被丢弃,是网卡而不是CPU 决定是否接收一个帧
8在因特网中最常见的分组长度大约是多少个字节?
解答:使用以太网是和因特网相连的最常用的局域网,而以太网的数据字段最多只允许装入1500 字节。因此在因特网上传送的分组长度一般都不会超过 1500 字节。
9问题 4-29.P 数据报的首部的大度多少个字节?典型的 P 据报部是多长?
解答:IP 数据报首部中有一个首部长度字段,4 位长,可表示的大十进制数字是 15.因此首部长度的最大值是 15 个4 字节长的字,即60 字节。典型的 IP 数据报不使用首部中的选项,因此典型的 P 数据报首部度是20 字节
10.IP 数据报在传输的过程中,其首部长度是否会发生变化?
解答:不会。但首部中某些字段(如志、生存时间首部验和等)的数值一般都要发生变化。
11.作为中间设备,转发器、网桥、路由器和网关有何区别?
解答:
(1)物理层使用的中间设备叫做 转发器。
(2)数据链路层使用的中间设备叫做网桥或桥接器
(3)网络层使用的中间设备叫做路器。(4)在网络层以上使用的中间设备叫做网关 ,用网关连接两个不兼容的系统需要在高层进行协议的转换, 现在用路由器代替网关。
12试简单说明下列协议的作用:IP,ARP,RARP 和ICMP。
解答: 网际协议 IP:使用 IP 协议就可以把现实异构的网络 ,在逻辑上看来像是一种同一的网络。
地址解析协议ARP :用来把一个ip地址 转换为对应的的物理地址
逆地址解析协议 RARP: 和ARP相反 把物理地址转换为相应的ip地址
网际控制报文协议 ICMP,用来使主机或路由器报告差错情况和提供有关异常情况的报告。
13. IGP 和 EGP 这两类协议的主要区别是什么?
解答:IGP 是内部网关协议,即在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。如RIP 和 OSPF协议。
EGP是外部网关协议。若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议),当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。目前使用最多的外部网关协议是BGP
14.简述 RIP OSPF BGP协议的要点
- RIP:路由信息协议 ,基于距离矢量的
- 和自己的邻居交换信息
- 交换的信息是 自己的路由表
- 定期交换 ,每间隔三十秒就交换一次
- OSPF:开源最短路径有限协议,基于链路状态的
- 向自治系统中的所有路由器发送消息,通过泛洪方式发送 (路由器通过所有输出端口向相邻的路由器发送消息,而相邻路由器继续如此 泛洪,则所有路由器将得到信息)
- 交换的是链路状态
- 只有链路状态发生变化的时候,路由器才会向相邻路由器通过 泛洪发送此消息
- BGP:不同自治系统之间的路由协议,
- 自治系统度量代价不同,无法找到最右的路径,只能找到一条比较好的路由(不成环)
- 自治系统之间交换的信息 是可达或者不可达 例如 告知相邻路由器 到达目的网络 课经过自治系统ASx
15 RIP 使用UDP,OSPF 使用 IP,而BGP 使用 TCP这样做有何优点?为什么RIP 周期性地和邻站交换路由信息而 BGP却不这样做?
解答:
RIP 只和邻站交换信息,UDP 虽不保证可靠交付,但 UDP 开销小,可以满足 RIP 的需要
OSPF 使用可靠的洪泛法,并直接使用 IP,好处是灵活性好和开销更小。
BGP需要交换整个的路表(在开始时)和更新信息,TCP 提供可付以减少带宽的消耗。
RIP 使用不保证可靠交付的 UDP,因此必须不断地(周期性)和交信息才能使路由信息及时得到更新。但 BGP 使用保证可靠交付的 TCP,因此不需要这样做
16.NAT NAPT VPN
- NAT 网络地址转换 ,NAPT网络端口转换,通过NAT或者NAPT可以使专用网用户(使用的是私有ip地址)可以和intel网连接
- VPN 虚拟专用网,利用因特网作为载体,使分布在不同地点的主机能够像在一个专用网那样通信
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南