IP

IP地址是互联网协议地址(Internet Protocol Address)的简称,是分配给每个连接到网络的设备的数字标签。IP地址用于设备的识别和位置寻址。IP地址主要有两种类型:IPv4 和 IPv6。

IPv4 地址结构

IPv4 地址是目前最广泛使用的IP地址形式,它是一个32位的数字,通常表示为四个十进制数,每个数介于0到255之间,数之间用点(.)分隔。例如:192.168.1.1。

分类

早期IP地址显得很有余裕,因此被分为几个类别来达到简化路由表和简化地址管理和分配过程的目的。

网络规模的适应性

IP地址分类允许不同规模的网络选择最合适的地址类别:

  • A类地址用于规模很大的网络,如国际性企业或主要的网络服务提供商。
  • B类地址适用于中等规模的网络,如大学或大型公司。
  • C类地址用于小规模网络,如小型企业或局域网。

简化路由

通过将IP地址分为几个固定的类别,可以简化路由表的结构。因为同一类别的地址具有相同长度的网络前缀,路由器可以通过检查IP地址的前几位就能快速决定如何转发数据包。这种方式在早期互联网上帮助减少了路由器的处理负担,并提高了路由效率。

地址分配和管理

IP地址的分类简化了地址的分配和管理过程。每个类别的地址都有预定的网络和主机部分,这使得网络管理员可以更容易地根据组织的规模和需求分配地址。此外,这也便于实施统一的管理策略和监控网络使用情况。

具体分类

IPv4 地址按照首个字节的值被分为几个类别:

  • A类:第一个字节在1到126之间(网络部分为8位,主机部分为24位)。例如:10.0.0.1。
  • B类:第一个字节在128到191之间(网络部分为16位,主机部分为16位)。例如:172.16.0.1。
  • C类:第一个字节在192到223之间(网络部分为24位,主机部分为8位)。例如:192.168.1.1。
  • D类:第一个字节在224到239之间,用于多播。
  • E类:第一个字节在240到255之间,保留作为实验和研究用途。
    每个IP类别有特定的默认子网掩码,例如A类地址的默认子网掩码是255.0.0.0,B类是255.255.0.0,C类是255.255.255.0。

IPv6 地址结构

IPv6 地址是为了解决IPv4地址耗尽的问题而设计的,它有128位长,通常用八组四个十六进制数表示,每组之间用冒号(:)分隔。例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
IPv6 地址的表示还可以简化,比如省略前导零或者用双冒号(::)代替一系列的零。但是双冒号在一个地址中只能使用一次,以保证地址的唯一解析。

优点

  • IPv6 可自动配置,即使没有 DHCP 服务器也可以实现自动分配IP地址。
  • IPv6 包头包首部长度采用固定的值 40 字节(将额外字段通过软链指向的形式确定为固定长度),去掉了包头校验和,简化了首部结构,减轻了路由器负荷,大大提高了传输的性能
  • IPv6 有应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能,大大提升了安全性

CIDR 无分类地址

CIDR(Classless Inter-Domain Routing,无类别域间路由)是一种用于提高IP地址分配效率和灵活性的方法,特别是在互联网上。CIDR于1993年引入,以解决传统的基于类的IP地址分类方法(如A类、B类、C类)的缺陷,并缓解IPv4地址快速耗尽的问题。CIDR的核心在于它允许网络管理员使用可变长度的子网掩码,从而更加精确地定义网络和主机部分的界限。并且在IPv6中得到广泛应用。

早期分类法的缺陷

  1. 同一网络下没有地址层次,比如一个公司里用了 B 类地址,但是可能需要根据生产环境、测试环境、开发环境来划分地址层次,而这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
  2. A、B、C类不能很好的与现实网络匹配。C 类地址能包含的最大主机数量实在太少了,只有 254,而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,多余的地址被浪费了。

CIDR表示法

CIDR使用斜杠后缀来表示网络地址和它的位掩码的长度。格式为:IP地址/掩码位数。掩码位数指出IP地址中用于表示网络地址的位数。
例如,192.168.0.0/24表示前24位是网络地址,剩余的8位是主机地址。这种表示法允许在网络设计时更灵活地分配IP地址空间。

