网络通信之IP地址

简介: IP地址是个啥?无类型域间选路(CIDR)公有 IP 地址和私有 IP 地址MAC 地址动态主机配置协议(DHCP)


人生就是受苦受难。但勇者不懈抗争,最终主宰自我—— 拿破仑

前言

在上一篇,网络通信之生成HTTP消息中我们介绍了,针对浏览器如何生成 HTTP 消息,并且通过 HTTP 消息进行与服务器之间进行数据交互。我们是从上帝视角对该过程进行了描述,忽略了很多具体细节。而接下来,我们来讲讲和网络通信密不可分的一个部分:IP地址。

简明扼要

  1. IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码
  2. lo 全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现
  3. 对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。
  4. IP 地址的主机号
    全 0:表示整个子网
    全 1:表示向子网上所有设备发送包,即“广播"
  5. 一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能
  6. MAC 地址更像是身份证,是一个唯一的标识
  7. 只要是在网络上跑的包,都是完整的,可以有下层没上层绝对不可能有上层没下层

文章概要

  1. IP地址是个啥?
  2. 无类型域间选路(CIDR)
  3. 公有 IP 地址和私有 IP 地址
  4. MAC 地址
  5. 动态主机配置协议(DHCP)

1. IP地址是个啥?

客户端(浏览器)生成 HTTP 消息之后,接下来需要委托操作系统将消息发送给 Web 服务器。在委托操作系统发送消息时,必须要提供的不是通信对象的域名,而是它的 IP 地址

我们可以通过一些命令,来查看本机的IP地址。

在 Windows 上是 ipconfig,在 Linux 上是 ifconfig/ip addr

我在自己的电脑中,搭建了一个Linux环境,那就按ip addr执行查看IP命令。

命令显示了这台机器上所有的网卡。大部分的网卡都会有一个 IP 地址。

IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码

127.0.0.1 就是一个 IP 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。这样产生的 IP 地址的数量很快就不够用了。于是就有了 有128 位的IPv6

这里有一个小的知识点

在 IP 地址的后面有个 scope,如果值是 global,说明这张网卡是可以对外的,可以接收来自各个地方的包。对于 lo 来讲,是 host,说明这张网卡仅仅可以供本机相互通信


lo 全称是loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现

本来 32 位的 IP 地址就不够,还被分成了 5 类。

对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号

相当于现实中某条路上的“×× 号 ×× 室”。其中“号”对应的号码是分配给整个子网的,而“室”对应的号码是分配给子网中的计算机的,这就是网络中的地址。

  • “号”对应的号码称为网络号
  • “室”对应的号码称为主机号

这个地址的整体称为 IP 地址。

C 类地址能包含的最大主机数量实在太少了,只有 254 个。而 B 类地址能包含的最大主机数量又太多了。6 万多台机器放在一个网络下面。


  1. 无类型域间选路(CIDR)

无类型域间选路,简称CIDR。这种方式打破了原来设计的几类地址的做法,将 32 位的 IP 地址一分为二,前面是网络号,后面是主机号。

10.11.12.13/24,这个 IP 地址中有一个斜杠,斜杠后面有个数字 24。这种地址表示形式,就是 CIDR。后面 24 的意思是,32 位中,前 24 位是网络号,后 8 位是主机号。

伴随着 CIDR 存在的,一个是广播地址10.11.12.255。如果发送这个地址,所有 10.11.12 网络里面的机器都可以收到。另一个是子网掩码255.255.255.0

IP 地址的主机号

全 0:表示整个子网

全 1:表示向子网上所有设备发送包,即“广播"


3. 公有 IP 地址和私有 IP 地址

表格最右列是私有 IP 地址段。平时我们看到的数据中心里,办公室、家里或学校的 IP 地址,一般都是私有 IP 地址段。因为这些地址允许组织内部的 IT 人员自己管理、自己分配,而且可以重复。因此,你学校的某个私有 IP 地址段和我学校的可以是一样的。

公有 IP 地址有个组织统一分配,你需要去买。

表格中的 192.168.0.x 是最常用的私有 IP 地址。

