网络层用来处理在网络上流动的数据包(数据包:网络上传输的最小数据单位)。网络层规定在众多选项中通过怎样的路径(传输线路)到达对方的计算机,把数据包传输给对方。
该层中最突出的协议是 Internet Protocol(IP),因此该层也称为 IP 层。IP 的核心是两个主要功能:地址 和 路由。
IP 协议是 TCP / IP 协议的核心,所有的 TCP、UDP、IMCP、IGMP 的数据都以 IP 数据格式传输。要注意的是,IP 不是可靠的协议,这是指 IP 协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP 或 UDP 要做的事情。
网络层功能:
数据链路层功能:
在数据链路层中我们一般通过 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 | 预留实验用 |
无类别域间路由(Classless Inter-Domain Routing,CIDR)是一个用于给用户分配 IP 地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。
表示方法:A.B.C.D/N
(N 的范围 [0, 32]
)
查看 MAC 地址:
# Windowipconfig / all# Linuxifconfig
动态地址解析协议(Address Resolution Protocol,ARP)是根据 IP 地址获取 MAC 地址的一种协议。
简单的来说 ARP 的作用就是把 IP 地址映射为物理地址,而与之相反的 RARP(逆向 ARP)就是将物理地址映射为 IP 地址。
网络地址转换(Network Address Translation,缩写:NAT;又称网络掩蔽、IP 掩蔽)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。
网际协议第 6 版(英语:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本,用作互联网的协议。用它来取代 IPv4 主要是为了解决 IPv4 地址枯竭问题,同时它也在其他方面对于 IPv4 有许多改进。
IPv6 目的:
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 在某些条件下可以省略:
2001:0DB8:02de:0000:0000:0000:0000:0e132001:DB8:2de:0000:0000:0000:0000:e132001:DB8:2de:000:000:000:000:e132001:DB8:2de:00:00:00:00:e132001:DB8:2de:0:0:0:0:e13
::
表示一组 0
或多组连续的 0
,但只能出现一次:2001:DB8:2de:0:0:0:0:e132001:DB8:2de::e132001:0DB8:0000:0000:0000:0000:1428:57ab2001:0DB8:0000:0000:0000::1428:57ab2001:0DB8:0:0:0:0:1428:57ab2001:0DB8:0::0:1428:57ab2001:0DB8::1428:57ab
2001::25de::cade
是非法的,因为双冒号出现了两次。它有可能是下种情形之一,造成无法推断。2001:0000:0000:0000:0000:25de:0000:cade2001:0000:0000:0000:25de:0000:0000:cade2001:0000:0000:25de:0000:0000:0000:cade2001: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
。