Linux网络学习总结三 (网络层 数据链路层)

目录

网络层

IP协议

路由器与路由节点

协议头格式分析

数据分片

网段划分

IP地址 = 网络号+主机号

动态IP分配

网络号和广播地址

私有IP和公网IP

路由

路由器、路由表、路由协议

路由的工作原理

路由的类型

路由协议

数据链路层

以太网概念

以太网帧格式

MAC地址

MTU

ARP协议

DNS

ICMP协议

NAT技术


网络层

IP协议

ip协议是负责将数据从一个主机发送到另一个主机的方法,其定义了计算机网络之间发送数据包的规则和格式。目前IP协议主要分为两个版本,ipv4和ipv6。

IP协议的主要作用有寻址和路由、分片和重组以及错误检测。

  • 寻址和路由:IP协议提供了设备在网络中的唯一标识,并负责将数据包从源地址路由到目的地址。
  • 分片和重组:IP协议支持将大数据包分片并在接收端重组,以适应不同的网络MTU(最大传输单元)。
  • 错误检测:IP协议包含报头校验和字段,用于检测报头中的错误

路由器与路由节点

路由器自身配有IP地址,同时又能够进行路由控制。而节点则是路由器和主机的统称。

节点表示的是网络中的一个设备或者端点,其可以是任何连接到网络的设备,节点可以是计算机、手机、等任何可以发送、接收的中继设备。

节点的类型主要有两种,第一种是终端节点,例如手机打印机,用户可以直接操作的设备。第二种,则是中间节点,这些节点则是用于中继和路由信息的设备,例如路由器、交换机和集线器等。

路由器则是一种专门用来在计算机网络之间转发数据包的设备,其通过路由表和路由协议来确定数据包的最佳传输路径,从而确保数据包能够从源节点到达目的节点。

路由器本身可以作为节点,在网络中,路由器是可以直接连接网络进行通信。一个路由器可以链接多个终端节点,通过这些连接提供互联网或者内部网络的访问。路由器负责在节点之间转发数据包,其根据路由表决定数据包转发的路径。

协议头格式分析