针对192.168.0.x/24不需要将十进制转换为二进制 32 位,就能明显看出 192.168.0 是网络号,后面是主机号。而整个网络里面的第一个地址192.168.0.1,往往就是你这个私有网络的出口地址。

例如,你家里的电脑连接 Wi-Fi,Wi-Fi 路由器的地址就是 192.168.0.1,而 192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。


4. MAC 地址

在 IP 地址的上一行是 link/ether xxxx,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。

MAC 地址全局唯一,不会有两个网卡有相同的 MAC 地址,而且网卡自生产出来,就带着这个地址。

很多人看到这里就会想,只要知道了对方的 MAC 地址,就可以把信息传过去。这是行不通的。一个网络包要从一个地方传到另一个地方,除了要有确定的地址,还需要有定位功能。 而有门牌号码属性的 IP 地址,才是有远程定位功能的。

MAC 地址更像是身份证,是一个唯一的标识。它的唯一性设计是为了组网的时候,不同的网卡放在一个网络里面的时候,可以不用担心冲突。从硬件角度,保证不同的网卡有不同的标识

MAC 地址是有一定定位功能的,只不过范围非常有限。MAC 地址的通信范围比较小,局限在一个子网里面


5. 动态主机配置协议(DHCP)

只要是在网络上跑的包,都是完整的,可以有下层没上层绝对不可能有上层没下层

假设,我们想要在源 IP 地址为 16.158.23.6 的机器上访问目标 IP 地址 为 192.168.1.6机器的数据。发现包发不出去,这是因为 MAC 层还没填。

自己的 MAC 地址自己知道。但是目标 MAC 填什么呢?是不是填 192.168.1.6 这台机器的 MAC 地址呢?

当然不是。Linux 首先会判断,要去的这个地址和我是一个网段的吗,或者和我的一个网卡是同一网段的吗?只有是一个网段的,它才会发送 ARP 请求,获取 MAC 地址。

如果发现不是,Linux 默认的逻辑是,如果这是一个跨网段的调用,它便不会直接将包发送到网络上,而是企图将包发送到网关

如果你配置了网关的话,Linux 会获取网关的 MAC 地址,然后将包发出去。对于 192.168.1.6 这台机器来讲,虽然路过它家门的这个包,目标 IP 是它,但是无奈 MAC 地址不是它的,所以它的网卡是不会把包收进去的。

手动配置需要不停的对自己机器的IP进行配置。是一件很麻烦的事。

需要有一个自动配置的协议,也就是称动态主机配置协议(Dynamic Host Configuration Protocol),简称DHCP。

只需要配置一段共享的 IP 地址。每一台新接入的机器都通过 DHCP 协议,来这个共享的 IP 地址里申请,然后自动配置好就可以了。等人走了,或者用完了,还回去,这样其他的机器也能用。

解析 DHCP 的工作方式

当一台机器新加入一个网络的时候,只知道自己的 MAC 地址。这时候的沟通基本靠“吼”。这一步,我们称为DHCP Discover

新来的机器使用 IP 地址 0.0.0.0 发送了一个广播包,目的 IP 地址为 255.255.255.255。广播包封装了 UDP,UDP 封装了 BOOTP(Bootstrap Protocol,引导程序协议)。其实 DHCP 是 BOOTP 的增强版。

在这个广播包里面,新人大声喊:我是新来的(Boot request),我的 MAC 地址是这个,我还没有 IP,谁能给租给我个 IP 地址!

如果在网络里面配置了DHCP Server的话,他就相当于这些 IP 的管理员。当一台机器带着自己的 MAC 地址加入一个网络的时候,MAC 是它唯一的身份,如果连这个都重复了,就没办法配置了。

只有 MAC 唯一,IP 管理员才能知道这是一个新人,需要租给它一个 IP 地址,这个过程我们称为DHCP Offer

DHCP Server 仍然使用广播地址作为目的地址。因为,此时请求分配 IP 的新人还没有自己的 IP。

如果有多个 DHCP Server,这台新机器会收到多个 IP 地址,它会选择其中一个 DHCP Offer,一般是最先到达的那个,并且会向网络发送一个 DHCP Request 广播数据包,包中包含客户端的 MAC 地址、接受的租约中的 IP 地址、提供此租约的 DHCP 服务器地址等,并告诉所有 DHCP Server 它将接受哪一台服务器提供的 IP 地址,告诉其他 DHCP 服务器,并请求撤销它们提供的 IP 地址,以便提供给下一个 IP 租用请求者。

