突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))

1 网络层概述

TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。

一、主要功能

网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后,传输层将其封装成数据包(通常称为段),并传递给网络层。网络层根据数据包中的目的地址信息,确定数据包应该通过哪些路由器或交换机进行转发,最终到达目标主机。

为了实现这一功能,网络层使用了 IP(Internet Protocol,互联网协议)作为其核心协议。IP 协议定义了在网络中如何寻址、传递和分配数据包。每个数据包都包含源 IP 地址和目的 IP 地址,这样网络层就可以根据这些地址信息来确定数据包的传输路径。

二、其他协议

除了 IP 协议外,网络层还包含了一些其他的协议,以支持更复杂的网络功能和错误处理。例如,ICMP(Internet Control Message Protocol,互联网控制消息协议)用于在网络中传递错误消息。当数据包在网络中传输时,如果遇到问题(如无法到达目的地址或数据包过期),ICMP协议会生成相应的错误消息并返回给源主机,以便源主机能够采取相应的处理措施。

三、路由选择

网络层还负责路由选择,即根据网络拓扑结构、链路状态、路由算法等信息,选择最佳的数据包传输路径。这通常涉及到动态路由协议(如 OSPF、BGP 等)和静态路由配置。动态路由协议允许路由器之间交换路由信息,并根据网络变化自动调整路由表;而静态路由则需要管理员手动配置路由条目。

四、安全性与可靠性

网络层还涉及一些安全性和可靠性的考虑。例如,IPsec(IP 安全性)协议提供了对网络层数据包的加密和认证功能,以确保数据在传输过程中的机密性和完整性。此外,网络层还通过一些机制(如分片与重组、流量控制等)来确保数据包的可靠传输。

2 网络层与 OSI 七层模型中网络层的比较

TCP/IP 四层模型与 OSI 七层模型都是用于描述计算机网络通信的架构模型,但它们之间存在一些显著的差异。特别是在网络层这一部分,两种模型虽然有着相似的功能和作用,但在具体的实现和应用上却有所不同。以下是对 TCP/IP 四层模型中网络层与 OSI 七层模型中网络层的详细比较:

一、定义与功能

TCP/IP 四层模型中的网络层主要负责处理数据包(在 TCP/IP 中通常称为数据报)的路由和转发,确保数据能够从源主机准确地传输到目标主机。它使用 IP 协议作为核心,处理机器之间跨多个网络的路由,并管理网络名称和地址。

OSI 七层模型中的网络层则位于数据链路层和应用层之间,它同样负责数据的路由和转发,但更注重于为数据提供可靠的传输路径。OSI 网络层关注于将数据从源端经过若干个中间节点传送到目的端,并为此提供最基本的端到端的数据传送服务。

二、协议与组件

TCP/IP 网络层的主要协议包括 IP 协议、ICMP 协议、ARP 协议等。这些协议共同协作,实现数据包的封装、寻址、路由选择和转发等功能。

OSI 网络层则包含更多的协议和组件,如 X.25 协议、综合业务数据网(ISDN)、异步传输模式(ATM)等。这些协议和组件提供了更丰富的网络服务和功能,以满足不同应用场景的需求。

三、关注点与优化

TCP/IP 网络层更注重于实际应用的效率和性能。它采用了一系列优化措施,如分片与重组、流量控制等,以确保数据能够高效、可靠地传输。此外,TCP/IP 网络层还关注于安全性,通过 IPsec 等协议提供对网络层数据包的加密和认证功能。

OSI 网络层则更关注于网络的标准化和通用性。它定义了一系列通用的网络服务和接口,以便不同的网络设备和应用可以无缝地连接和通信。OSI 网络层还关注于网络的扩展性和灵活性,以适应不断变化的网络环境。

四、实际应用与影响

TCP/IP 模型由于其简洁性和实用性,在实际应用中得到了广泛的采用。互联网以及大多数现代计算机网络都是基于 TCP/IP 协议栈构建的。TCP/IP 网络层的优秀设计使得这些网络能够高效地处理大量数据传输任务。