网络号、主机号和子网掩码

  1. 网络号(Network ID)
    • 网络号是IP地址中用于标识特定网络的部分。在一个网络中,所有设备的网络号都相同,而主机号不同。
    • 对于IPv4地址,根据其类别(A、B、C类),网络号的长度会有所不同。例如,A类地址的前8位是网络号,B类的前16位是网络号,C类的前24位是网络号。
  2. 主机号(Host ID)
    • 主机号是IP地址中用于标识网络中的具体设备的部分。
    • 在同一网络内,每个设备的主机号必须是唯一的。
  3. 子网掩码
    • 用于指示IP地址中哪些位是网络部分(包括子网部分),哪些位是主机部分的一个32位数。子网掩码在网络位上是连续的1,主机位上是0。
    • 子网掩码允许网络管理员将一个较大的网络划分为若干个较小的网络(子网),每个子网具有自己的网络地址。

子网网络地址和子网主机地址

  1. 子网网络地址
    • 子网网络地址(或简称子网地址)是子网中的一个特殊地址,其中所有主机位都设置为0。这个地址用于标识子网本身,而不是子网中的某个具体设备。
    • 例如,对于子网掩码255.255.255.0和IP地址192.168.1.1,子网地址是192.168.1.0
  2. 子网主机地址
    • 子网中除了网络地址和广播地址外的其他地址都是子网主机地址,用于标识子网中的各个设备。
    • 在同一子网内,每个设备的子网主机地址必须是唯一的。
    • 子网主机地址是从网络地址的下一个地址开始,直到广播地址(所有主机位全1)的前一个地址结束。

CIDR的优点

  1. 更灵活的地址分配:网络大小可以根据实际需要定制,不再受传统A、B、C类网络划分的限制。
  2. 减少路由表项:CIDR支持路由聚合(也称为路由汇总),可以将多个小网络合并为一个路由表项,这减少了全球互联网路由表的大小,提高了路由效率。
  3. 更有效的IP地址利用率:通过允许创建细粒度的子网,CIDR减少了IP地址的浪费。

CIDR与子网掩码

CIDR通过使用可变长度的子网掩码来工作,这种掩码直接显示了地址中网络部分的位数。例如,如果掩码位数是24,则子网掩码为255.255.255.0,这意味着IP地址的前三个字节用于网络地址,最后一个字节用于主机地址。这种方法大大增加了网络地址分配的灵活性。

ICMP

ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议,是一个核心的互联网协议,它用于在IP主机、路由器之间传递控制消息,主要用于提供反馈有关网络中存在的问题,而不是直接传输应用程序数据。

主要功能

ICMP执行许多网络功能,其中最常见的包括:

  1. 错误报告:ICMP用于报告错误情况,例如目标不可达、包含生存时间过期的数据包(Time Exceeded)、重定向消息等。
  2. 诊断工具:ICMP也用于实现如Ping和Traceroute这类网络诊断工具。Ping使用ICMP回显请求(Echo Request)和回显应答(Echo Reply)消息来检查两台主机之间的连通性。Traceroute用于显示数据包从源主机到目的主机之间经过的路由路径。
  3. 网络设备配置:某些类型的ICMP消息用于网络设备的初始配置或其他功能。

ICMP消息类型

ICMP 大致可以分为两大类:

  • 一类是用于诊断的查询消息,也就是「查询报文类型
  • 另一类是通知出错原因的错误消息,也就是「差错报文类型
    ICMP消息有多种类型,每种类型都有一个特定的目的。这些类型包括:
  • 目的不可达(Destination Unreachable):当数据无法成功传递时,发送此消息。它可能是由于网络无法到达、主机无法到达、协议无法到达、端口无法到达等原因。
  • 源点抑制(Source Quench):这是一种流控消息,用于请求发送方减少发送速度,现已废弃。
  • 重定向(Redirect Message):告诉主机更改路由表,使用不同的路由器转发数据包。
  • 时间超过(Time Exceeded):当数据包在网络中的生存时间(TTL)达到零时发送,用于防止数据包无限循环。
  • 参数问题(Parameter Problem):指出数据包头部的某些字段不正确。
  • 时间戳请求/时间戳回复(Timestamp):用于记录信息传递的时间,帮助同步网络上的时间。
  • 回显请求/回显应答(Echo Request and Echo Reply):用于网络连通性测试,例如Ping命令。

NAT和NAPT

NAT(网络地址转换,Network Address Translation)NAPT(网络地址端口转换,Network Address Port Translation) 是两种广泛使用的网络技术,它们通过修改经过设备的数据包中的IP地址和端口信息,以实现特定的网络管理目的,如IP地址节省、内网与外网的通信隔离和安全性增强。

NAT

