Linux - 网络基础(网络层,数据链路层)
一、网络层
1)IP协议概念
IP协议(Internet Protocol)是 网络层 的核心协议,负责在互联网上为数据包选择路由并将其传输到目的地。它是 互联网协议族(TCP/IP) 中最基本的协议之一,所有互联网通信的基础都依赖于它。IP协议并不保证数据的可靠传输,它主要负责将数据从源地址传递到目的地址。
1. IP协议的基本功能
-
寻址:IP协议提供了 逻辑地址(即IP地址),用于标识网络中的每个设备。每个设备(如计算机、路由器等)都有一个唯一的IP地址,确保数据能准确送达目的地。
-
路由:IP协议根据目标IP地址选择合适的路由,将数据包从源地址传递到目标地址。路由器使用IP协议来转发数据包。
-
分段与重组:IP协议可以将较大的数据分割成多个小的数据包(称为 分段),并在目标设备处进行 重组。每个数据包都携带完整的头部信息,包括源地址、目标地址、数据包序号等信息。
2.IP协议的类型
IP协议有两个主要版本:
-
IPv4(Internet Protocol Version 4):IPv4是当前互联网中最常用的版本。它定义了 32位 的地址空间,通常写作四个十进制数(每个数在0到255之间),例如:
192.168.0.1
。-
IPv4 地址:IPv4地址是一个 32 位的二进制数,通常以四个十进制数表示(每个数字是0到255之间的整数)。
- 示例地址:
192.168.1.1
- 示例地址:
-
地址空间:IPv4地址的总数为
2^32
,大约是 42 亿个地址。 -
分类:IPv4 地址按用途分为 公有地址、私有地址 和 环回地址 等。私有地址通常用于局域网内的设备,而环回地址用于本地回环通信。
- 公有地址:
8.0.0.0
到223.255.255.255
- 私有地址:
10.0.0.0
到10.255.255.255
、172.16.0.0
到172.31.255.255
、192.168.0.0
到192.168.255.255
- 公有地址:
-
数据包头部:IPv4数据包包含一系列字段,如源地址、目标地址、协议类型、分段信息等。
-
-
IPv6(Internet Protocol Version 6):IPv6是为了解决IPv4地址枯竭问题而设计的下一代互联网协议。它使用 128位 的地址空间,提供了极为丰富的IP地址。IPv6的地址格式较IPv4更加复杂,通常表示为8组16进制数(每组由4个字符组成),例如:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
。-
IPv6 地址
:IPv6地址是128位,通常以8组16位数表示,使用冒号分隔。
- 示例地址:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 示例地址:
-
地址空间:IPv6提供了
2^128
的地址空间,比IPv4地址多了许多,能够满足全球设备的需求。 -
简化头部:IPv6的头部结构比IPv4更简洁,省略了一些IPv4中的冗余字段。
-
支持自动配置:IPv6可以在没有DHCP的情况下,自动配置设备的IP地址。
-
3. IP协议的报头
IPv4报头 是IP协议在数据包中所包含的信息,主要负责为数据包提供必要的路由、寻址等信息。它包含多个字段,每个字段有不同的作用,下面是IPv4报头的详细描述:
// 4 Bytes
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +++++++
|Version| IHL |Type of Service| Total Length(16bits) | .......
|(4bits)|(4Bist)| (8bits) | | .......
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ .......
| Flags(16bits) |Flags| Fragment Offset(13bits) | .......
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ .......
| TTL(8bits) |Protocol(8bits)| Header Checksum(16bits) | .......
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 20Bysts
| Source IP Address(32 bits) | .......
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ .......
| Destination IP Address(32bits) | .......
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +++++++
| [Options] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. Data .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
版本(Version):
- 该字段占用 4 位,表示IP协议的版本。对于IPv4,其值固定为
4
。
- 该字段占用 4 位,表示IP协议的版本。对于IPv4,其值固定为
-
头部长度(IHL,Internet Header Length):
- 该字段占用 4 位,表示IP头部的长度,单位为 4 字节。
- 最小值为 5(表示20字节),最大值为 15(表示60字节)。
- 如果IP头部没有选项字段,则值为5。
-
服务类型(Type of Service,ToS):
- 该字段占用 8 位,用于指示数据包的优先级、延迟、吞吐量等服务质量(QoS)。尽管IPv4定义了这个字段,但实际上在大多数场合并没有广泛使用。
-
总长度(Total Length):
- 该字段占用 16 位,表示整个IP数据包的长度,包括头部和数据部分。单位为字节,因此最大值为 65535字节。
-
标识符(Identification):
- 该字段占用 16 位,用于唯一标识数据包。这个字段在数据包分段时起到关键作用,每个数据包的标识符是唯一的,以便接收方将分段数据正确地重组成原始数据。
-
标志(Flags):
- 该字段占用 3 位,标志位用于控制和标识数据包分段的方式。例如,
DF
(Don’t Fragment)表示数据包不能被分段,MF
(More Fragments)表示后续还有更多分段。
- 当IP报文被分片,
片偏移 != 0 || MF == 1
- ip报文被分片,任何一个分片丢失都要重新发送,所以不建议分片 ,这会增加丢包概率。
- 该字段占用 3 位,标志位用于控制和标识数据包分段的方式。例如,
-
片偏移(Fragment Offset):
- 该字段占用 13 位,指示当前数据包在原始数据包中的偏移位置,单位是8字节。它用于数据包分段后接收方对数据包进行重组。
-
生存时间(TTL,Time to Live):
- 该字段占用 8 位,用于限制数据包的生命周期。
- 每经过一个路由器,TTL值减1,当TTL为0时,数据包会被丢弃。这个字段的目的是防止数据包在网络中永远循环。
-
协议(Protocol):
- 该字段占用 8 位,用于指定封装在IP数据包中的协议类型。
- 常见的值包括:
- TCP:
6
- UDP:
17
- ICMP:
1
- TCP:
- 用于交给上层
-
头部校验和(Header Checksum):
- 该字段占用 16 位,用于校验IP头部在传输过程中是否发生了错误。接收方会根据该校验和进行验证,确保头部数据的完整性。
-
源IP地址(Source IP Address):
- 该字段占用 32 位,表示发送数据包的源IP地址。这个地址可以是任何合法的IPv4地址,通常是发送方设备的地址。
-
目标IP地址(Destination IP Address):
- 该字段占用 32 位,表示接收数据包的目标IP地址。接收方设备的地址,通常是目的设备的地址。
-
选项(Options):
- 该字段是可选的,长度可变。它用于提供扩展功能,如时间戳、记录路由等。选项字段不常用,通常被忽略。
2)网段划分
网段划分,也叫做 子网划分,是将一个大的IP地址块(网络)拆分成多个小的子网。它是IP地址管理的一项重要技术,可以提高网络的效率、节省地址空间、增强网络的安全性等。通过网段划分,网络管理员能够更好地管理地址资源,并确保网络通信的高效性。
在IP协议中,IP地址分为网络部分和主机部分。网段划分的主要目的是通过调整网络部分和主机部分的分界点,将一个大的IP地址空间划分为多个较小的网络(子网)。
1. 五类IP地址的划分
五类IP地址是传统的 类地址(Classful Addressing) 划分方法,在过去的网络设计中,IP地址被分为五个类别(A、B、C、D、E),每个类别具有不同的用途和地址范围。现在 CIDR(无类域间路由)已经取代了传统的类地址方法。
**类 ** | 地址范围 | 默认子网掩码 | 用途 |
---|---|---|---|
A类 | 0.0.0.0 到 127.255.255.255 | 255.0.0.0 (/8 ) | 大型网络(最多支持1677万个主机) |
B类 | 128.0.0.0 到 191.255.255.255 | 255.255.0.0 (/16 ) | 中型网络(最多支持65534个主机) |
C类 | 192.0.0.0 到 223.255.255.255 | 255.255.255.0 (/24 ) | 小型网络(最多支持254个主机) |
D类 | 224.0.0.0 到 239.255.255.255 | 无 | 用于组播(Multicast) |
E类 | 240.0.0.0 到 247.255.255.255 | 无 | 保留地址,未来或实验用途 |
2. 无类域间路由(CIDR)
CIDR通过 IP地址/子网前缀(例如:192.168.1.0/24
)来表示网络,而不再强制要求使用A、B、C类的子网掩码。CIDR的优势在于它能够更精确地划分IP地址,提高了IP地址的使用效率,减少了地址浪费。
- IP地址:在IPv4中,IP地址是由32位二进制数组成,通常分为四个8位的十进制数。例如:
192.168.1.1
。 - 子网掩码(Subnet Mask):子网掩码也由32位二进制数构成,用于标识IP地址中的网络部分和主机部分。子网掩码将IP地址分成两部分:网络部分(标识网络)和主机部分(标识主机)。例如,
255.255.255.0
。
子网掩码与IP地址进行按位与运算,可以提取出网络部分,从而确定设备所在的网络。
- 示例:
192.168.1.100
与255.255.255.0
进行按位与运算,会得到192.168.1.0
,即设备所在的网络是192.168.1.0/24
。
3. 子网划分的原理
子网划分的核心思想是通过调整 子网掩码,增加或减少网络部分的位数,从而定义子网的大小和数量。
- 增加网络位数:增加子网掩码中的网络位数(即将
1
赋值给子网掩码的更多位),可以将一个大网络分成多个小网络。 - 减少主机位数:减少可用的主机地址数量,这样可以获得更多的子网。
例如,如果我们有一个 192.168.1.0/24
的网络(即子网掩码为 255.255.255.0
),我们可以通过将子网掩码扩展为 255.255.255.192
(即 /26
)来创建多个小子网。
4. 如何进行子网划分
步骤 1:确定需要多少个子网
- 首先,确定需要多少个子网。例如,如果你有一个
192.168.1.0/24
的网络,想要将其划分为 4 个子网。 - 由于子网的数量是2的幂次方,因此要选择一个合适的掩码位数。
- 2个子网:需要 1 位
- 4个子网:需要 2 位
- 8个子网:需要 3 位
- 16个子网:需要 4 位
- 以此类推。
步骤 2:计算子网掩码
- 根据需要的子网数量,选择合适的子网掩码。例如,为了获得 4 个子网,我们需要将
/24
的网络掩码扩展 2 位,所以新的子网掩码变为/26
(即255.255.255.192
)。
步骤 3:确定每个子网的地址范围
- 计算每个子网的网络地址、广播地址以及可用主机地址。比如,子网掩码
/26
会将192.168.1.0/24
划分成 4 个子网,每个子网有 64 个地址,其中 62 个地址可以分配给主机。- 子网1:
192.168.1.0/26
(网络地址:192.168.1.0
,广播地址:192.168.1.63
,可用IP地址范围:192.168.1.1
到192.168.1.62
) - 子网2:
192.168.1.64/26
(网络地址:192.168.1.64
,广播地址:192.168.1.127
,可用IP地址范围:192.168.1.65
到192.168.1.126
) - 子网3:
192.168.1.128/26
(网络地址:192.168.1.128
,广播地址:192.168.1.191
,可用IP地址范围:192.168.1.129
到192.168.1.190
) - 子网4:
192.168.1.192/26
(网络地址:192.168.1.192
,广播地址:192.168.1.255
,可用IP地址范围:192.168.1.193
到192.168.1.254
)
- 子网1:
步骤 4:分配IP地址
- 每个子网可以分配给不同的设备,如服务器、路由器或用户设备。
5. 特殊ip地址
IP地址是由网络部分和主机部分组成的,通常会有一些特殊的IP地址用于特定目的,而这些地址并不用于普通的网络通信。以下是三类常见的特殊IP地址:
-
网络号(Network Address)
-
定义:当IP地址的主机部分(即子网部分)全部为0时,表示该IP地址是该网络的标识符,即 网络号。它用于表示某个特定的网络,而不是网络中的具体主机。
-
作用:网络号用于标识一个网络范围,它不会被分配给网络中的任何一台主机。这个地址主要用于路由表中来标识某个网络。
-
示例:如果一个子网的网络地址是
192.168.1.0/24
,那么192.168.1.0
就是该网络的 网络号。这表示网络192.168.1.0
。
- 网络号 不能分配给网络中的设备。
- 如果一个设备的IP地址是
192.168.1.0
,它表示该设备是该网络的标识,而不是一个有效的设备IP。
-
-
广播地址(Broadcast Address)
-
定义:当IP地址的主机部分全部为1时,表示该IP地址是 广播地址。广播地址用于发送数据包到该子网中的所有主机。
-
作用:广播地址用于 向同一网络内的所有主机发送数据,这种方式不需要指定具体的接收方。所有处于该子网中的设备都会接收到这个广播数据包。
-
示例:对于子网
192.168.1.0/24
,广播地址是192.168.1.255
。这个地址会将数据发送到192.168.1.0
网络中的所有主机。
- 广播地址 只在局域网内有效。
- 当网络内的设备需要向所有其他设备发送信息时,会使用广播地址。
-
-
环回地址(Loopback Address)
-
定义:IP地址中的
127.*
地址范围被保留为 环回地址,用于本机的自我通信测试。 -
作用:环回地址用于 测试本机网络接口,不涉及网络中任何其他设备。任何发往
127.x.x.x
地址的数据包都不会离开本机,而是直接返回给发送者,用于检查本机的网络栈是否正常工作。 -
示例:
127.0.0.1
是最常见的环回地址,也称为 localhost,它指代本机。通常在进行开发和调试时,使用127.0.0.1
作为目标地址测试网络连接。
-
6. 私有IP地址与公网IP地址
-
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
-
私有IP地址(RFC 1918规定):
仅在局域网(LAN)内部使用,不可直接访问互联网的保留地址。 -
公网IP地址(全局IP):
全球唯一的IP地址,用于互联网通信,由ISP(互联网服务提供商)分配。
-
-
根据RFC 1918,以下地址段为私有IP,不可在公网路由:
地址范围 | 网络前缀 | 可用地址数 | 典型用途 |
---|---|---|---|
10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 | 16,777,216 | 大型企业/机构内部网络 |
172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 | 1,048,576 | 中型企业网络 |
192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 | 65,536 | 家庭/小型办公网络 |
3)路由器的基本概念和功能
路由器(Router)是网络中用于连接不同子网的设备,它的主要功能是根据数据包中的目标IP地址来决定如何将数据包从一个网络转发到另一个网络。路由器工作在 网络层,并且可以连接多个子网,因此它是实现局域网(LAN)与广域网(WAN)之间通信的重要设备。
1. 路由器作为子网的主机
路由器本质上是每个子网中的一个主机(host),因此它需要有 IP地址。与普通的终端设备不同,路由器的IP地址通常用于与其他设备进行通信,尤其是在连接不同子网时。
-
配置IP地址:每个路由器接口(连接到不同子网的端口)都必须配置一个IP地址,这个IP地址位于每个子网的地址范围内。
例如,如果路由器连接了两个子网,分别是
192.168.1.0/24
和192.168.2.0/24
,那么路由器接口可能会配置如下:- 接口1(连接到
192.168.1.0/24
子网):192.168.1.1
- 接口2(连接到
192.168.2.0/24
子网):192.168.2.1
- 接口1(连接到
2. 路由器连接至少两个子网
路由器的一个关键特性是它能够连接多个子网,这使得不同子网之间的设备能够进行通信。
- 连接多个子网:路由器至少连接两个子网。每个子网的设备通过路由器来进行与其他子网的通信。路由器根据目标IP地址的网络部分,查找其路由表,并选择合适的下一跳接口来转发数据包。
- 同时存在于多个子网:路由器并不是单纯地隶属于一个子网,它相当于同时存在于多个子网中。路由器的每个接口都可以看作是属于一个特定子网的主机,因此,路由器的每个接口必须有不同的IP地址,这些地址是各自子网的地址范围内的地址。
3. 路由器通常是子网中的第一台设备
通常情况下,路由器 会作为 子网中的第一台设备,并且它的 IP地址通常是 网络号.1
。这种设计遵循了一种惯例,它使得网络管理员能够快速识别和配置路由器的IP地址。
-
路由器作为网关:在一个典型的子网中,路由器的IP地址通常被设定为
网络号.1
- 对于子网
192.168.1.0/24
,路由器的IP地址可能是192.168.1.1
。 - 对于子网
192.168.2.0/24
,路由器的IP地址可能是192.168.2.1
。
- 对于子网
这些地址通常会作为子网内其他设备的默认网关地址,即所有目标地址不在本子网内的数据包都会被发送到路由器进行转发。
4. 路由器的报文转发功能
路由器的最基本功能就是 转发数据包,它根据目标IP地址来决定数据包的路由。路由器根据路由表中的信息将数据包转发到正确的目的地,下面是其基本工作过程:
- 接收数据包:路由器接收来自一个子网的数据包。
- 查找路由表:路由器查找自己的 路由表,根据目标IP地址确定下一跳地址和下一跳接口。
- 转发数据包:路由器通过所选的接口将数据包转发到下一个目标设备或下一个路由器,直到数据包到达目标主机。
5. 路由器与DHCP功能
DHCP(动态主机配置协议) 是一个用于动态分配IP地址的协议。路由器通常会在局域网内充当 DHCP服务器,并负责为局域网内的设备分配IP地址。
- DHCP分配IP地址:路由器可以作为 DHCP服务器,为局域网中的设备自动分配IP地址。当新设备加入网络时,它会向路由器发送DHCP请求,路由器会通过DHCP协议分配一个合适的IP地址,并将其返回给设备。
- DHCP代理:在某些情况下,路由器也可以作为 DHCP代理,将来自客户端的DHCP请求转发到其他网络中的DHCP服务器,并从DHCP服务器获取IP地址后将其分配给客户端。
6. 路由器的NAT功能
大多数家庭和小型企业网络使用 NAT(网络地址转换) 技术,路由器通常配置为 NAT设备,它负责将局域网中的私有IP地址转换为公网IP地址。
- 源地址转换(SNAT):当局域网设备访问外部互联网时,路由器将设备的私有IP地址转换为公网IP地址,保证所有设备能够通过单一的公网IP访问外部网络。
- 端口映射:路由器通过 端口映射 机制将外部公网IP的请求转发到内部特定设备。例如,外部访问公网IP的某个端口,路由器根据端口映射规则将数据转发到局域网中的某个设备。
当子网内主机访问外网时:
源IP替换:路由器将数据包的源IP(私有IP)替换为WAN口IP(公网IP)。
响应转发:外网返回的数据包目标IP为路由器WAN口IP,路由器再将其转发给原始主机。
内网主机(192.168.1.2) → 访问公网服务器(203.0.113.5) 1. 发送数据包: - 源IP:192.168.1.2 → 经NAT转换为 WAN口IP(100.1.1.2) - 目标IP:203.0.113.5 2. 返回数据包: - 源IP:203.0.113.5 → 目标IP:100.1.1.2 - 路由器将目标IP还原为 192.168.1.2
7. 路由器与子网的实际应用
在一个中大型企业网络或家庭网络中,路由器通常会连接多个子网。例如,企业可能将不同部门划分为不同的子网,每个子网使用不同的IP地址范围,并且通过路由器来连接各个部门。这样做不仅能提供更好的网络隔离,还能提升网络的安全性和性能。
- 多子网连接:路由器可以将不同的子网连接在一起,帮助它们之间的设备进行通信。
- 网络隔离:通过子网划分,路由器能够隔离不同网络之间的流量,有助于减少广播风暴并提高网络效率。
二、数据链路层
数据链路层(Data Link Layer)是OSI模型中的第二层,它负责在物理层提供的基础上实现可靠的数据传输。数据链路层的主要任务是将数据封装成帧(Frame),并进行错误检测、流量控制等工作。它为网络层提供了一个可靠的传输机制。
数据链路层的协议与设备可以跨越物理介质,实现局域网内设备之间的通信。最常见的协议是 以太网(Ethernet)。
1)以太网
1. 以太网概念
以太网是最广泛使用的局域网技术,它位于数据链路层并定义了 帧 的格式。以太网使用 MAC地址 来标识网络中的设备,并通过 交换机 和 路由器 进行数据传输。
- 传输介质:以太网最常见的传输介质是双绞线、光纤或无线电波。
- 拓扑结构:以太网通常采用 星型拓扑,即所有设备通过交换机连接在一起。
2. 以太网帧格式
以太网帧是数据链路层用于传输数据的基本单位。每个以太网帧包含多个字段,其中包括目标MAC地址、源MAC地址、数据和校验等。以下是标准以太网帧的结构:
以太网帧格式示例:
// 14+4=18Bytes
|..........14Bytes..........| |4Bytes |
|0 1 2 3 4 5 6 7 0 1 2 3 4 5|0 1 2 .............. 0 1 2|0 1 2 3|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Dest Mac | Source Mac|Typ| data | FCS |
| (6Bytes) | (6Bytes) | es| (46 - 1500 Bytes) | (4B) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- 目标MAC地址(6字节):指定帧的接收设备的MAC地址。
- 源MAC地址(6字节):指定帧的发送设备的MAC地址。
- 类型/长度字段(2字节):指示帧中数据部分的类型或长度
0x0800
:IPv40x0806
:ARP
- 数据字段(46到1500字节):包含传输的实际数据。
- FCS(Frame Check Sequence)(4字节):用于错误检测的字段,确保数据在传输过程中未被篡改。
2)MAC地址
1. MAC地址概念
MAC地址(Media Access Control Address) 是设备在网络中唯一的硬件地址,它位于数据链路层。每个网络设备(如网卡)都被赋予一个全球唯一的MAC地址,通常是由厂商在生产过程中嵌入的。
- 格式:MAC地址由6个字节(48位)组成,通常以十六进制表示,如
00:1A:2B:3C:4D:5E
。 - 作用:MAC地址用于局域网内的设备通信。以太网帧通过MAC地址来确定数据的目标设备。
2. MAC转发
MAC转发 是指交换机根据目标MAC地址将数据包从一个端口转发到另一个端口的过程。MAC转发发生在 交换机(Switch)中,交换机会根据每个设备的MAC地址决定将数据包发送到哪个端口,以便确保数据传送到正确的目标设备。
-
转发过程:
-
学习MAC地址:
- 交换机在接收到数据帧时,首先会记录 源MAC地址 和数据帧到达的端口。这样,交换机就建立了一个MAC地址表,记录了每个MAC地址和对应的端口信息。
- 该表通常被称为 转发表(Forwarding Table) 或 MAC地址表。
-
查找转发表:
- 当交换机收到数据帧时,它会查看帧中的 目标MAC地址,并查找自己的转发表。
- 如果交换机找到了目标MAC地址对应的端口,它就将数据帧转发到该端口。
- 如果找不到目标MAC地址,交换机会将数据帧广播到所有其他端口,除去接收端口(这种情况称为 洪泛(Flooding))。
-
转发数据帧:
- 一旦交换机根据目标MAC地址找到正确的端口,它会将数据帧转发到该端口。如果目标设备连接到这个端口,数据帧就会被接收。
-
-
交换机的MAC地址表:交换机维护一个表来记录各个设备的MAC地址与端口的映射关系。该表通常是一个 动态表,根据网络的变化(设备的加入或离开)实时更新。
MAC地址 端口 00:14:22:01:23:45
port1
00:14:22:01:23:46
port2
00:14:22:01:23:47
port3
- MAC地址表更新:当交换机收到新的数据帧时,它会检查帧的源MAC地址。如果源MAC地址不存在于表中,交换机会将其添加到表中,并记录下接收到该帧的端口。
3. MAC地址和IP地址
MAC地址 和 IP地址 是两种不同类型的地址,它们分别位于不同的OSI模型层。
- MAC地址:属于数据链路层,唯一标识网络中的设备。它在局域网内使用,并且通常是静态的,无法修改。
- IP地址:属于网络层,用于标识网络中的设备和网络之间的路由。IP地址是动态分配的(可以改变),用于跨网络(如互联网)通信。
主要区别:
- 作用层次:MAC地址在数据链路层,IP地址在网络层。
- 唯一性:MAC地址是硬件唯一的,而IP地址可以在不同的网络中重复。
- 变化性:MAC地址是固定的,而IP地址可能会随着网络环境的变化而改变。
交换机与路由器的区别
交换机(Switch)主要工作在数据链路层,使用 MAC地址 来决定数据转发的目标。它会通过 MAC转发 将数据帧从一个设备转发到另一个设备。
路由器(Router)工作在网络层,使用 IP地址 来决定数据包的路径。它负责将数据从一个子网路由到另一个子网,执行 路由转发。
3)MTU
1. MTU概念
MTU(Maximum Transmission Unit,最大传输单元) 是指网络中数据链路层能够传输的最大数据帧的大小。MTU的大小决定了每次传输的数据包的最大长度。不同的网络类型和协议具有不同的MTU值。
- 以太网的标准MTU:通常为 1500字节,这意味着通过以太网传输的数据帧不能大于1500字节。如果数据包超过1500字节,则必须进行 分段。
2. MTU对协议的影响
-
MTU对IP协议的影响:
-
分段(Fragmentation):当数据包的大小超过MTU时,IP协议会将数据包分段。每个分段都带有自己的IP头部,接收端需要将所有分段重新组合成完整的数据包。
-
影响性能:分段会导致额外的开销,增加数据包重组的时间,并可能因为分段丢失导致数据包无法正确接收。
-
-
MTU对UDP协议的影响:
- 不支持分段:UDP本身不支持分段,如果应用层发送的UDP数据报大小超过了网络的MTU,数据将被丢弃,通常会触发ICMP错误消息(如“数据包过大”),并要求重新发送适当大小的数据包。
-
MTU对TCP协议的影响
-
流量控制与拥塞控制:TCP协议依赖于MTU来确定发送数据的大小。由于TCP具有流量控制和拥塞控制机制,它会根据网络的MTU动态调整数据的发送大小,以避免分段。
-
最大报文段大小(MSS):TCP的MSS(Maximum Segment Size)是指每个TCP段的最大数据量。它通常会根据链路的MTU进行调整。MSS是 MTU - 40字节(IP和TCP头部的大小)。
-
4)碰撞(Collision)
在网络中,碰撞(Collision)指的是两个或更多的设备在同一时间向共享的通信媒介发送数据,从而导致数据包相互干扰,无法成功传输。碰撞通常发生在共享的传输介质上,尤其是在 早期的以太网 网络中,采用了 集线器(Hub) 作为连接设备的方式。
1. 碰撞的发生
碰撞通常发生在 半双工(Half-Duplex)通信模式下,也就是设备无法同时发送和接收数据。例如,在传统的 共享以太网 中,多个设备通过集线器连接在一起,所有设备共享同一传输介质。这样,如果多个设备同时发送数据,就会发生碰撞。
-
碰撞的过程:
-
设备发送数据:设备准备好数据后,通过共享的传输介质(如电缆)发送数据。
-
数据冲突:如果两台设备几乎同时开始发送数据,信号就会在传输介质上相互碰撞,导致数据丢失。
-
检测碰撞:当设备检测到数据冲突时,它们会立即停止发送数据并通知其他设备发生了碰撞。
-
重发数据:在碰撞发生后,设备会等待一段随机的时间后再次发送数据,这种机制被称为 退避算法(如 二进制指数退避算法)。
-
2. 碰撞在不同网络中的表现
- 集线器(Hub):在传统的以太网中,集线器是一种常见的设备,它在物理层工作,所有设备通过集线器连接,共享相同的带宽。由于集线器并没有区分不同的通信流,多个设备如果同时发送数据,就会发生碰撞。
- 交换机(Switch):交换机通过在数据链路层工作,将设备的通信分割成独立的通信流。每个设备与交换机之间的连接是独立的,从而避免了碰撞。因此,交换机能有效地消除因多个设备共享带宽而导致的碰撞问题。
- 全双工通信:在全双工(Full-Duplex)通信模式下,设备可以同时发送和接收数据,避免了碰撞的发生。现代网络设备,如现代的以太网交换机,通常支持全双工通信模式。
3. 碰撞检测与避免
在早期的以太网中,碰撞检测(Collision Detection)是一个重要的机制。它通过 CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议来避免和检测碰撞。
-
CSMA/CD协议:
-
Carrier Sense(载波监听):设备首先监听传输介质,确认是否有其他设备在发送数据。
-
Multiple Access(多重接入):多个设备可以共享同一传输介质,它们都可以同时发送数据。
-
Collision Detection(碰撞检测):如果设备发现其他设备同时发送数据,就会检测到碰撞,立即停止发送,执行退避算法后重新发送。
-
-
退避算法:碰撞发生时,设备通过 随机退避 来避免在接下来的发送时刻发生再次的碰撞。二进制指数退避算法 是常用的退避算法,它会随机选择一个时间段,并根据碰撞的次数动态调整等待时间。
4. 碰撞的影响
- 性能下降:碰撞会导致数据包丢失,需要重新发送,增加了网络的负担,降低了带宽的有效利用率。
- 延迟增加:因为设备需要等待并重发数据,碰撞会导致通信延迟的增加。
- 带宽浪费:发生碰撞时,原本的带宽被浪费在重传数据上,从而减少了有效的传输速率。
5. 现代网络与碰撞
在现代网络中,碰撞问题已经大大减少,主要得益于以下因素:
- 交换机的使用:现代网络设备主要使用交换机(而非集线器),交换机能够确保每个设备与交换机之间的连接是独立的,避免了设备之间的碰撞。
- 全双工通信:许多现代设备支持全双工通信,允许设备同时发送和接收数据,消除了碰撞的发生。
- 更高效的协议:现有的以太网协议如 Gigabit Ethernet 和 10-Gigabit Ethernet 使用了更高效的传输机制和流量控制机制,进一步减少了碰撞的机会。
4)ARP协议
ARP(Address Resolution Protocol,地址解析协议) 是一种用于在局域网内根据IP地址查找对应MAC地址的协议。ARP是数据链路层和网络层之间的重要桥梁。
1. ARP协议的作用
- 作用:ARP协议的主要作用是将网络层的IP地址解析为数据链路层的MAC地址。这样,当设备知道目标IP地址时,它就能够通过ARP协议获取目标设备的MAC地址,从而将数据帧发送到目标设备。
- ARP缓存:每个设备都会维护一个ARP缓存,存储已知的IP地址到MAC地址的映射。当设备需要发送数据时,首先检查ARP缓存,如果找到目标IP地址对应的MAC地址,则直接使用;如果没有找到,设备会发起ARP请求。
2. ARP协议的工作流程
-
ARP请求:当设备需要将数据发送到目标IP地址时,它会发送一个ARP请求。该请求是一个广播包,询问网络中“谁拥有目标IP地址”。
-
ARP响应:拥有该目标IP地址的设备会响应ARP请求,返回其MAC地址。
-
ARP缓存更新:发送ARP请求的设备将收到的MAC地址存储在ARP缓存中,以便后续使用。
3. ARP数据报格式
ARP数据报的格式:
// 2+2+1+1+2+6+4+6+4=28Bytes
|.....................28 Bytes..........................|
|0 1|0 1|0|0|0 1|0 1 2 3 4 5|0 1 2 3|0 1 2 3 4 5|0 1 2 3| // Bytes
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | |H|P| | Sender |Sender | Target |Target |
|HT |PT |A|A|OP | MAC Add |IP Add | MAC Add |IP Add |
| | |L|L| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
硬件类型(Hardware Type):表示网络硬件类型。
1
表示 以太网(Ethernet)。- 其他值可以代表不同的网络硬件,如
6
表示 IEEE 802 网络等。
-
协议类型(Protocol Type):表示所使用的网络层协议。
0x0800
表示 IPv4 协议。0x0806
表示 ARP 协议(用于表示该数据包是ARP请求或响应)。- 其他值可以表示其他协议,如
0x86DD
用于 IPv6。
-
硬件地址长度(Hardware Address Length):MAC地址的长度,通常是
6
字节。 -
协议地址长度(Protocol Address Length):IP地址的长度。
- 4 字节:用于 IPv4 地址。
- 16 字节:用于 IPv6 地址。
-
操作(Operation):
1
:表示请求2
:表示响应
-
发送方硬件地址(Sender Hardware Address):发送方的MAC地址。
-
发送方协议地址(Sender Protocol Address):发送方的IP地址。
-
目标硬件地址(Target Hardware Address):目标设备的MAC地址(在ARP请求中为空,在响应中有值)。
- ARP请求:该字段为空。
- ARP响应:填充目标设备的MAC地址。
-
目标协议地址(Target Protocol Address):目标设备的IP地址。
4. ARP细节
-
ARP的过程中先看Operation
-
Operation字段是ARP数据报中最重要的部分之一。它决定了ARP包是请求还是响应。
Operation = 1
表示 ARP请求,意味着设备想要知道某个IP地址对应的MAC地址。Operation = 2
表示 ARP响应,意味着设备返回自己的MAC地址,告诉请求方它所查询的IP地址对应的MAC地址。
-
在ARP过程中,主机会根据收到的ARP包的 Operation 字段来确定下一步操作:
-
如果是ARP请求(Operation=1),主机会检查请求中的目标IP地址,看看是否与自己的IP地址匹配。如果匹配,主机会返回一个ARP响应。
-
如果是ARP响应(Operation=2),主机会直接更新自己的ARP缓存,保存目标设备的MAC地址。
-
-
-
主机的MAC和IP会被主机缓存起来
-
ARP缓存(ARP cache)是设备用来存储 IP地址到MAC地址的映射关系 的表。这个缓存帮助设备避免每次发送数据时都需要发送ARP请求。
-
主机在初始化时或接收到ARP响应时,会把 本机的IP地址和MAC地址 存储在ARP缓存中,作为本地设备的映射。
-
当主机需要发送数据到局域网中的其他设备时,它会首先检查本地的ARP缓存,寻找目标IP地址对应的MAC地址。如果找到,直接使用,否则发起ARP请求。
-
-
ARP只有缓存失败的时候才会发起请求
-
如果目标IP地址的MAC地址已经在本地ARP缓存中(即缓存命中),设备就可以直接通过缓存找到目标MAC地址,而不需要发起新的ARP请求。
-
缓存失败(即缓存未命中)时,主机才会向网络广播ARP请求,询问目标IP地址的MAC地址。
-
这种机制大大提高了网络效率,因为ARP请求是广播的,网络中的所有设备都需要接收到这些请求。如果设备总是从缓存中获取信息,网络上的ARP请求将大大减少。
-
-
将网络号拼接IP地址,ping所有主机,得到所有主机的IP和MAC
-
这一过程是局域网中常见的 ARP扫描。当你在网络上运行如
ping
命令时,设备会向目标IP地址发送ICMP回显请求(ping包)。但是,在发送ping包之前,设备首先需要知道目标IP地址对应的MAC地址。 -
在没有ARP缓存的情况下,设备会将目标IP地址与其网络号拼接,进行ARP请求,广播到网络上。网络中的每个主机都会收到该请求,响应自己的MAC地址(如果目标IP地址与主机IP地址匹配)。
-
通过这个过程,你可以得知网络上所有主机的 IP地址和MAC地址 映射。
-
-
如果收到多次相同的ARP应答,会以最新的为准
-
在一个局域网中,有时网络上可能存在 多个设备的IP地址和MAC地址映射 被错误配置或动态变化的情况。例如,某台设备的MAC地址发生了变化,或者设备加入/离开网络,导致ARP请求响应中同一个IP地址返回多个不同的MAC地址。
-
ARP缓存的更新规则:当同一个IP地址的ARP响应被多次接收到时,主机会将 最后收到的ARP响应 更新为ARP缓存中该IP地址的最新MAC地址。这是因为最新的ARP响应代表目标设备的当前状态。
-
原因:ARP是基于广播的协议,某些情况下,例如网络管理员更改设备配置或多台设备伪装成同一设备,可能会导致多次接收到不同的响应。
-
三、其他重要协议
1)DNS
DNS(Domain Name System) 是一种用于将 域名 转换为 IP地址 的系统,它是互联网的重要组成部分。由于人类更容易记住域名(如 www.example.com
),而计算机和网络设备则使用IP地址进行通信,DNS正是解决了人类可读的域名和计算机使用的IP地址之间的转换问题。
1. DNS的基本概念
- 域名:域名是人类可读的网络地址,如
www.example.com
,是一个具有层次结构的标识符。它可以分为多个级别,层级越高的位置越靠近根域(Root)。 - IP地址:每个连接到互联网的设备都有一个唯一的IP地址(如
192.168.1.1
),计算机使用IP地址来定位和通信。 - 解析:DNS通过将域名解析为IP地址,使得用户能够使用简单的域名访问到对应的服务器。
2. DNS的工作原理
当你在浏览器中输入一个网址(如 www.example.com
)时,浏览器通过以下过程查找并连接到服务器:
-
客户端查找本地缓存:浏览器首先检查本地DNS缓存,看是否之前访问过该域名并且缓存了对应的IP地址。如果找到了,它将直接使用这个IP地址连接到服务器。
-
向本地DNS服务器发送查询请求:如果本地缓存中没有该域名的IP地址,操作系统会将查询请求发送到 本地DNS服务器(通常是由ISP提供的DNS服务器)。
-
递归查询(如果需要):本地DNS服务器接收到查询后,首先检查自己的缓存。如果它没有该信息,它会进行递归查询,向更高层级的DNS服务器请求解析。例如,首先会联系根DNS服务器,然后是顶级域(TLD)DNS服务器,再是权威DNS服务器。
-
权威DNS服务器:最终,权威DNS服务器会返回该域名的IP地址,或者指向下一个DNS服务器(如果它管理该域名的其他子域)。
-
返回结果:一旦本地DNS服务器收到权威DNS服务器的响应,它会将域名解析出的IP地址返回给客户端。客户端再通过这个IP地址与目标服务器建立连接。
3. DNS的类型
- A记录(Address Record):将域名映射到IPv4地址。
- AAAA记录(IPv6 Address Record):将域名映射到IPv6地址。
- CNAME记录(Canonical Name Record):将一个域名别名映射到另一个域名。
- MX记录(Mail Exchange Record):指定邮件交换服务器,用于电子邮件的路由。
- NS记录(Name Server Record):指定负责该域名的DNS服务器。
- PTR记录(Pointer Record):用于反向DNS查询,将IP地址映射到域名。
- TXT记录:存储文本信息,通常用于SPF(邮件发送验证)等用途。
4. DNS的层次结构
DNS使用树形结构组织所有的域名,它是分层次的。
- 根域:DNS的顶层是根域,通常表示为
.
(点)。根域不包含任何内容,但它指向其他顶级域。 - 顶级域(TLD):顶级域包含许多常见的域,如
.com
、.org
、.net
、.gov
,以及一些国家代码顶级域(如.cn
、.us
)。 - 二级域:顶级域下方的域是二级域,通常表示为一个品牌或组织的名称,如
example.com
。 - 子域:二级域下方可以有子域(如
www.example.com
),用于组织内部的网络或服务。
5. DNS缓存
DNS缓存是DNS查询中存储的信息,以减少每次查询时的延迟。缓存存储的是域名与IP地址的映射关系,缓存的内容包括:
- 浏览器缓存:浏览器保存近期访问过的网站的IP地址。
- 操作系统缓存:操作系统缓存域名解析结果,减少对DNS服务器的请求。
- 本地DNS服务器缓存:ISP提供的DNS服务器缓存域名的解析结果,减少对权威DNS服务器的查询。
浏览器输入
url
后发生了什么
2)ICMP
ICMP(Internet Control Message Protocol) 是 互联网控制消息协议,用于在IP网络中传递控制信息和错误报告。它是 网络层 的协议,位于 IP协议 之上,用于提供网络设备之间的反馈信息,帮助诊断和管理网络问题。
ICMP主要用于在数据包传输过程中进行错误报告和网络设备之间的调试,常见应用如 ping 和 traceroute。
1. ICMP的功能
ICMP的主要作用是:
- 错误报告:当IP数据包在传输过程中出现问题时,ICMP会向源主机报告错误,帮助用户或网络管理员诊断问题。
- 网络诊断:通过ICMP协议,设备可以测试与目标设备的连接是否正常(如通过
ping
命令)。
2. ICMP消息类型
ICMP协议通过不同类型的消息进行网络控制和错误报告。每个ICMP消息包括一个 类型 和 代码 字段,用于区分不同的消息类型和具体错误。
以下是一些常见的ICMP消息类型:
-
回显请求(Echo Request)和回显应答(Echo Reply)
- 类型:
- 类型8:回显请求(Echo Request)。用于向目标主机发送请求,要求目标主机回复“回显应答”。
- 类型0:回显应答(Echo Reply)。目标主机收到回显请求后,发送回显应答作为响应。
- 应用:常用于 ping 命令来测试网络连接的连通性。
- 示例:
- 当执行
ping www.example.com
时,源主机向目标主机发送 Echo Request 消息,目标主机收到后回复 Echo Reply 消息,告诉源主机目标主机是否可以到达。
- 当执行
- 类型:
-
目的不可达(Destination Unreachable)
- 类型: 类型3,表示无法到达目标主机或目标网络。
- 代码:
- 代码0:网络不可达(Network Unreachable)
- 代码1:主机不可达(Host Unreachable)
- 代码2:协议不可达(Protocol Unreachable)
- 代码3:端口不可达(Port Unreachable)
- 其他代码:其他类型的不可达错误。
- 应用:当路由器无法将数据包转发到目标设备时,会返回目的不可达消息,告知源主机无法到达目标。
-
超时(Time Exceeded)
- 类型: 类型11,表示数据包在传输过程中超过了预定的最大生存时间(TTL)。当数据包经过的跳数过多,TTL值减至0时,路由器会丢弃该数据包,并返回超时消息。
- 代码:
- 代码0:TTL超时。
- 代码1:分段重组超时(fragment reassembly time exceeded)。
应用:常用于
traceroute
命令来检测数据包经过的路径。当数据包的TTL值到达0时,路由器会返回超时消息,帮助追踪数据包经过的路由路径。 -
参数问题(Parameter Problem)
- 类型: 类型12,表示数据包头部有错误或某些参数不正确。
- 代码:
- 代码0:指针字段指向错误位置。
- 代码1:缺少必要的字段。
- 应用:当路由器或接收方发现数据包头部存在错误时,会返回此消息。
-
重定向(Redirect)
- 类型: 类型5,用于告知主机应该通过其他路由器或网关发送数据。
- 代码:
- 代码0:告诉主机应该使用更合适的路由器。
- 代码1:告诉主机目标网络应该通过其他路由器。
- 应用:当路由器发现目标地址的路径不是最优时,会使用ICMP重定向消息建议主机将数据包发送给另一个更合适的路由器。
3. ICMP的应用
-
ping命令:通过发送回显请求(Echo Request)并接收回显应答(Echo Reply),帮助用户检测网络设备是否连通,评估网络延迟等信息。
示例:
- 在命令行输入
ping www.example.com
,操作系统会发送一个ICMP Echo Request消息,并等待目标服务器返回一个Echo Reply消息。如果目标设备正常工作,返回时间(RTT)将显示在屏幕上。
- 在命令行输入
-
traceroute命令:使用ICMP超时(Time Exceeded)消息来跟踪数据包从源主机到目标主机经过的每一跳路由器。每经过一个路由器,TTL值减1,当TTL为0时,路由器发送ICMP Time Exceeded消息,从而显示经过的路径。
示例:
- 在命令行输入
traceroute www.example.com
,它将显示从源到目标主机的每一跳的延迟和路径信息。
- 在命令行输入
3)NAT
NAT(网络地址转换) 是一种网络层技术,用于将内部网络的私有IP地址转换为公共IP地址,或者反过来,将公共IP地址转换为内部网络的私有IP地址。NAT的主要目的是解决IP地址资源紧张的问题,并增强内网的安全性。它被广泛应用于家庭和企业网络中。
1. NAT的工作原理
NAT允许多个内部设备共享一个公共IP地址访问互联网。当一个设备在内网(如家庭或办公室网络)中发起连接请求时,NAT会将请求的源IP地址(通常是私有IP)转换为公共IP地址。当响应数据返回时,NAT会将目标IP地址从公共IP转换回私有IP,然后转发给正确的设备。
2. NAT的类型
根据NAT的行为和转换方式,主要有以下几种类型:
-
静态NAT(Static NAT)
-
定义:静态NAT将一个特定的私有IP地址映射到一个固定的公共IP地址。这种映射是1对1的,每个私有IP都有一个对应的公共IP。
-
应用场景:适用于需要长期暴露在公网的内部设备,如Web服务器、邮件服务器等。
-
优点:映射关系固定,易于管理。
-
缺点:浪费公共IP地址,因为每个私有IP都需要占用一个公共IP。
-
-
动态NAT(Dynamic NAT)
-
定义:动态NAT将一个私有IP地址映射到公共IP地址池中的任意一个公共IP。与静态NAT不同,动态NAT的公共IP地址不是固定的,而是从一个可用的IP地址池中动态分配。
-
应用场景:适用于访问量较大的场景,但无需为每个私有IP分配固定的公共IP。
-
优点:节省公共IP地址,较为灵活。
-
缺点:公共IP地址池有限,如果池中的IP地址耗尽,新的连接将无法建立。
-
-
PAT(Port Address Translation,端口地址转换)
-
定义:PAT是一种特殊的动态NAT,通常用于共享一个公共IP地址访问互联网。PAT通过在公共IP地址的基础上为每个内部设备分配一个独立的端口号,从而允许多个内部设备通过一个公共IP进行通信。
-
应用场景:家庭或小型企业网络,多个设备需要共享一个公共IP。
-
优点:最大限度节省了公共IP地址。
-
缺点:当多个设备同时建立连接时,需要仔细管理端口的分配。
-
3. NAT的优点和缺点
-
优点:
-
IP地址节省:通过NAT,多个内网设备可以共享一个公共IP地址,从而节省了IP地址,尤其是在IPv4地址紧缺的情况下。
-
安全性增强:NAT隐藏了内部网络的结构和IP地址,使得外部设备无法直接访问内网设备,从而提供了基本的安全保护。
-
内网与外网隔离:NAT将内外网络的通信隔离开,内网设备的IP地址不暴露给外部网络。
-
-
缺点:
-
连接追踪问题:NAT在处理多种连接时需要维护一个连接表,表项数量过多可能导致性能下降。
-
某些协议支持差:某些协议(如FTP、SIP、IPsec等)需要特殊处理,因为这些协议会在数据包中嵌入IP地址,而NAT会改变这些地址,导致协议失效。
-
不支持端到端通信:由于NAT在内网与外网之间充当中介,某些端到端的应用(如P2P、VoIP等)可能会受到影响,或需要额外的技术来处理。
-
4. NAT与代理服务器的区别
-
工作层次:
-
NAT:工作在 网络层,主要负责IP地址的转换,不涉及应用层的数据内容。它的主要作用是允许内网设备共享公网IP地址。
-
代理服务器:工作在 应用层,可以处理并修改应用层的请求和响应。代理服务器代替客户端向目标服务器发起请求,能够进行更多的内容控制和管理。
-
-
处理的范围:
-
NAT:仅仅修改数据包的IP地址和端口号,通常是为了解决IP地址共享和内网安全问题。它不会对数据的内容进行检查或修改。
-
代理服务器:代理服务器不仅转发数据包,还能处理、修改或过滤请求和响应内容。例如,代理可以缓存内容、重写请求头、修改网页内容等。
-
-
透明性:
-
NAT:对于客户端来说,NAT是透明的。客户端通常不知道自己正通过NAT设备与外界通信,只知道自己的连接请求被转发到公网。
-
代理服务器:代理服务器通常不透明,客户端需要显式配置代理服务器(除非使用的是透明代理)。客户端会知道自己正通过代理服务器进行通信。
-
-
对协议的支持:
-
NAT:NAT对于许多协议(尤其是那些涉及IP地址在数据包中传递的协议,如FTP、VoIP等)可能需要特殊配置,如端口映射或NAT穿透技术。
-
代理服务器:代理服务器通常支持所有经过的协议,但需要适当配置以处理不同类型的流量。例如,HTTP代理仅处理HTTP请求,而SOCKS代理可以支持任意协议。
-
-
性能:
-
NAT:NAT的性能影响较小,通常只是简单的地址转换,不涉及复杂的内容处理。
-
代理服务器:代理服务器可能会引入额外的延迟,因为它需要处理每个请求并转发响应。代理的性能通常取决于代理服务器的负载和网络带宽。
-
-
使用场景:
-
NAT:适用于内网设备共享一个公网IP的场景,常见于家庭路由器和公司防火墙等设备。
-
代理服务器:适用于需要对应用层数据进行控制、过滤或优化的场景,如企业的Web访问控制、缓存代理、匿名代理等。
-