OSI 模型虽然提供了对网络通信的详尽描述和标准化,但在实际应用中并没有得到广泛采用。这主要是因为 OSI 模型过于复杂和庞大,难以在实际网络环境中实现。然而,OSI 模型对于网络研究和教学仍然具有重要意义,它提供了一种理解和分析网络通信的有效框架。

3 网络层基础

3.1 IP 地址

一、IP地址

IP地址,即互联网协议地址,是分配给连接到互联网的设备的一个数字标签。它用于在网络层中标识和定位设备,确保数据包能够准确地送达目标设备。每个IP地址都是唯一的,由网络部分和主机部分组成。

IP地址可以分为四个类别:A 类、B 类、C 类和 D 类。每个类别的IP地址范围、网络部分和主机部分的位数都有所不同。例如,A 类地址的网络部分占用前 8 位,主机部分占用后 24 位;而C类地址的网络部分占用前 24 位,主机部分占用后 8 位。这种分类方式有助于根据网络规模选择合适的 IP 地址类别。

A类 IP 地址:

  • A 类 IP 地址由 1 字节的网络地址和 3 字节的主机地址组成。网络地址的最高位必须是"0"。
  • 地址范围从 1.0.0.0 到 126.0.0.0。
  • A 类地址通常用于大型网络,每个网络可以容纳超过 1 亿个主机。

B 类 IP 地址:

  • B 类 IP 地址由 2 字节的网络地址和 2 字节的主机地址组成,网络地址的最高位必须是"10"。
  • 地址范围从 128.0.0.0 到 191.255.255.255。
  • B 类地址适用于中等规模的网络。

C 类 IP 地址:

  • C 类 IP 地址由 3 字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是"110"。
  • 范围从 192.0.0.0 到 223.255.255.255。
  • C 类地址通常用于小型网络,每个网络能容纳 254 个主机。

D 类 IP 地址:

  • D 类地址不用于标识具体的网络设备,而是用于多播(Multicast)地址,即一个数据包可以发送给多个目标设备。
  • D 类 IP 地址的第一个字节以"1110"开始,地址范围从 224.0.0.0 到 239.255.255.255。

3.2 子网划分

在网络层中,子网划分是一个核心概念,它用于将一个大的网络分割成若干个子网络,以提高IP地址的利用率和网络的灵活性。

(1)子网划分的基本原理

子网划分的基本思想是通过改变 IP 地址的默认子网掩码,来重新定义网络地址和主机地址的边界。默认情况下,IP 地址根据类别(A 类、B 类、C 类)来划分网络部分和主机部分。但子网划分允许我们根据实际需求,自定义这些边界,从而更精细地控制网络地址的分配。

子网掩码是实现子网划分的关键。它是一个 32 位的二进制数,与 IP 地址一起使用,来确定哪些位是网络地址,哪些位是主机地址。例如,对于一个C类地址(如 192.168.1.0),默认的子网掩码是 255.255.255.0。通过改变这个子网掩码,我们可以将网络划分为更小的子网。

(2)子网划分的步骤

  • 确定原始网络和子网掩码:首先,需要知道原始的IP地址范围和子网掩码。
  • 计算可用主机数:根据原始子网掩码,计算每个子网中可用的主机数。
  • 确定新的子网掩码:根据所需的子网数量和每个子网中的主机数,确定新的子网掩码。
  • 划分子网:使用新的子网掩码,将原始网络划分为多个子网。
  • 分配IP地址:为每个子网分配IP地址范围,并确保它们不会重叠。

(3)示例

假设我们有一个 C 类网络地址 192.168.1.0,默认的子网掩码是 255.255.255.0。现在,我们希望将这个网络划分为 4 个子网,每个子网中至少有 10 台主机。

  • 计算可用主机数:原始的子网掩码 255.255.255.0 意味着前 24 位是网络地址,后 8 位是主机地址。因此,每个子网最多可以有 2^8-2=254 台主机(减去网络地址和广播地址)。

  • 确定新的子网掩码:由于我们需要 4 个子网,我们需要至少 2 位来表示这些子网。这意味着我们需要从主机地址中借用 2 位作为网络地址。因此,新的子网掩码将是 255.255.255.192(即 11111111.11111111.11111111.11000000)。

  • 划分子网:使用新的子网掩码,我们可以将网络划分为以下4个子网:

192.168.1.0/26(网络地址:192.168.1.0,主机范围:192.168.1.1-192.168.1.62)

192.168.1.64/26(网络地址:192.168.1.64,主机范围:192.168.1.65-192.168.1.126)

192.168.1.128/26(网络地址:192.168.1.128,主机范围:192.168.1.129-192.168.1.190)

192.168.1.192/26(网络地址:192.168.1.192,主机范围:192.168.1.193-192.168.1.254)

  • 分配IP地址:现在,每个子网都有足够的IP地址供至少10台主机使用。你可以根据需要为每个子网分配IP地址。

3.3 CIDR

CIDR(Classless Inter-Domain Routing,无类域间路由选择)是 TCP/IP 四层模型中网络层的一种 IP 地址分配和路由选择技术。这种技术相较于传统的IP地址分类方式,提供了更加灵活和高效的 IP 地址管理方案。

CIDR 的核心思想在于打破了基于类别的 IP 地址分配限制,引入了可变长度子网掩码(VLSM)的概念。通过 CIDR,管理员可以根据实际需求,灵活地调整网络前缀的长度,从而实现对 IP 地址空间的更高效利用。

在CIDR 中,IP 地址被划分为网络前缀和主机标识符两部分。网络前缀用于标识网络地址,而主机标识符则用于标识网络内的具体主机。这种划分方式使得 IP 地址的分配更加灵活,能够适应不同规模的网络需求。

CIDR 使用一个斜线后跟一个数字来表示前缀长度,例如 192.168.0.0/16。在这个例子中,"/16"表示前 16 位是网络部分,剩下的位则是主机部分。这种表示法使得我们可以快速判断一个 IP 地址属于哪个网络。

CIDR 的引入带来了诸多好处。首先,它提高了 IPv4 地址空间的分配效率,减少了 IP 地址的浪费。其次,CIDR 使得路由表更加简洁,提高了路由选择的效率。此外,CIDR 还有助于简化网络管理,降低网络维护成本。

在实际应用中,CIDR 使得网络管理员能够更加精确地控制IP地址的分配和使用。例如,在划分子网时,管理员可以根据子网内主机的数量,灵活地调整网络前缀的长度,从而确保每个子网都能得到足够的IP地址资源。

3.3 VLSM

VLSM(Variable Length Subnet Mask,可变长子网掩码)是网络层的一个关键概念,它允许网络管理员根据实际需求定制子网的大小,从而实现更灵活和高效的IP地址管理。

(1)VLSM 的基本原理

在传统的 IP 地址分配中,子网掩码是固定的,因此每个子网的大小也是固定的。这可能导致某些子网中 IP 地址的浪费,而另一些子网则可能面临 IP 地址不足的问题。VLSM 通过引入可变长的子网掩码,打破了这种限制,使得每个子网可以有不同的大小。

VLSM 的核心思想是从主机位中借用几位作为网络位,从而扩展网络部分的位数。通过调整子网掩码的长度,可以精确地控制每个子网的大小和范围。

(2)VLSM 的应用

VLSM 主要应用于大型网络环境中,特别是在需要精细控制 IP 地址分配和路由选择的情况下。它可以帮助网络管理员更有效地利用IP地址空间,减少地址浪费,并简化网络管理。

(3)示例

假设我们有一个 C 类网络地址 192.168.1.0,默认的子网掩码是 255.255.255.0。现在,我们希望将这个网络划分为两个大小不同的子网。

  • 确定原始网络和子网掩码:

原始网络地址:192.168.1.0

原始子网掩码:255.255.255.0

  • 计算可用主机数:

在默认子网掩码下,每个子网可以有 254 个可用主机地址(减去网络地址和广播地址)。

  • 确定新的子网掩码:

我们希望将网络划分为两个子网,一个大子网和一个小子网。假设大子网需要 200 个主机地址,小子网需要 50 个主机地址。

对于大子网,我们需要一个能够容纳 200 个主机的子网掩码。由于 2^8 = 256,我们可以使用/24(即 255.255.255.0)作为子网掩码,这将提供足够的地址空间。

对于小子网,我们需要一个能够容纳 50 个主机的子网掩码。由于 2^7 = 128,我们可以使用/27(即 255.255.255.224)作为子网掩码。

  • 划分子网:

使用/24作为大子网的子网掩码,保持原始网络地址 192.168.1.0 不变。

对于小子网,我们需要从原始网络中借用几位作为网络位。从主机位中借用 3 位(因为 2^3 = 8,足够区分两个子网),得到新的子网地址 192.168.1.32(二进制表示为 11000000.10101000.00000001.00100000)。小子网的子网掩码为 255.255.255.224。

  • 分配IP地址:

大子网的IP地址范围为 192.168.1.1 至 192.168.1.254(除去网络地址和广播地址)。

小子网的IP地址范围为 192.168.1.33 至 192.168.1.62(同样除去网络地址和广播地址)。

通过这个示例,我们可以看到 VLSM 如何允许我们根据实际需求创建不同大小的子网,从而更有效地利用 IP 地址空间。这种灵活性使得 VLSM 成为大型和复杂网络环境中不可或缺的工具。

3.4 超网

超网(Supernetting)是一种 IP 地址分配技术,主要用于简化路由表,提高网络的可扩展性和灵活性。超网通过聚合多个连续的子网,形成一个更大的、逻辑上统一的网络,从而减少了路由表中的条目数量,降低了路由器的处理负担。

(1)超网的基本原理

在传统的 CIDR(无类别域间路由)技术中,IP 地址被划分为网络前缀和主机标识符两部分。通过改变网络前缀的长度,CIDR 可以灵活地划分不同大小的子网。然而,随着网络规模的扩大和子网数量的增加,路由表的复杂性也会不断上升,给网络管理带来挑战。

超网技术就是在 CIDR 的基础上进一步发展的。它通过将多个连续的 CIDR 块聚合成一个更大的网络,简化了路由表的结构。具体来说,超网技术允许我们定义一个比单个子网更长的网络前缀,从而将多个子网合并成一个超网。这样做的好处是减少了路由表中需要维护的子网数量,降低了网络管理的复杂性。

(2)超网的实现方式

实现超网的关键在于确定一个合适的网络前缀长度,以便将多个连续的 CIDR 块合并成一个超网。这通常需要根据网络的实际情况和需求进行权衡和选择。一旦确定了网络前缀长度,就可以将多个 CIDR 块聚合到一个超网中,并在路由表中用一条记录来表示这个超网。

(3)示例

假设我们有以下四个连续的CIDR块:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

这四个 CIDR 块都是/24 的,意味着它们各自有 256 个 IP 地址(其中 2 个用于网络地址和广播地址,剩下 254 个可用于主机)。如果我们想将这四个 CIDR 块合并成一个超网,可以选择一个更长的网络前缀。在这个例子中,我们可以选择/22 作为超网的网络前缀。

上面/22 的前缀意味着前 22 位是网络地址,后 10 位是主机地址。这样,我们就可以将上述四个 CIDR 块合并成一个 192.168.0.0/22 的超网。这个超网包含了从 192.168.0.0 到 192.168.3.255 的所有 IP 地址。

在路由表中,我们只需要一条记录来表示这个超网,而不是四条记录来分别表示四个 CIDR 块。这大大简化了路由表的结构,提高了路由器的处理效率。

(4)超网的优势

超网技术的优势主要体现在以下几个方面:

  • 简化路由表:通过聚合多个子网成一个超网,减少了路由表中的条目数量,使得路由表更加简洁。
  • 提高路由效率:减少了路由器的处理负担,提高了数据包转发的速度和准确性。
  • 增强网络可扩展性:随着网络的扩展,可以通过调整超网的网络前缀长度来适应不同的需求,保持网络的灵活性和可扩展性。

3.5 私有 IP 地址

私有 IP 地址主要用于在本地局域网中标识设备,确保它们可以相互通信。与公有 IP 地址(即互联网上全局可达的IP地址)不同,私有IP地址不会在互联网上路由,因此它们只能在特定范围内使用。

私有 IP 地址范围由 IANA(Internet Assigned Numbers Authority)保留,主要包括以下三个范围:

  • 10.0.0.0 ~ 10.255.255.255
  • 172.16.0.0 ~ 172.31.255.255
  • 192.168.0.0 ~ 192.168.255.255

这些地址范围被专门用于私有网络,如家庭网络、办公室局域网、数据中心等场景。在这些场景中,私有 IP 地址可以确保局域网内的设备之间可以通信,而不会与其他网络的设备发生冲突。

在选择私有 IP 地址时,企业需要注意以下几点:

  • 避免与常见的网络设备或应用程序自动分配的 IP 地址范围重叠,如 192.168.0.0 和 192.168.1.0 段,以减少 IP 地址冲突或其他故障的可能性。
  • 可以采用 C 类地址的子网掩码,并根据需要采用变长子网掩码,以获取更多的 IP 网段,并使每个子网中所容纳的计算机数量更为适宜。

通过合理使用私有 IP 地址,网络管理员可以更加灵活和高效地管理本地局域网内的设备,确保它们之间的通信顺畅,同时避免与互联网上的其他设备发生冲突。

3.6 NAT

NAT(Network Address Translator,网络地址转换)用于在私有网络和公共网络之间转换地址。NAT 允许一个私有网络(如一个家庭或企业的内部网络)中的设备使用私有 IP 地址,并通过一个公共 IP 地址与外部网络(如互联网)进行通信。

NAT 的主要功能包括地址转换和端口转换。

  • 地址转换:当私有网络中的设备要访问外部网络时,NAT 设备(如路由器或防火墙)会为该设备分配一个临时的公共 IP 地址。这通常是通过修改设备发送的数据包中的源 IP 地址来实现的,将私有 IP 地址替换为公共 IP 地址。这样,外部网络就可以通过这个公共 IP 地址与私有网络中的设备进行通信。
  • 端口转换:NAT 还负责处理端口转换。当外部网络响应私有网络中的设备时,NAT 设备会将响应数据中的目标公共 IP 地址和端口号转换回原始的私有 IP 地址和端口号。这样,私有网络中的设备就能正确地接收到外部网络的响应。

NAT 的使用有几个主要优点:

  • 节省公共 IP 地址:由于多个私有设备可以共享一个公共 IP 地址,NAT 有助于节省公共IP地址资源。
  • 提高安全性:通过隐藏私有网络的内部结构和设备,NAT 提供了一定程度的安全保护,使得外部网络难以直接访问私有网络中的设备。
  • 简化网络管理:NAT 可以简化网络地址配置和管理任务,特别是在大型网络中。

然而,NAT也有一些潜在的缺点,如可能增加网络延迟、在某些情况下可能导致通信问题(如某些基于端到端连接的应用可能无法正常工作),以及可能增加网络日志和追踪的难度。

相关推荐
tangliang_cn19 分钟前
java入门 自定义springboot starter
java·开发语言·spring boot
友友马19 分钟前
『 Linux 』网络层 - IP协议(一)
linux·网络·tcp/ip
程序猿阿伟20 分钟前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
新知图书31 分钟前
Rust编程与项目实战-模块std::thread(之一)
开发语言·后端·rust
威威猫的栗子33 分钟前
Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画
开发语言·python
力透键背33 分钟前
display: none和visibility: hidden的区别
开发语言·前端·javascript
bluefox197934 分钟前
使用 Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别
开发语言·c#
ö Constancy1 小时前
c++ 笔记
开发语言·c++
墨染风华不染尘1 小时前
python之开发笔记
开发语言·笔记·python
徐霞客3201 小时前
Qt入门1——认识Qt的几个常用头文件和常用函数
开发语言·c++·笔记·qt