网络层
网络层中的协议主要包括:IP、ARP、ICMP、IGMP等,其中有些参考书将ARP协议归为数据链路层,将IGMP协议归为传输层,原因在于这两个协议均是处理两个层级之间的协议,此处笔者将他们归为网络层,从图1可以看出其大致关系。
图1 网络层各协议的关系
IP协议
-
IP(Internet Protocol, 网际协议),不可靠、无连接的协议。
-
IP 三大作用
- IP寻址
- 路由选择
- IP分包和组包
-
IP首部格式(20~60字节)
- 版本:目前为4,即 IPv4。
- 首部长度:单位为4字节,首部长度设为 ”5“, 即IP首部长度为20字节.
- 服务类型(Type Of Service, TOS):用来表明服务质量,包括服务优先度、最低延迟等。
- 总长度(Total Length):表示IP首部与数据部分合起来的总字节数,该字段长16位,因此IP包的最大长度为 2 ^16 -1=65535 字节。
- 标识(ID: Identification):用于分片重组,是一个计数器,用来产生数据包的标识,不是序号,每产生一个数据包,就加1。
- 标志(Flags):表示包被分片的相关信息。
- 片偏移(FO: Fragment Offset):用来表示备份篇的每一个分段相对于原始数据的位置。
- 生存时间(Time To Live, TTL):记录中转的路由器个数,没经过一个路由器,TTL减少1,直到变成0,则丢弃改包。
- 协议:表示的是上层协议编号,根据它可以识别是哪个协议向IP传送数据。
- 首部校验和:根据IP首部计算的检验和码,只校验数据报的首部,不校验数部分。
- 源IP地址、目的IP地址

图2 IP首部格式
-
IP数据包传输时两种情况
- 若源主机和目的主机直接相连(如点对点链路),或是在一个共享网络上(在同一个网段), 那么IP数据报直接被发送到目的主机上;
- 若源主机和目的主机在两个不同的网段,则主机把数据报发给一个默认的路由器(通过路由控制表查询获得)上,再由路由器转发该数据报,直到发送到目的主机。
-
IP路由选择
-
路由控制表
-
记录着网络地址和下一步应该发送至路由器的地址,换句话说,通过查询该表可以指明数据包下一步发往哪个路由器。
-
路由表信息(如图3所示,来源于公众号 “小林coding”)每一条都包含如下信息:
-
Destination: 目的网段
-
Gateway: 网关地址(路由器的IP地址), 要想到达目的网段,需要先到此网关。
-
Genmask: 目的地址的子网掩码
-
Iface: 接口,去往目的地址的网络路径的出口

图3 路由表
-
-
-
从路由表中选择下一跳(以上图为例,假设目标IP地址为
192.168.10.200)- step1: 将目标IP地址
192.168.10.200与路由表条目1中的子网掩码(Genmask)与运算,得到的结果为192.168.10.0, 但是条目1的目的网段(Destination)192.168.3.0不匹配。 - step2: 再将
192.168.10.200与条目2中的子网掩码(Genmask)与运算,得到的结果为192.168.10.0,与条目2的目的网段192.168.10.0匹配,则选择下一条选择该接口(eth1) - 此外,条目3较特殊,其目的地址和子网掩码都是
0.0.0.0,表示默认网关,如果其他条目都无法匹配,就会自动匹配这一条目。
- step1: 将目标IP地址
-
-
IP分片(IP Fragmenttation)与重组
-
MTU(Maximum Transmission Unit,最大传输单元)
-
MSS(Maximum Segment Size,最大报文段长度)

图4

图5 IP分片和重组过程
-
-
IP地址标识及分类
- IP地址标识(由32位表示)
- 由网络标识(网络地址)和主机标识(主机地址)两部分组成
- 例如:
192.168.128.10/24, 其中的 ”/24“ 表示前24位表示网路标识。现在基本上以子网掩码(网络前缀)来区分网络标识的个数。
- IP地址分类
- A类:首位以”0“开头,前8位为网络标识
- B类:前两位以”10“开头,前16位为网络标识
- C类:前三位以”110“开头,前24位为网络标识
- D类:前四位以”1110“开头,32为全是网络标识,常被用于广播

图6 IP地址分类

图7 按照开头8位值来区分IP地址分类
- IP地址标识(由32位表示)
-
子网掩码
- 使用前述几类IP地址中的主机地址的一部分作为子网号
-
子网掩码(32为位)前多少位为1,表示前多少位相当于是总的网络号

图8 两种不同的B类地址子网掩码的例子- 可以通过变长或是变短来分隔或是合并子网

图9 变长子网
- 可以通过变长或是变短来分隔或是合并子网
ARP协议
-
ARP(Address Resolution Protocol, 地址解析协议),以目标IP地址为线索,来定位下一个应该接受数据包的网络层设备的MAC地址。
-
ARP借助ARP请求和ARP响应两种类型的包确定MAC地址。
-
ARP工作机制
- 如图10所示,在同一链路层上的主机A向主机B发送数组,主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包(包含有主机B的IP地址),当主机B发现请求包中的IP地址与自己的一致,则主机B将自己的MAC地址塞入APR响应包发送回主机A。
图10

图11 APR工作过程
- 如图10所示,在同一链路层上的主机A向主机B发送数组,主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包(包含有主机B的IP地址),当主机B发现请求包中的IP地址与自己的一致,则主机B将自己的MAC地址塞入APR响应包发送回主机A。
-
ARP包格式(共28字节)
- 前两个是以太网地址,其中目标地址为全1的特殊地址(即广播地址),电缆上的所有以太网接口都要接受广播的数据帧。
- 以太网帧类型(2字节):表示后面数据的类型,对于ARP请求或应答来说,该字段的值为0x0806。
- 硬件类型、协议类型、硬件地址长度、协议地址长度:指定了ARP请求或应答包中的后四个字段的类型和长度。
- op(操作字段,2字节):ARP请求(1)、ARP应答(2)、RARP请求(3)、RARP应答(4)。

图12 ARP请求或应答分组格式
-
ARP高效运行的关键
- 若每发送一个IP数据报查找一次MAC地址,会造成网络流量浪费和效率低下,故通常的做法是把获取到的MAC地址缓存一段时间,每一个主机上都有一个ARP的高速缓存。
ICMP协议
-
ICMP(Internet Control Message Protocol, 控制报文协议)
-
主要功能
- 确认IP包是否成功到达目标地址,通知在发送过程中IP包被废弃的具体原因
-
ICMP的两类消息
- 差错报告报文
- 目标不可达
- 时间超过:如路由器TTL为0
- 参数问题:路由器或是目的主机收到数据报的首部中欧协字段的值不正确
- 改变路由(重定向):为了让主机知道下次将数据报发送给另一个路由器,即有更好的路由路径
- 询问报文
- 回送请求和回答:测试目的站是否可达以及了解其有关状态
- 时间戳请求和回答:用于时钟同步和时间测量
- 差错报告报文
-
以下情况不会导致ICMP差错报文
- ICMP差错报告报文
- 第一个分片的数据报片的所有后续数据报片
- 具有多播地址的数据报
- 具有特殊地址(如
127.0.0.0或0.0.0.0)的数据报
IGMP协议
-
IGMP(Internet Group Mangement Protocol, 网际组管理协议)
-
主要功能
- 用于支持主机和路由器进行多播的Internet组管理协议(IGMP)
-
报告和查询

图13 IGMP的报告和查询
总结
- IP地址和MAC地址关系
- IP地址决定了数据最终传给谁,MAC地址决定了下一跳传给谁

被折叠的 条评论
为什么被折叠?



