系统设计基础知识系列第八章了解IP地址和端口。你可以阅读我以前的文章
系统设计基础知识(一) 网络
系统设计基础知识(二) 数据库
系统设计的基础知识(三)吞吐量和延迟
系统设计基础知识(四)—系统可用性
系统设计基础知识(五)—缓存
系统设计基础知识(六)—缓存区
系统设计基础知识(七)—代理
IP地址——系统在网络中的地址
端口——系统内服务的地址IP地址 端口=特定系统上特定服务的地址
协议套件
- IP 协议 (IP) —它是 TCP/IP 协议套件中的核心协议套件。它定义了用于实现无连接服务的网络层数据包格式,包括主机之间的寻址和路由数据包。不同网络技术的主要区别在于数据链路层和物理层,例如不同的局域网技术和广域网技术。网际协议可以在TCP/IP网络层的网际协议下统一不同的网络技术。Internet 协议使许多互连的计算机网络能够通过统一的 IP 数据包传输进行通信。还有其他协议。
- Internet 控制消息协议 (ICMP) — 它是一种无连接协议,是 TCP/IP 协议套件的子协议,用于在 IP 主机和路由器之间传输控制消息。控制消息是指网络本身的消息,比如网络是否可达,主机是否可达,路由是否可用。因此。这些控制消息不传输用户数据,但对用户数据的传输和网络安全很重要。
- 地址解析协议(ARP) ——用于实现IP地址到MAC地址的映射,即查询目标IP对应的MAC地址。
- 反向地址解析协议 (RARP) — 它允许 LAN 上的物理机从网关服务器的 ARP 表或缓存中请求其 IP 地址。网络管理员在 LAN 的网关路由器中创建一个表来映射物理地址 (MAC) 及其对应的 IP 地址。
- 路由信息协议 (RIP) — 它是一种相对简单的内部网关协议。在 RIP 网络中,RIP 要求网络中的每个路由器都维护从每个路由器到每个目的网络的路由信息。它采用距离向量算法,使用跳数作为度量来衡量到目标网络的距离。距离是到达目标站点所需的链接数,范围从0到16,值为16表示路径无限长。从路由器到其直连网络的跳数定义为1,从路由器到其非直连网络的距离定义为每个路由器的距离(n 1)。
- 开放最短路径优先 (OSPF) — 它是一种链路状态路由协议和内部网关协议,用于在单个自治系统中进行路由决策。每个 OSPF 路由器使用最短路径优先算法 (SPF) 计算不同的路由并构建路由表。该协议仅涉及网络中链路或接口的状态(IP 地址的上下波动、掩码带宽、利用率和延迟)。每个路由器与该区域中的其他路由器交换其链路状态信息。这样,网络上的每个路由器都会对网络结构有相同的理解。然后,OSPF 不仅可以计算两个网络节点之间的最短路径,还可以计算通信成本。
- 外部网关协议 (EGP) —它旨在在 Internet 上的外部路由器之间交换路由和可达性信息。
- 用户数据报协议 (UDP) — 它是一种无连接传输层协议,提供简单的面向事务的不可靠通信服务。它是一种将应用程序发送的数据按原样发送到网络的机制。即使网络拥塞,它也无法进行流量控制。传输过程中发生丢包,没有重传。
- 传输控制协议 (TCP) — 它是一种面向连接且可靠的流传输服务。流是不间断的数据。当应用程序使用 TCP 发送消息时,它是按顺序发送的,但接收方接收到的数据流是没有间隔的。此外,TCP 通过为其传输的每个字段分配一个序列号来获得可靠性。
在我们的日常生活中,我们用于访问 Internet 的电子设备都有 IP 地址。IP地址分为IPV4和IPV6。在这里,我们可以将 IPV4 地址称为 IP 地址。
IPv4
- 它是 Internet 协议 (IP) 的第四个版本。它是 Internet 上基于标准的互联互通方法的核心协议之一。
- 然而, 2011年互联网号码分配机构(IANA) 的IPv4地址池彻底枯竭,严重制约了互联网的发展。
- 当网络中的 2 台主机想要通信时,它们必须知道各自的 IP 地址。TCP/IP 协议使用 IP 地址来识别网络中的不同主机。
- 它为 Internet 上的每个网络和每个主机分配一个逻辑地址。IP 地址由一个 32 位二进制数组成。为了方便记忆,将IP地址分成32位十六进制数,每段8位,一共4段,然后将每段8位二进制数转换为十进制数,中间的点是分开的。该表达式称为点十进制表示法。事实上,它可以提供 4,294,967,296 (2³²) 个唯一地址,但大块被保留用于特殊网络用途。
IPv4 数据报格式
版本— 这 4 位指定数据报的 IP 协议版本
头长——这 4 位决定了有效载荷在 IP 数据报中的实际开始位置
服务类型 — IPv4 报头中包含 8 位,以允许区分不同类型的 IP 数据报
数据报长度— IP 数据报的总长度(报头 数据),以字节为单位
16-bit Identifier, Flags, 13-bit Fragmentation offset — 当一个大的 IP 数据报被分解成几个较小的 IP 数据报时,这些数据报在被重新组装时独立地转发到目的地,然后它们的有效载荷数据被传递到传输层的传输层。目标主机或 IPv6 不允许分段时
Time-to-Live(TTL) ——这个字段是为了确保数据报不会永远循环
上层协议— 该字段的值指示此 IP 数据报的数据部分应传递到的特定传输层协议,TCP=6,UDP=17。
标头校验和— 帮助路由器检测接收到的 IP 数据报中的位错误
源 IP 地址和目标 IP 地址— 当源创建数据报时,它将其 IP 地址插入源 IP 地址字段,并将最终目标的地址插入目标 IP 地址字段。
选项— 选项字段允许扩展 IP 标头
数据— IP 数据报的数据字段包含要传送到目的地的传输层段(TCP 或 UDP)。
开销—如果数据报携带 TCP 段,则 IP 数据报有 20 个字节的报头。
- 每个IP地址在内部分为两部分,即网络号和主机号。
- 网络号(网络地址) ——用于标识大型 TCP/IP 网络中的单个网段(即网络的网络)。
- 主机号(主机地址) ——用于识别每个网络内的 TCP/IP 节点,例如工作站、服务器、路由器或其他 TCP/IP 设备。
- IP 地址中的网络号和主机号共 32 位。
- 由于网络规模的不同,有A、B、C、D、E 5种,只有B和C比较常用。
- A、B、C 类地址称为单播地址,只能分配给唯一的主机。
- E类地址是在IP地址设计之初为科学研究保留的。
- A 类 IP 地址— 它由一个 1 字节的网络地址和一个 3 字节的主机地址组成。它主要是为大型网络设计的。网络地址的最高位必须为“0”,地址范围为 1.0.0.0 到 127.0.0.0。有 127 个 A 类网络可用,每个网络可以容纳 16,777,214 台主机,其中 127.0.0.1 是代表主机本身的特殊 IP 地址,用于在本地机器上进行测试。0代表任意地址,127是环回测试地址,所以A类IP地址的实际范围是1-126。默认子网掩码为 255.0.0.0。
- B 类 IP 地址— 它由一个 2 字节的网络地址和一个 2 字节的主机地址组成。网络地址的最高位必须是“10”,地址范围是128.0.0.0到191.255.255.255,其中128.0.0.0和191.255.0.0是保留IP,所以实际范围是128.1.0.0-191.254。 0.0。共有 16,382 个网络,每个网络可容纳 65,534 台主机。
- C类IP地址——由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须为“110”。地址范围为 192.0.0.0 到 233.255.255.255,其中 192.0.0.0 和 223.255.255.0 为保留 IP,因此实际范围为 192.0.1.0–223.255.254.0。共有 2,097,152 个网络,每个网络可容纳 254 台主机。
- D 类 IP 地址— 用于多播。D类IP地址的第一个字节以“1110”开头,这是一个专门保留的地址。它不指向特定的网络,并且这种类型的地址当前用于多播,通过识别在 224.0.0.0 到 239.255.255.255 之间共享相同协议的一组计算机,一次寻址一组计算机。
- E 类 IP 地址 —保留供将来使用。地址范围为 240.0.0.0 到 255.255.255.254,其中 255.255.255.255 为广播地址。
- 公共地址——IP地址由网络信息中心统一管理,分配给申请注册的组织。
- 特殊 IP 地址:
- 广播地址— 子网内的所有网络接口都可以接收此广播消息。有直播和限播之分。直接广播是目标网络的网络地址和二进制全1的主机地址。有限广播是网络地址和主机地址都是二进制1的地址(即255.255.255.255)。
- 多播地址— 用于视频广播系统。它的地址范围是从 224.0.0.0 到 239.255.255.255(D 类 IP 地址)。224.0.0.1 指所有主机,224.0.0.2 指所有路由器。
- 环回地址——网络地址为127的IP地址成为环回地址,主要用于本地环回测试和本地机器进程之间的通信。实际中经常使用的环回地址是127.0.0.1,也叫localhost。
- 私有地址——它是一个未注册的地址,专门用于组织的内部网络。
A 类 — 10.0.0.0 ~10.255.255.255
B 类 — 172.16.0.0 ~ 172.31.255.255
C 类 — 192.168.0.0 ~ 192.168.255.255
- 静态 IP 地址是由网络管理员永久分配给设备的固定地址
- 动态 IP 地址是由动态主机配置协议 (DHCP)服务器自动分配给设备的临时地址,并且经常更改。
- 在微软电脑中,可以在网络属性中选择“自动获取IP地址”选项,设置设备动态获取IP地址(网络地址、子网掩码、默认网关、DNS服务器)。
- 每次设备连接到网络时,动态 IP 地址都会更改。当用户在 Web 浏览器上输入 URL 时,DNS 服务器会将域名映射到 IP 地址。例如,通过Modem、ISDN、ADSL、有线宽带 上网的电脑,每次上网都临时分配一次。动态 IP 地址将从地址池中提取,然后分配给用户,并在几天或几周后返回到地址池中。
子网
- 子网掩码— 一种“全为”位模式,用于屏蔽 IP 地址的网络部分
- 对于 A 类 IP 地址,默认子网掩码为 255.0.0.0;
- 对于 B 类 IP 地址,默认子网掩码为 255.255.0.0;
- 对于 C 类 IP 地址,默认子网掩码为 255.255.255.0
- 使用子网掩码可以将大型网络划分为子网,即Variable Length Subnet Mask (VLSM),将小型网络合并为大型网络,即超网。
- 在设计IP地址时,考虑了IP地址分配的层次特征,将每个IP地址分为2部分,第一部分代表网络,第二部分代表主机。比如IP地址172.16.254.1,是一个32位的地址,假设它的网络部分是前24位(172.16.254),那么主机部分是后8位(后1位)。同一子网中的计算机的 IP 地址必须具有相同的网络部分,这意味着 172.16.254.2 应该与 172.16.254.1 在同一子网上。
- 但是,问题是我们不能仅从IP地址来判断网络部分。我们以 172.16.254.1 为例。它的网络部分是前 24 位、前 16 位,还是前 28 位,你无法从 IP 地址中分辨出来。那么,如何从IP地址判断两台电脑是否属于同一个子网呢?这需要另一个参数“子网掩码”(subnet mask)。所谓“子网掩码”,就是表示子网特性的参数。相当于形式上的IP地址,也是一个32位的二进制数。它的网络部分全为1,主机部分全为0。例如IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,则子网掩码为11111111.11111111.11111111。00000000, 这是十进制的 255.255.255.0。知道了“子网掩码”,我们就可以判断任意两个 IP 地址是否在同一个子网上。方法是分别对两个IP地址和子网掩码进行AND运算(两位数为1,运算结果为1,否则为0),然后比较结果是否相同。如果是这样,则意味着它们在同一个子网中。在网络中,否则,它不是。
- 比如已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,是不是在同一个子网?两者和子网掩码分别进行AND运算,结果是172.16.254.0,所以它们在同一个子网中。综上所述,IP协议有两个主要功能。一种是为每台计算机分配一个动态IP地址,另一种是确定哪些地址在同一个子网上。
- 只有通过子网掩码,才能表明主机所在子网与其他子网的关系,从而使网络能够正常工作。
- 子网划分——将单个网络划分为多个物理网络(子网)并使用路由器将它们连接起来以充分利用有限的IP地址资源的操作。
- 对于标准的A、B、C地址,主机号有2层网络号结构。为了划分子网,它的主机号可以分为两部分,一部分用于子网号的编译,剩下的部分用于主机号的编译。这样就形成了三层结构,即网络号、子网号、主机号。
- 网络号——指定主机所在的网络
- 子网号 — 指定包含多个主机的子网
- 主机号 - 指定子网内的主机
- 但是,有子网或没有子网的 IP 地址在外观上没有区别。那么我们如何区分这2个地址呢?子网掩码与 IP 地址相同。子网掩码由 1 和 0 组成。子网掩码的长度也是 32 位。左边是网络位,用二进制数“1”表示,1的个数等于网络位的长度;右边是主机位,用二进制数“0”表示,0的个数等于主机位长度。主机号使用二进制数“0”的目的是在不改变原来网段号的情况下,掩码和IP地址做按位与运算时,用0覆盖原来的主机号,便于确定号码子网中主机的个数为 0 位。
- 主机号全为1时,代表网络的广播地址,全为0时,代表网络的网络号。
- 网络前缀长度——网络号和子网号的位数代表子网掩码。例如,子网掩码为 255.255.0.0 的 B 类网络地址 156.81.0.0 表示为 156.8.0.0/16。
对 IPv4 网络进行子网划分
- A、B 和 C 类网络的默认子网掩码
IPv6
- IPv4使用32位地址长度,地址只有43亿个,估计很快就会枯竭。
- IPv6地址以十六进制表示,共128位,分8组表示,每组16位,每组代表4个十六进制数。这些组由冒号 (:) 分隔。
- IPv6 示例——2001 :0db8:85a3:0000:0000:8a2e:0370:7334
- IPv6 包含 IPv4 地址 — 最后 2 组 IPv6 由惯用的 IPv4 地址的十进制表示法表示。
IPv6 数据报格式
- Version ——4位,值为6(二进制值为0110),表示IPv6数据包
- 流量类别— 8 位,相当于 IPv4 协议中的服务类型 (ToS) 字段。
- 流标签——24位,用于标记特定流的数据包,以便在网络层区分不同的数据包。转发路径上的路由器可以根据流标签对流进行区分和处理。由于IPv6报文头中携带了流标签,转发路由器不需要根据报文的内容来识别不同的流,目的节点也可以根据流标签来识别流。
- 有效负载长度— 16 位,有效负载的长度(以字节为单位),或 IPv6 消息基本标头的后续部分的长度。
- Next Header ——8位,用于标识当前头之后的下一个头的类型。
- 跃点限制— 8 位,类似于 IPv4 中的生存时间 (TTL) 字段。
- Source Address — 128 位,消息的源地址
- Destination Address — 128 位,消息的目标地址
IPv6 IP 地址是 128 位的,由 64 位网络地址和 64 位主机地址组成。64 位网络地址进一步分为 48 位全局网络标识符和 16 位本地子网标识符。
有关 IPv6 寻址的更多信息,请参阅IP 版本 6 工作组 (IPv6)或IPv6。
IPv6 地址是 IPv4 地址的 4 倍。
IPv6 地址空间是 IPv4 地址空间的 1e28 倍。
IPv6的特点
- 扩展的路由和寻址能力——IPv6将IP地址从32位增加到128位,可以支持更大的地址空间,使IP地址在可预见的未来不会被用完。
- 报头格式的简化——IPv4报头格式中的一些冗余字段要么被丢弃,要么被列为扩展报头,从而减少了数据包处理和报头带宽的开销。IPv6 将其基本报头长度固定为最多 40 个字节,从而减少处理器开销并节省网络带宽。
- 分层地址结构——IPv6根据不同的地址前缀划分IPv6的地址空间,采用分层地址结构,方便骨干网路由器对数据包的快速转发。IPv6 中定义了 3 种不同的地址类型。有单播地址、多播地址和任播地址。
- 对可选选项的更大支持——IPv6 选项不放在标头中,而是放在单独的扩展标头中。
- 身份验证和加密— IP 安全协议 (IPSec)是 IPv4 的可选扩展协议,也是 IPv6 的重要组成部分。其主要功能是在网络层为数据包提供加密、鉴权等安全服务。IPSec 提供身份验证和加密机制。认证机制是让IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否被篡改。加密机制就是对数据进行加密,保证数据的机密性,防止数据在传输过程中被他人截获。
- 支持无状态自动地址配置——简化地址配置过程。无需DNS服务器即可完成地址配置,广播地址前缀可路由。每个主机根据自己的 MAC 地址和接收到的地址前缀生成一个聚合的全球单播地址。也方便某个区域的主机同时更改IP地址前缀。
端口
- 端口包括物理端口和逻辑端口。
- 物理端口是用于连接物理设备的接口
- 逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口是逻辑端口,不同的服务通过不同的逻辑端口来区分。具有IP地址的主机可以提供许多服务,例如Web服务、FTP服务、SMTP服务等。
- 在实际通信中,端口号是按照一定的规定来分配的。端口的分配标准主要包括普通端口和动态端口。
- 多个应用程序可以同时在同一主机上运行。此时,端口号用于识别。端口号代表程序地址。传输层协议使用这些端口号来识别机器中正在通信的应用程序并准确地传输数据。
- 在 Internet 上通信时,必须知道其他 IP 地址。事实上,IP 地址已经附加到数据包中。将数据包发送到路由器后,路由器会根据IP地址找到对方路由器的位置,完成数据传输。MAC地址有独立的IP,IP地址只能位于局域网中,不能位于特定的计算机上。
- 端口号有一个 IP 地址和一个 MAC 地址。一台计算机可以同时提供多种网络服务,从而使计算机可以相应地接收数据包。
- 计算机将为每个网络程序分配一个唯一的端口号。
- 普通端口——这些端口的端口号范围从 0 到 1023,它们与某些特定服务紧密绑定。通常,这些端口的通信清楚地表明某些服务的协议。
- 注册端口——这些端口的端口号范围从 1025 到 49151。分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是分配了公共端口的常用程序。
- 动态/私有端口——这些端口的端口号范围从 49152 到 65535。它们通常不是固定分配的服务,而是动态分配的。
- 49152到65535是动态分配的端口,供一些需要分配端口的进程使用,动态取自这里。
如果你发现我的任何文章有帮助或有用,麻烦点赞或者转发。 谢谢!
,