如何根据IP协议交付数据

  • 根据八位协议表明有效载荷是UDP协议还是TCP协议
  • 得到IP层的报文后,先读取20字节,然后判断4为首部长度是否存在选项
  • 根据选项进行解包,有效载荷和报头进行分离
  • 最后根据报头的8为协议字段,决定有效载荷交给上层的tcp还是udp

 IPV4协议头格式

  • Version(版本):4位,表示IP协议的版本号。对于IPv4,这个值为4。

  • IHL(Internet Header Length):4位,表示IP头的长度,以32位字(4字节)为单位。最小值为5,表示20字节。

  • Type of Service(服务类型):8位,表示数据包的服务质量,如优先级、延迟、吞吐量和可靠性。

  • Total Length(总长度):16位,表示整个IP数据包的长度,包括头和数据,以字节为单位。最大值为65535字节。

  • Identification(标识):16位,用于唯一标识主机发送的每个数据报,通常用于分片。

  • Flags(标志):3位,用于控制和标识分片。第一个比特保留,第二个比特为DF(Don't Fragment),第三个比特为MF(More Fragments)。

  • Fragment Offset(片偏移):13位,表示分片的数据在原始数据报中的相对位置。

  • Time to Live(生存时间):8位,表示数据包在网络中的最大跳数,避免无限循环。每经过一个路由器,TTL减1,当TTL为0时,数据包被丢弃。

  • Protocol(协议):8位,表示数据部分使用的协议,如ICMP(1)、TCP(6)、UDP(17)等。

  • Header Checksum(头部校验和):16位,用于校验头部数据的完整性。

  • Source Address(源地址):32位,表示发送方的IP地址。

  • Destination Address(目的地址):32位,表示接收方的IP地址。

  • Options(选项):可选字段,长度可变,提供扩展功能。

  • Padding(填充):用于填充选项字段,使头部长度为32位的整数倍。

数据分片

数据链路层受网络特性限制,无法转发太大的数据,一次发送的数据量是有限的。而单次传输报文的大小则是由传输层决定。所以网络层在发送数据时,因为数据包的大小是传输层决定,另一方面转发数据包的大小又是数据链路层决定,所以网络层为了解决转发数据包大小不统一的问题,所以设计出数据分片。

数据分片指的是当一个IP数据包的大小超过网络的最大传输单元(MTU)的时候,数据包需要被分片以适应网络的传输能力。需要注意每个网络链路的MTU可能存在不同,典型以太网MTU是1500字节。

分片过程分析

  • IP数据包拆分
    • 原始IP数据包拆分成多个分段,每个分段大小则是一个MTU
    • 每个分段中包含IP头部以及部分原始数据
  • IP头部信息
    • IP头部信息会随分片过程被更新,其中的标识、标志和片偏移
    • 同一个IP数据包的不同段都会包含相同的表示,方便识别这些片段属于同一个数据包
    • 标志字段DF:0表示允许分片
    • MF:标识事时候有更多的分段,即后面还有多少个分段
    • 片偏移字段:指示每个片段在原始数据包中的位置,单位是8个字节

 数据组装(接收端将分片后的数据重新组装成原始数据包)

  • 接收片段:接收分片后的数据片段
  • 检查标识:接收端根据标识字段识别是否属于统一原始数据包的片段
  • 检查片偏移和MF标志
    • 根据偏移字段以及MF标志,接收端可以确定每个片段在原始数据包中的位置
    • 当接收到所有片段后,MF标志0表示接受完成
  • 数据重组
    • 将所有片段按照片偏移字段重新组合成原始数据包
    • 移除每个片段的IP头部,只保留其数据部分
  • 完整性效验
    • 重新计算校验和,确保数据包的完整

分片本身存在很多缺点,在实际中不推荐使用数据分片。首先分片会增加延迟和开销,因为每个路由器在转发分片的时候都需要进行额外处理,增加了路由器的计算量。在接收端收到所有数据分段之前无法进行数据处理,导致数据传输的整体延迟。其次会造成高丢包率,如果一个分片丢失那么整个数据包都会进行重新传输,当分片越多时候,丢失分片的概率也会变大。再次分片会存在安全风险,当你发送数据的时候使用大量分片,那么攻击者可以对你的每个分片都进行攻击,导致最终计算溃。最后分片传输的效率低下,因为的每个分段都带有IP头部,增加了额外的开销,同时分片和重组的过程中造成了带宽的浪费。

网段划分

从公网IP理理解网段划分,每个国家都有自己专属的网络IP地址,该网络IP地址都是提前划分号的,国际上路由器也有属于自己路由表,从而实现国家和国家之间的信息转发。IP地址按照一定规律划分,目的仍然是实现数据的精准传输。

网段划分则是指将一个大的网络地址空间划分成多个较小的子网,以便高效的管理和使用IP地址。

网段划分的方法

  • 确定子网的数量和规模
    • 确定需要多少子网以及每个子网中需要多少主机,根据需求计算出合适的子网掩码。
  • 计算子网掩码
    • 确定其网络号和主机号
  • 划分子网
    • 将IP地址空间划分成多个子网,每个子网都有其唯一的网络号。

IP地址 = 网络号+主机号

网络号的本质是帮助网络设备确定数据包应该发送到哪个子网,并最终到达目标设备。网络号是IP地址中的一部分,用于标识同一个子网中的所有网络设备。

子网掩码是一个32位的二进制数,用于从IP地址中提取网络号。子网掩码中,网络号位标记为1,主机位标记为0。

网络号的计算方法则是通过将IP地址与子网掩码按位与进行操作,即可得到网络号。

网络号的主要作用

  • 子网划分:网络号用于区分不同的子网。同一个网络号下的所有设备都在同一个子网内,可以直接通信。
  • 路由选择:路由器根据网络号来确定数据包的传输路径。路由器只需要检查数据包的网络号,就能决定该数据包应该发送到哪个子网。
  • 地址管理:网络号帮助网络管理员管理和分配IP地址,确保地址分配的合理性和有效性。

IP地址的划分

  • A类地址:网络号为前8位,主机号为后24位,范围为1.0.0.0到126.0.0.0。
  • B类地址:网络号为前16位,主机号为后16位,范围为128.0.0.0到191.255.0.0。
  • C类地址:网络号为前24位,主机号为后8位,范围为192.0.0.0到223.255.255.0。
  • D类地址:用于多播,范围为224.0.0.0到239.255.255.255。
  • E类地址:保留用于实验,范围为240.0.0.0到255.255.255.255

动态IP分配

动态IP地址分配是一种通过的DHCP服务器,根据其预先设定好的策略和配置,自动分配底盘地址和其他网络配置参数给网络中设备。

DHCP工作流程

  • DHCP发现
    • 新设备连接到网络后,发送与一个DHCP discover消息,广播到网络中所有的DHCP服务器
  • DHCP提供
    • 收到发现消息后,选择一个可用的IP地址,发送DHCP offer消息给新设备
  • DHCP请求
    • 新设备收到一个或者多个offer消息选择一个IP地址,并向指定的DHCP服务器发送DHCP request消息,表明接受该IP地址
  • DHCP确认
    • 确认分配IP地址和其他网络配置参数

网络号和广播地址

网络号是用于标识网络的部分,表示一个子网的网络范围,所有在同一个子网中的设备共享相同的网络号。网络号的主要作用在于区分不同子网,以及帮助路由器确定数据包的传输路径。

网络号的计算方法是通过IP地址和子网掩码进行按位AND后计算得出。

网路号计算例子

  • IP地址:192.168.1.10
    • 二进制:11000000.10101000.00000001.00001010
  • 子网掩码:255.255.255.0

    • 二进制:11111111.11111111.11111111.00000000
  • 按位与运算:

    • 结果:11000000.10101000.00000001.00000000
    • 网络号:192.168.1.0

 广播地址则是用于向一个子网中所有设备发送数据的IP地址。广播地址是子网内主机号全为1的网络地址。主要用于在一个子网内发送广播消息,所有在该子网内的设备都能够接收到该消息。

广播地址的计算方法则是将网络号的主机部分全部设置位1得到。

计算事例

  • 网络号:192.168.1.0

    • 二进制:11000000.10101000.00000001.00000000
  • 将主机部分全设为1:

    • 二进制:11000000.10101000.00000001.11111111
    • 广播地址:192.168.1.255

私有IP和公网IP

私有IP地址是用于局域网的内部IP地址,私有IP地址不会在互联网上,因为其主要用于内部网络设备之间互相通信,不可以直接与互联网通信。

私有IP地址主要用于家庭或者公司的内部网络,允许多个设备共享一个公共IP地址,通过网络地址转换来访问互联网。

公有IP地址则是用于在互联网上路由的IP地址,每个连接到互联网的设备都拥有一个唯一且公共的IP地址,该IP地址保证全球唯一。公网IP地址主要用于互联网中的设备通信。

私有IP地址和公有IP地址的区别

  • 范围

    • 私有IP地址:只能在局域网内部使用,不能在互联网上路由。
    • 公有IP地址:可以在互联网上路由,确保全球唯一性。
  • 分配方式

    • 私有IP地址:由网络管理员或路由器(通过DHCP)分配。
    • 公有IP地址:由互联网服务提供商(ISP)分配。
  • 网络地址转换(NAT)

    • 私有IP地址:通常通过NAT设备(如路由器)转换成公有IP地址,与互联网通信。
    • 公有IP地址:不需要NAT,可以直接在互联网上通信。
  • 安全性

    • 私有IP地址:更安全,因为它们不在互联网上路由,外部设备无法直接访问。
    • 公有IP地址:需要配置防火墙和其他安全措施,防止外部攻击。

路由

路由指的是计算机网络中,将数据包从源节点传递到目标节点的过程。该过程有需要依赖路由器以及路由协议来确定数据包传输的最佳路径。

路由器、路由表、路由协议

路由器是一种网络设备,用于连接不同的网络,并可以根据路由表和路由协议转发数据包。

路由表则是路由器中存储路径数据信息的数据结构,其中包含网络目标地址以及到达的路径。

路由协议是路由器之间交换路由信息的协议,主要目的是帮助路由器动态更新路由表。

路由的工作原理
  • 数据包到达路由器:数据包到达路由器后,路由器开始读取数据包的目标IP地址
  • 查找路由表:路由器查找路由表,找到与目标IP地址匹配的信息,然后决定数据包下一跳是哪里
  • 转发数据包:路由器将数据包转发到下一跳队列设备,直到数据包到达目标网络为止
  • 路径选择:路由器根据路由表和路由协议选择传输的最佳路径,以确保数据包的高效传输
路由的类型

静态路由:自己手动配置固定的路径,通常用于小型或者简单的网络

动态路由:使用路由协议自动更新和维护路由表,适用于大型和复杂的网络

默认路由: 用于转发到未知目的地的路由,通常用于连接到互联网的路由器

路由协议

内部网关协议

  • RIP(Routing Information Protocol)

    • 使用距离矢量路由算法,最大跳数限制为15跳,适用于小型网络。
    • 周期性广播整个路由表,导致网络带宽占用较高。
    • 版本:RIPv1和RIPv2(支持CIDR和认证)。
  • OSPF(Open Shortest Path First)

    • 使用链路状态路由算法,通过Dijkstra算法计算最短路径。
    • 支持多区域(area)划分,提高网络可扩展性和稳定性。
    • 快速收敛,适用于大型企业和服务提供商网络。
  • EIGRP(Enhanced Interior Gateway Routing Protocol)

    • 思科专有协议,结合了距离矢量和链路状态路由的优点。
    • 快速收敛,适应性强,支持不连续子网和可变长度子网掩码(VLSM)。

数据链路层

数据链路层的主要功能是负责将网络层传输过来的数据封装成帧,然后在相邻接节点之间可靠的传输这些帧。

数据链路层的主要功能

  • 帧封装与帧解封
    • 数据链路层将网络层的数据包封装成帧,同时在帧头添加对应的控制信息
    • 当帧到达接收端的时候,数据链路层解封帧,提取数据包然后提交给网络层
  • 物理地址寻址
    • 数据链路层通过MAC地址来唯一标识网络接口卡
  • 错误检测和纠正
    • 使用循环沉余效验
  • 流量控制
    • 数据链路层可以通过流量控制机制,防止发送方数据发送过快,导致接收方缓冲区溢出

以太网概念

以太网是局域网中的一种标准,规定局域网传输的技术。

以太网帧格式

以太网帧是以太网传输数据的基本单位,以太网帧的格式主要由前导码、帧开始定界符、目标MAC地址、源目标MAC地址、长度字段、数据字段、填充、帧效验序列。

前导码主要用于帧同步,由7个字节比特位组成,接收方用其来同步时钟。帧开始定界符,用于标识帧的开始。数据字段则是携带实际传输的数据,最小的长度是46字节。

需要注意的是以太网报文中的原地址的和目的地址使用的是物理地址,固化且唯一。

以太网封包与解包

  • 封包
    • 构造以太网中各部分内容
    • 生成完整的以太网帧
    • 发送帧
  • 解包
    • 接收以太网帧
    • 检查帧的有效性
    • 解析以太网帧
      • 提取MAC地址,检查MAC地址是否匹配
      • 提取类型/长度字段,判断帧的内容是数据还是上层协议
    • 传递数据到上层协议

尝试整体上理解局域网的实现。在局域网上,两个主机通信的时候,局域网中的其他主机同样可以收到的消息,其他主机只是对消息不作出回应,但是其他主机需要判断该消息是否是发给自己的。那么如果此时,多台主机同时发送消息的时候,则会造成数据碰撞的情况。所以此时便需要碰撞避免算法。

宏观理解局域网的实现

  • 局域网是通过网络设备和传输介质将多个计算机和设备互联,从而形成一个网络系统。主要目标是提供高速、可靠的数据传输和资源共享。
  • 主要组成
    • 网卡(每个网卡有唯一的MAC地址,将该设备连接到网络)
    • 传输介质
    • 交换机
      • 网络设备之间转发数据包,根据数据包中的MAC地址将数据包转发到正确的端口,提高网络效率和性能
    • 路由器
      • 连接不同网络的并进行数据包的路由选择
    • 无线接入点 

数据传输的主要过程

  • 数据封装和发送
    • 发送设备通过网卡将数据封装成以太网帧
    • 封装好的以太网帧需要通过传输介质发送到交换机或者无线接入点
  • 数据转发和路由
    • 交换机接收到数据帧后,根据目标MAC地址查找转发表,确定数据帧应发送到的端口。
    • 路由器接收到数据包后,根据目标IP地址查找路由表,决定数据包应转发的路径。
  • 数据接收和解包
    • 接收设备的网卡接收到数据帧后,解封后同时提取数据
    • 数据传递到特定端口使用

MAC地址

MAC地址是网络设备中唯一的硬件地址,用于局域网中标识设备。每台机器的物理地址都是唯一的。它由组织唯一标识符和设备标识符组成,具有单播、多播和广播三种类型。通过MAC地址,网络中的设备可以正确发送和接收数据帧,从而实现高效的网络通信。

MAC地址的类型

  •  单播地址
    • 指向单个设备的MAC地址。如果帧的目标地址是单播地址,那么帧会被发送到特定的设备上
  • 多播地址
    • 一台设备发送数据给多个设备。用于将帧发送到一组设备
  • 广播地址
    • 用于将帧发送到网络中的所有设备

MAC地址作用

  • 网络通信
    • MAC地址用于标识局域网内的设备,确保数据帧能够正确的发送数据到目标设备
  • 数据链路层的地址解析
    • 局域网中,设备通过MAC地址相互通信。
  • 网络管理和安全
    • 可以通过对MAC地址控制设备的网络访问权限,从而提高网络的安全性

MAC地址类似于到达某个地点的具体路线,而IP地址则是只知道目的地,至于具体的路径并不知道。 

MTU

MTU(最大传输单元),具体是指在一个网络协议数据帧或者数据包中可以传输的最大字节数。MTU是一个网络接口在一个单一的帧或数据包中能够发送的最大数据量,以字节为单位。其中包括数据链路层头部的长度。

以太网的标准MTU是1500字节

MTU的作用

  • 网络性能
    • 较大的MTU可以提高网络的传输效率,因为更大的数据包可以减少协议头部的相对开销。
    • 过大的MTU也会导致更高的重传代价,因为一个大数据包在传输过程中如果出现错误,那么整个数据包都需要进行重传
  • 网络碎片化
    • 如果一个数据包的大小超过了链路的MTU,那么就需要被分片成更小片段进行传输
    • 但是过多的分片会增加网络负载和延迟,同时重新组装分片的数据包
  • 路由MTU发现
    • 其是一种机制,用于确定从源目的地到目的地的最小MTU,以避免分片

 MTU对TCP和UDP协议的影响

  • UDP:较大的MTU可以减少分片,但是增加丢包的风险。如果分片数据包丢失则会导致整个数据包都需要重新发送
  • TCP:较大的MTU可以提高传输效率,但是TCP会通过路径MTU发现机制调整数据包大小,从而避免分片,确保数据可靠传输

ARP协议

ARP协议是TCP/IP协议栈中的一个重要协议。ARP主要作用是在局域网那内通过目标设备的IP地址获取其Mac地址。

ARP协议具有动态解析功能,能够动态解析IP地址到MAC地址的转换,支持局域网内的设备动态变化。但是ARP请求是以广播形式发送,所以可能导致网络负载增加。

ARP缓存表用于存储IP地址到MAC地址的映射关系,通常存储在主机的内存中,缓存的信息会在特定时间内更新。

主要工作原理,当一台主机需要发送数据到局域网中的另一台主机的时候,它首先需要知道目标主机的MAC地址。ARP协议就是通过广播的方式请求目标主机的MAC地址,并在收到回复后进行通信。

ARP请求和回复分析

  • ARP请求
    • 源主机构造一个ARP请求包,包含源IP地址和MAC地址,以及目标主机的IP地址
    • ARP请求包以广播的方式发送到局域网内的所有主机,目标MAC地址则为广播地址
  • ARP回复
    • 局域网中所有的主机都会收到ARP请求包,但是只有目标主机会回复ARP响应包
    • 目标主机在ARP响应包中填入自己的MAC地址,并将响应包单播发送回源主机
  • 缓存ARP结果
    • 源主机收到ARP响应包后,将目标主机的IP地址和MAC地址映射关系缓存到本地ARP缓存表中,便于后续通信直接使用,减少ARP请求的频率

ARP数据包结构分析

  • 硬件类型(Hardware Type):2字节,表示网络类型(以太网为1)。
  • 协议类型(Protocol Type):2字节,表示上层协议类型(IPv4为0x0800)。
  • 硬件地址长度(Hardware Address Length):1字节,表示MAC地址长度(以太网为6)。
  • 协议地址长度(Protocol Address Length):1字节,表示IP地址长度(IPv4为4)。
  • 操作码(Opcode):2字节,表示ARP请求或响应(请求为1,响应为2)。
  • 发送方硬件地址(Sender Hardware Address):6字节,源主机的MAC地址。
  • 发送方协议地址(Sender Protocol Address):4字节,源主机的IP地址。
  • 目标硬件地址(Target Hardware Address):6字节,目标主机的MAC地址(请求时为空)。
  • 目标协议地址(Target Protocol Address):4字节,目标主机的IP地址

ARP因为无验证性特征,所以容易受到ARP欺骗攻击。在ARP欺骗攻击中,攻击者发送伪造的ARP响应包,欺骗目标主机更新的ARP缓存表,从而实现中间人攻击或者拒绝服务攻击。 

防范ARP欺骗攻击方法

  • 静态ARP条目:在关键设备上配置静态ARP条目,防止ARP缓存被篡改。
  • ARP检测工具:使用ARP检测和防护工具(如ARP防火墙、动态ARP检测)监控和阻止可疑的ARP流量。
  • 加密通信:在局域网内使用加密通信协议(如HTTPS、SSH、VPN),即使ARP欺骗成功,也无法窃取敏感数据

DNS

DNS(域名系统),用于将域名解析为IP地址,从而用户能够使用方便记忆的域名去访问的网站。域名就是IP地址的外号,DNS就是用于将外号转换成其大名。

DNS的主要作用也就是将域名转换为IP地址,以便于计算机能够相互通信。

DNS解析过程分析

  • 客户端查询
    • 用户计算机首先检查本地缓存中是否存在查询网址的IP地址
    • 如果有对应IP地址,则直接访问;如果没有,本地DNS解析器会递归DNS服务器发起查询请求
  • 递归查询
    • 首先查询根DNS服务器,获取顶级域名的DNS服务器地址
    • DNS服务器查询顶级域DNS服务器,获取权威DNS服务器地址
    • 最后递归DNS服务查询权威DNS,获取自己查询网址的IP地址
  • 返回结果
    • 递归DNS服务器将IP地址返回给本地DNS解析器,本地DNS解析器将结果缓存,并将IP地址返回给客户端应用程序
  • 建立连接
    • 浏览器使用获取IP地址与目标服务器建立连接,加载网页内容

DNS为了提高查询效率以及减少网络负载,采用缓存机制。首先客户端会存储本地缓存信息,保存每一次的DNS结果。其次递归DNS服务器缓存,以便在后续请求中快速提供答案。

ICMP协议

ICMP协议主要用于测试网络是否畅通,以及是否存在数据丢包问题。其主要功能在于传递控制消息,报告网络错误和状态信息以及帮助网络协议解决对应的网络问题。

ICMP的主要工作原理。ICMP消息嵌入在IP数据包中,通过IP协议进行传输。当网络设备检测到错误或者需要传递状态信息的时候,会生成ICMP消息并发送给相应设备。

ICMP数据包结构

  • 类型(Type):1字节,表示ICMP消息的类型。
  • 代码(Code):1字节,表示特定类型的子类型。
  • 校验和(Checksum):2字节,用于错误检测。
  • 消息内容(Message Content):根据不同类型的ICMP消息,内容结构有所不同。例如,回显请求/应答消息包含标识符和序列号

ICMP应用场景

  • 网络诊断工具
    • ping:使用ICMP回显请求和应答消息检测目标主机的连通性和响应时间。
    • traceroute:使用ICMP超时消息跟踪数据包在网络中的路径,显示数据包经过的路由器列表及延迟时间。
  • 网络错误报告
    • 路由器或主机在无法传递数据包时使用ICMP目标不可达消息通知发送方。
    • 在数据包头部有错误或其他问题时使用ICMP参数问题消息
  • 流量控制和路由优化
    • 源抑制消息(已弃用)用于控制发送方的发送速率。
    • 重定向消息用于通知主机有更好的路由选择

ICMP无连接,所以容易受到洪水攻击或者重定向攻击

  • 过滤ICMP流量
    • 在防火墙和路由器上配置规则,限制和监控ICMP流量,防止攻击和滥用
  • 限制响应频率
    • 控制ICMP的响应频率,防止洪水攻击对网络设备的影响 

NAT技术

NAT(网络地址转换)是一种在路由器或者防火墙上使用的技术,用于不同网络之间转换IP地址。

NAT用于将私有 网络IP地址转换为公有IP地址,使得私有网络的设备可以进行网络通信。同时允许多个设备共享一个或者多个公共IP地址访问互联网。

工作原理:当内部网络设备通过NAT设备访问外部网络的时候,NAT设备会将内部IP地址转化为公共IP地址。NAT设备会维护一个地址转换表,跟踪内部IP地址和端口转换后IP地址与端口的对应关系。

NAT类型

  • 静态NAT
    • 每个内部的IP地址都对应一个唯一的公共IP地址
    • 映射关系是固定,通常用于需要从外部网络访问的内部服务器
  • 动态NAT
    • 内部IP地址动态映射到一个公共地址池中地址
    • 当内部设备发起连接的时候,NAT设备从地址池中分配一个未使用的公共IP地址
  • 端口地址转换
    • 多个内部IP地址通过转换端口号共享一个公共IP地址
    • 多对一NAT或者NAT过载

端口地址转换流程分析

  • 发起连接
    • 内部设备向外部设备发起HTTP请求
  • 地址转换(NAT接收数据包后,将源IP地址和端口转换为公共IP地址和端口号)
  • 数据包转发(转发后的数据包通过互联网发送到目标主机)
  • 响应处理(目标服务器响应后,NAT接收响应数据包后,根据地址转换表,将该数据包发送给请求主机) 

NAT的优点

  • 节省IP地址
    • NAT允许多个内部设备共享一个或者多个公共的IP地址
  • 提高安全性(防止外部设备直接访问内部网络,从而对内部网络进行攻击)
  • 灵活性和可拓展性强

NAT的缺点

  • 性能开销大(因为NAT设备需要维护地址转化表,如果大量的转发则会影响其性能)
  • 协议兼容性不好
  • 影响端到端的连接 
  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值