ARP 缓存池表
「缓存了 IP 地址到硬件地址之间的映射关系。有缓存时直接从缓存中取出即可,没有缓存时则会和 MAC 地址表获取地址时使用的广播形式类似」,即
- 1)、「E 检查 MAC 地址表,发现没有 C 的信息」。
- 2)、「E 将广播 A 的数据包到除 A 以外的端口」。
- 3)、「E 将收到来自 B、C 的回应,并将地址记录」。
「ARP 缓存是 ARP 协议和 RARP 协议运行的关键。此外,ARP 缓存表中的记录并不是永久有效的,有一定的期限」。
查看 ARP 缓存表
使用 arp -a
命令,如下所示:
quchao@quchaodeMacBook-Pro EMC-MBANK-ANDROID % arp -a
? (22.1.253.254) at 0:10:db:ff:10:0 on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]
ARP 协议
「ARP 协议被直接封装在了数据链路层中的数据帧里面的」。
❝
既然 ARP 协议是直接被封装在数据链路层中的数据帧里面的,那么为什么它是属于网络层的内容?
❞
主要是因为 「ARP 协议使用到了网络层的 IP 地址」。
ARP 协议内容
2)、RARP(Reverse Address Resolutioni Protocol)逆地址解析协议
- 1)、「将数据链路层 MAC 48位地址转换为网络层 IP 32位地址」。
- 2)、「除了类型 8035 标识为 RARP 协议,其它内容与 ARP 协议类似」。
3)、小结
- RARP 协议与 ARP 协议是 TCP/IP 协议栈里面的基础协议,它们的操作对程序员是透明的。
- 理解它们有助于我们理解网络分层的细节。
- 「它们是协调数据链路层和网络层配合工作的重要协议」。
4、网络地址转换 NAT(Network Address Translationn) 技术
「不改变 IP 地址的网关,我们称为转发网关;改变 IP 地址的网关,我们称为 NAT 网关」。
❝
为什么要使用 NAT?
❞
- 1)、「IPv4 最多只有40+亿个 IP 地址」。
- 2)、「早期 IP 地址的不合理规划导致 IP 号浪费」。
1)、内网地址
特点
- 1)、内部机构使用。
- 2)、避免与外网地址重复。
三类内网地址
- 「A 类:10.0.0.0~10.255.255.255(支持千万数量级设备)」。
- 「B 类:172.16.0.0~172.31.255.255(支持百万数据级设备)」。
- 「C 类:192.168.0.0~192.168.255.255(支持万数量级设备)」。
对于公司,它可以在外部使用全球唯一的外网 IP 地址,通常在内部使用一个 B 类内网地址即可。
同理,对于家庭可以在外部使用全球唯一的外网 IP 地址,通常在内部使用一个 C 类内网地址即可。
❝
问题:内网的多个设备使用同一个外网 IP 请求外网服务,外部是怎么样才能知道是哪一个内网设备请求的呢?
❞
「使用 NAT ,它用于多个主机通过一个公有 IP 访问互联网的私有网络,并减缓了 IP 地址的消耗,但是增加了网络通信的复杂度」。
2)、外网地址
- 全球范围使用。
- 全球公网唯一。
3)、端口映射
例如如下两个 NAT 转换过程:发送数据时,A 设备内网地址和端口号 => 外网地址与端口号:192.168.2.11:6666 => 173.21.59.10:16666,B 设备内网地址和端口号 => 外网地址与端口号:192.168.2.10:7777 => 173.21.59.10:17777。
「由于同时转换了 Port ,即进行了 端口映射,NAT 也可称为 NA§T」。
5、ICMP(Internet Control Message Protocol)协议
1)、ICMP 协议拆解
功能
ICMP 协议主要是用于 「辅助 IP 协议发送与接收数据的,它可以报告错误信息或异常情况」。
ICMP 报文结构
「ICMP 协议被封装在 IP 数据报的数据之中,其也分为 报文首部与报文数据。如果需要使用 ICMP 协议,则需要在 IP 协议首部的8位协议中写入1,以表明 IP 数据所携带的具体数据是 ICMP 协议的」。
类型
1、差错报告报文
差错报告报文具体分为 「七种类型」,而 「大部分的报文类型是由类型的值和具体代码组成的」。具体如下图所示:
2、询问报文
询问报文具体分为 「两类」,它仅仅是由 「类型的值」 决定的。具体如下图所示: