网络层与数据链路层协议
网络层用来处理在网络上流动的数据包(数据包:网络上传输的最小数据单位)。网络层规定在众多选项中通过怎样的路径(传输线路)到达对方的计算机,把数据包传输给对方。
该层中最突出的协议是 Internet Protocol(IP),因此该层也称为 IP 层。IP 的核心是两个主要功能:<span style="font-weight:bold;color:red">地址</span> 和 <span style="font-weight:bold;color:red">路由</span>。
IP 协议是 TCP / IP 协议的核心,所有的 TCP、UDP、IMCP、IGMP 的数据都以 IP 数据格式传输。要注意的是,IP 不是可靠的协议,这是指 IP 协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP 或 UDP 要做的事情。
网络层功能:
- IP 寻址
- 选路
- 封装打包
- 分片
数据链路层功能:
- 逻辑链路控制
- 媒体访问控制
- 封装链路层帧
- MAC 寻址
- 差错检测与处理
- 定义物理层标准
IPv4 分类地址
在数据链路层中我们一般通过 MAC 地址来识别不同的节点,而在 IP 层我们也要有一个类似的地址标识,这就是 IP 地址。
32 位 IP 地址(IPv4 地址的点分十进制表示)分为网络位和地址位,这样做可以减少路由器中路由表记录的数目,有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护一条这个网络地址的方向,就可以找到相应的这些终端了。
当互联网规律很小时,类别信息被编码进 IP 地址:
IP 地址类别 | 首字节 | 网络号 Bit 数 | 主机号 Bit 数 | 理论地址范围 | 预期用途 |
---|---|---|---|---|---|
A 类地址 | 0xxx xxxx |
8 | 24 | 1.0.0.0 ~ 126.255.255.255 |
特大网络的单播传输 |
B 类地址 | 10xx xxxx |
16 | 16 | 128.0.0.0 ~ 191.255.255.255 |
数千台中大型网络的单播传输 |
C 类地址 | 110x xxxx |
24 | 8 | 192.0.0.0 ~ 223.255.255.255 |
250 台主机以下小型网络的单播传输 |
D 类地址 | 1110 xxxx |
n/a | n/a | 224.0.0.0 ~ 239.255.255.255 |
IP 多播 |
E 类地址 | 1111 xxxx |
n/a | n/a | 240.0.0.0 ~ 255.255.255.255 |
预留实验用 |
CIDR 子网掩码
无类别域间路由(Classless Inter-Domain Routing,CIDR)是一个用于给用户分配 IP 地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。
表示方法:A.B.C.D/N
(N 的范围 [0, 32]
)
链路层 MAC 地址
- 链路层地址 MAC(Media Access Control Address)
- 实现本地网络设备间的直接传输
- 网络层地址 IP(Internet Protocol address)
- 实现大型网络间的传输
查看 MAC 地址:
# Window
ipconfig / all
# Linux
ifconfig
地址解析协议 ARP
动态地址解析协议(Address Resolution Protocol,ARP)是根据 IP 地址获取 MAC 地址的一种协议。
简单的来说 ARP 的作用就是把 IP 地址映射为物理地址,而与之相反的 RARP(逆向 ARP)就是将物理地址映射为 IP 地址。
NAT 地址转换
网络地址转换(Network Address Translation,缩写:NAT;又称网络掩蔽、IP 掩蔽)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。
IPv6
网际协议第 6 版(英语:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本,用作互联网的协议。用它来取代 IPv4 主要是为了解决 IPv4 地址枯竭问题,同时它也在其他方面对于 IPv4 有许多改进。
IPv6 目的:
- 更大的地址空间:128 位长度
- 更好的地址空间管理
- 消除 NAT 等寻址技术
- 更简易的 IP 配置管理
- 优秀的选路设计
- 更好的多播支持
- 安全性
- 移动性
格式
IPv6 二进位制下为 128 位长度,以 16 位为一组,每组以冒号 :
隔开,可以分为 8 组,每组以 4 位十六进制方式表示。
例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344
是一个合法的 IPv6 地址。
类似于 IPv4 的点分十进制,同样也存在点分十六进制的写法,将 8 组 4 位十六进制地址的冒号去除后,每位以点号 .
分组。
例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344
则记为 2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4
,其倒序写法用于 ip6.arpa
子域名记录 IPv6 地址与域名的映射。
同时 IPv6 在某些条件下可以省略:
- 每项数字前导的 0 可以省略,省略后前导数字仍是 0 则继续,例如下组 IPv6 是等价的。
2001:0DB8:02de:0000:0000:0000:0000:0e13
2001:DB8:2de:0000:0000:0000:0000:e13
2001:DB8:2de:000:000:000:000:e13
2001:DB8:2de:00:00:00:00:e13
2001:DB8:2de:0:0:0:0:e13
- 可以用双冒号
::
表示一组0
或多组连续的0
,但只能出现一次:
- 如果四组数字都是零,可以被省略。遵照以上省略规则,下面这两组 IPv6 都是相等的。
2001:DB8:2de:0:0:0:0:e13
2001:DB8:2de::e13
2001:0DB8:0000:0000:0000:0000:1428:57ab
2001:0DB8:0000:0000:0000::1428:57ab
2001:0DB8:0:0:0:0:1428:57ab
2001:0DB8:0::0:1428:57ab
2001:0DB8::1428:57ab
2001::25de::cade
是非法的,因为双冒号出现了两次。它有可能是下种情形之一,造成无法推断。
2001:0000:0000:0000:0000:25de:0000:cade
2001:0000:0000:0000:25de:0000:0000:cade
2001:0000:0000:25de:0000:0000:0000:cade
2001:0000:25de:0000:0000:0000:0000:cade
如果这个地址实际上是 IPv4 的地址,后 32 位可以用 10 进制数表示;因此 ::ffff:192.168.89.9
相等于 ::ffff:c0a8:5909
。
另外,::ffff:1.2.3.4
格式叫做 IPv4 映射地址。
IPv4 位址可以很容易的转化为 IPv6 格式。举例来说,如果 IPv4 的一个地址为 135.75.43.52
(十六进制为 0x874B2B34
),它可以被转化为 0000:0000:0000:0000:0000:FFFF:874B:2B34
或者 ::FFFF:874B:2B34
。同时,还可以使用混合符号(IPv4-compatible address),则地址可以为 ::ffff:135.75.43.52
。