由于还没有得到 DHCP Server 的最后确认,客户端仍然使用 0.0.0.0 为源 IP 地址、255.255.255.255 为目标地址进行广播。

当 DHCP Server 接收到客户机的 DHCP request 之后,会广播返回给客户机一个 DHCP ACK 消息包,表明已经接受客户机的选择,并将这一 IP 地址的合法租用信息和其他的配置信息都放入该广播包,发给客户机。

通过如上操作,一台新的机器就被分配了指定的IP地址。通过该IP地址,就可以和网络中的其他机器进行通信了。

后记

分享是一种态度,这篇文章,主要的篇幅来自于《趣谈网络协议》,算是一个自我学习过程中的一种记录和总结。主要是把自己认为重要的点,都罗列出来。同时,也是为大家节省一下排雷和踩坑的时间。当然,可能由于自己认知能力所限,有些点,没能表达的很好。如果大家想看原文,“墙裂推荐”看原文。

参考资料:

  1. 趣谈网络协议
  2. 网络是如何连接的
相关文章
|
6月前
|
缓存 网络协议 网络架构
Docker 网络 IP 地址冲突,就该这么处理!
Docker 网络 IP 地址冲突,就该这么处理!
216 2
|
3月前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
88 6
|
3月前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
166 6
|
7月前
|
运维 网络协议 网络安全
2023网络建设与运维正式赛卷-IP地址分配-下
【7月更文挑战第1天】该集团进行数字化转型,构建了两地三中心的网络架构,包括城市A的两个数据中心(SW1、SW2为核心交换机)和城市C的灾备数据中心(SW3)。使用OSPF、RIP、ISIS、BGP路由协议实现全网互联。RT1和RT2为总部分公司间的路由器,FW1作为总公司互联网出口防火墙,FW2为办事处防火墙。IP地址表详细列出了各设备接口的IPv4和IPv6地址。本文配置示例了路由器和防火墙的接口设置。
2023网络建设与运维正式赛卷-IP地址分配-下
|
3月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
196 3
|
3月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
206 2
|
3月前
|
网络协议 Linux
使用nmcli命令设置IP地址并排查网络故障
nmcli 是一个功能强大的网络管理工具,通过它可以轻松配置IP地址、网关和DNS,同时也能快速排查网络故障。通过正确使用nmcli命令,可以确保网络配置的准确性和稳定性,提高系统管理的效率。希望本文提供的详细步骤和示例能够帮助您更好地掌握nmcli的使用方法,并有效解决实际工作中的网络问题。
278 2
|
5月前
|
网络协议 安全
网络中IP地址与域名系统
网络中IP地址与域名系统
104 3
|
6月前
|
JSON 安全 网络协议
【Azure Policy】添加策略用于审计Azure 网络安全组(NSG)规则 -- 只能特定的IP地址允许3389/22端口访问
为了确保Azure虚拟机资源的安全管理,只有指定IP地址才能通过RDP/SSH远程访问。解决方案包括使用Azure Policy服务扫描所有网络安全组(NSG),检查入站规则中的3389和22端口,并验证源地址是否在允许的IP列表中。不符合条件的NSG规则将被标记为非合规。通过编写特定的Policy Rule并定义允许的IP地址参数,实现集中管控和合规性检查。
|
8月前
|
运维 网络协议 网络安全
2023网络建设与运维正式赛卷-IP地址分配-上
该集团进行数字化转型,构建了包括总公司两个数据中心、异地灾备数据中心的“两地三中心”架构,使用OSPF、RIP、ISIS、BGP路由协议互联。核心交换机SW1、SW2、SW3及分公司的AC1配置了多个VLAN和Loopback接口,以IPv4和IPv6双栈进行地址规划。SW1和SW2的VLAN1024配置了VRF Finance,用于财务应用。所有设备均需配置以确保网络稳定、安全和可扩展,并通过客户端测试验证应用访问。
2023网络建设与运维正式赛卷-IP地址分配-上

热门文章

最新文章