NAT 主要用于将一个地址空间内的IP地址转换为另一个地址空间的IP地址,通常用于将私有(非全球唯一)IP地址转换为公有(全球唯一)IP地址。这种技术在家庭和企业网络中非常常见,用于连接到互联网的路由器上,允许多个设备共享一个或几个公网IP地址。

基本工作原理:

  1. 出站转换:当内网设备(使用私有IP)发送数据到互联网时,NAT设备会将数据包中的源私有IP地址替换为公网IP地址。目的地服务器看到的是这个公网IP地址。
  2. 入站转换:对于返回的数据包,NAT设备查找之前建立的转换表,将目标地址从公网IP改回原始设备的私有IP地址,以确保数据包正确送达发送请求的内部设备。

NAPT (Network Address Port Translation)

NAPT 是 NAT 的一种形式,通常称为端口地址转换(PAT)。NAPT 不仅转换IP地址,还转换数据包中的端口号,使多个设备可以共享单个IP地址。

基本工作原理:

  1. 出站数据包:当数据包从内部网络发出时,NAPT设备修改源IP地址和源端口号,数据包的源端口和IP组合会被替换为外部的公网IP和一个新的端口号。
  2. 入站数据包:对于从外部返回的数据包,NAPT设备使用其维护的映射表找到对应的内部IP地址和端口号,将数据包的目的IP和端口转换回原始的内部网络地址和端口。

ARP

地址解析协议(ARP)是一个用于解析网络层地址(如IPv4地址)为链路层地址(如以太网MAC地址)的关键网络协议。ARP操作主要发生在同一物理网络内或局域网(LAN)中。

ARP的基本工作机制

关键词:ARP 表、广播问询、单播响应

  1. ARP查询过程
    • 当主机A需要与同一局域网上的主机B通信,但不知道B的MAC地址时,A会在其ARP表中查找B的IP地址。
    • 如果ARP表中没有相应记录,A会构造一个ARP请求数据包。这个数据包包含A的IP和MAC地址,以及B的IP地址,但B的MAC地址部分留空。
    • 由于A不知道B的MAC地址,它会使用以太网的广播MAC地址(FF:FF:FF:FF:FF),将ARP请求包通过局域网广播给所有设备。
  2. ARP响应过程
    • 局域网内的所有设备接收到这个ARP请求,但只有IP地址匹配的设备(即B)会回应。
    • B检查ARP请求中的目标IP地址,发现与自己的IP地址相符,于是构造一个ARP响应数据包。这个响应包含B的IP地址和MAC地址,以及A的IP地址和接收到的A的MAC地址。
    • B将这个ARP响应包直接发送给A(单播),而不是广播到网络上。
  3. ARP表的更新
    • 当A接收到来自B的ARP响应后,A会在其ARP表中添加或更新一条记录,包括B的IP地址和对应的MAC地址。这条记录通常会在ARP表中保持一定时间(如20分钟),之后会被刷新。
    • 同样,B在回应ARP请求时,也可能会在其ARP表中添加A的IP和MAC地址。

不同局域网的通信

  • 如果A和B不在同一局域网内,ARP请求则不能直接到达B。在这种情况下,A需要通过一个路由器进行通信。
  • A会检查其路由表,找到到达B的IP地址所需的下一跳路由器的IP地址。
  • A将使用ARP来解析这个路由器的MAC地址(如果不在ARP表中的话),然后将数据发送到路由器。路由器在接收到数据后,将负责将数据转发到B所在的网络。
  • 路由器在转发之前可能还需要进行自己的ARP过程,以解析B的MAC地址(如果B的MAC地址不在其ARP表中的话)。

补充

计算特定子网中可用的主机数量

在计算特定子网中可用的主机数量时,需要减去两个特定的地址:网络地址和广播地址。这两个地址在每个子网中具有特殊的用途,因此它们不能分配给单个主机作为其独立的IP地址。下面详细解释这两个地址的作用和为什么需要在主机数量计算中将它们排除:

网络地址

网络地址是用来标识子网本身的,它是该子网中的第一个地址。在网络地址中,所有的主机位都设置为0。例如,如果子网掩码是255.255.255.0(或 /24),那么对于192.168.1.0/24这个子网,网络地址就是192.168.1.0。这个地址用于在网络层面上标识整个网络,而不是网络中的某个具体设备。

广播地址

广播地址是子网中的最后一个地址,用于向子网内的所有设备发送数据。在广播地址中,所有的主机位都设置为1。继续使用上述例子,对于192.168.1.0/24这个子网,广播地址将是192.168.1.255。网络中的设备使用这个地址来发送广播消息,即向同一局域网中的所有设备发送数据。