ip addr 和 ifconfig

article/2025/9/29 11:29:02
你知道怎么查看 IP 地址吗?当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题?的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Windows 上是 ipconfig,在 Linux 上是 ifconfig。那你知道在 Linux 上还有什么其他命令可以查看 IP 地址吗?答案是 ip addr。如果回答不上来这个问题,那你可能没怎么用过 Linux。那你知道 ifconfig 和 ip addr 的区别吗?这是一个有关 net-tools 和 iproute2 的“历史”故事,你刚来到第三节,暂时不用了解这么细,但这也是一个常考的知识点。想象一下,你登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ip addr 命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装 net-tools 和 iproute2 这两个工具。当然,大多数时候这两个命令是系统自带的。安装好后,我们来运行一下 ip addr。不出意外,应该会输出下面的内容。root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ffinet 10.100.122.2/24 brd 10.100.122.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::f816:3eff:fec7:7975/64 scope link valid_lft forever preferred_lft forever

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

 

如上输出结果,10.100.122.2就是一个IP地址。这个地址被点分隔为四个部分,每个部分8bit,所以ip地址总共是32位。这样产生的ip地址数量很快就不够用了。于是就有了ipv6,也就是上面结果里面的inet6 fe80::f816:3eff:fec7:7975/64

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

a,b,c类主要分两部分,前面一部分是网络号,后面一部分是主机号。这很好理解,大家都是六单元 1001 号,我是小区 A 的六单元 1001 号,而你是小区 B 的六单元 1001 号。

下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量。在后文中,我也会多次借助这个表格来讲解。

这里面有个尴尬的事情,就是c类地址能包含的最大主机数量实在太少了,只有254个。当时设计的时候恐怕没想到,现在估计一个网络都不够用吧。而b类地址能包含的最大主机数量又太多了。6万台多台机器放在一个网络下面,一般的企业基本达不到这个规模,闲着的地址就是浪费。

于是有一个折中的方式叫做无类型域间选路,简称CIDR

无类型域间选路(CIDR)

这种方式打破了原来设计的几类地址的做法,将32位的ip地址一分为2,前面是网络号,后面是主机号。那么从哪里分呢?

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

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

将子网掩码与ip地址进行AND计算,得到的就是网络号10.100.122.0。将子网掩码和 IP 地址按位计算 AND,就可得到网络号

公有 IP 地址和私有 IP 地址

在日常的工作中,几乎不用划分A,B,C类了,所以时间长了,很多人就忘记了这个分类,而只记得CIDR。但是有一点还是要注意的,就是公有ip地址和私有ip地址。

表格最右列是私有ip地址段。平常我们看到的数据中心里,办公室、家里或者学校的IP地址,一般都是私有ip地址段。因为这些些地址允许组织内部的it人员自己管理、自己分配,而且可以重复。因此你学校的某个私有ip地址段和我学校的可以是一样的。这就像每个小区有自己的楼编号和门牌号,你们小区可以叫6栋,我们小区也叫6栋,没有任何问题,但是一旦出了小区,就需要使用公有ip地址。

公有ip地址有个组织统一分配,你需要去买。如果你搭建有一个网站,给你学校的人使用,让你们学校的IT人员给你一个IP地址就行。但是假如你要做一个类似163这样的网站,就需要有公有ip地址,这样全世界的人才能访问。

 不需要将十进制转为2进制就能明显看出192.168.0是网络号,后面是主机号。而整个网络里面的第一个地址192.168.0.1,往往就是你这个私有网络的出口地址。例如你家里的电脑链接wifi,wifi路由器的地址就是192.168.0.1,而192.168.0.255就是广播地址。一旦放松这个地址,整个192.168.0网络里面的所有机器都能收到。

举例:一个容易“犯错”的 CIDR

我们来看 16.158.165.91/22 这个 CIDR。求一下这个网络的第一个地址、子网掩码和广播地址。

你要是上来就写 16.158.165.1,那就大错特错了。

/22 不是 8 的整数倍,不好办,只能先变成二进制来看。16.158 的部分不会动,它占了前 16 位。中间的 165,变为二进制为‭10100101‬。除了前面的 16 位,还剩 6 位。所以,这 8 位中前 6 位是网络号,16.158.<101001>,而 <01>.91 是机器号。

第一个地址是 16.158.<101001><00>.1,即 16.158.164.1。子网掩码是 255.255.<111111><00>.0,即 255.255.252.0。广播地址为 16.158.<101001><11>.255,即 16.158.167.255。

这五类地址中,还有一类 D 类是组播地址。使用这一类地址,属于某个组的机器都能收到。这有点类似在公司里面大家都加入了一个邮件组。发送邮件,加入这个组的都能收到。组播地址在后面讲述 VXLAN 协议的时候会提到。

讲了这么多,才讲了上面的输出结果中很小的一部分,是不是觉得原来并没有真的理解 ip addr 呢?我们接着来分析。

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

MAC 地址

在 IP 地址的上一行是 link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff,这个被称为MAC 地址,是一个网卡的物理地址,用十六进制,6 个 byte 表示。

MAC地址是一个很容易让人误解的地址,因为mac地址号称全局唯一,不会有两个网卡有相同的mac地址。而且网卡自生产出来,就带着这个地址。既然这样,整个互联网的通信,全部用mac地址就好了,只要知道了对方的mac地址,就可以把信息传过去。

这样当然是不行的。一个网络包要从一个地方传到另一个地址,除了要有确定的地址,还需要有定位功能。而有门牌号码属性的ip地址,才是有远程定位功能的。

例如,你去杭州市网商路 599 号 B 楼 6 层找刘超,你在路上问路,可能被问的人不知道 B 楼是哪个,但是可以给你指网商路怎么去。但是如果你问一个人,你知道这个身份证号的人在哪里吗?可想而知,没有人知道。

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

mac地址也是有一定定位功能的,只不过范围非常有限。你可以根据ip地址,找到杭州网商路599号B楼6层,但是依然找不到我,这时候就可以靠吼了,大声喊身份证XXX的是哪位?我听到了,我就会站起来说,是我啊。但是如果你在上海,到处喊身份证 XXXX 的是哪位,我不在现场,当然不会回答,因为我在杭州不在上海。

所以mac地址的通信范围比较小,局限在一个子网里面。例如,从192.168.0.2/24访问192.168.0.3/24是可以用mac地址的。一旦跨子网,即从192.168.0.2/24到192.168.1.2/24,mac地址就不行了,需要ip地址起作用了。

网络设备的状态标识

我们再来看<BROADCAST,MULTICAST,UP,LOWER_UP> 是干什么的?这个叫作net_device flags网络设备的状态标识

up表示网卡处于启动的状态;

broadcast表示这个网卡有广播的地址,可以发送广播包;

MULTICAST 表示网卡可以发送多播包;

LOWER_UP表示L1是启动的,也即网线插着呢

MTU1500是最大传输单元MTU 为1500,这是以太网的默认值。MTU是二层mac层的概念,mac层有mac的头,以太网规定连mac头带正文合起来,不允许超过1500字节。正文里面有ip,tcp,http头等信息。如果放不下来,就需要分片来传输。

qdisc pfifo_fast: qdisc全称是queueing discipline,中文叫排队规则。内核需要通过某个网络接口发送数据包,它都需要按照这个接口配置的qdisc 把数据包加入队列。

最简单的qdisc是pfifo ,它不对进入的数据包做任何的处理,数据包采用先入先出的方式通过队列。pfifo_fast稍微复杂一些,它的队列包括三个波段。在每个波段里面,使用先进先出的规则。

三个波段的优先级也不相同。band 0最高,band 2最低。 如果band0里面有数据包,系统就不会处理band1里面的数据包,ban的1和band 2之间也是一样。

数据包时按照服务类型(type of service, TOS)被分配到三个波段里面的。TOS是IP头里面的一个字段,代表了当前的包是高优先级的,还是低优先级的。

 

 


http://chatgpt.dhexx.cn/article/mf0DkQri.shtml

相关文章

ipconfig 和ip addr的区别

今天在玩DNS解析记录的追踪。 nslookup 查了一下我们业务域名对应的ip。 得到一个完全不知道的ip。 此时我登录到应用服务器上&#xff0c;使用ip a查看了该服务器的网络配置。并没有这个ip。 百思不得其解。 搞了一天终于明白了&#xff0c;一共两个问题&#xff1a; 1、…

ifconfig 与 ip addr 命令详解 - 学习/实践

1.应用场景 主要用于了解学习&#xff0c;掌握使用IP地址相关知识&#xff0c; 如何查看IP信息&#xff0c;以及各个参数代表的含义 2.学习/操作 1.文档阅读 网络协议概论 | Laravel 学院 - 不定期分享之 ifconfig 与 ip addr 命令详解 2.整理输出 2.1 如何查看机器的 IP 地址…

IP addr命令

IP addr命令 我们都知道Windows上查看IP地址是ipconfig, Linux上是ifconfig&#xff0c;但是Linux上还有一个命令叫ip addr可以查看IP地址。 如上图所示命令显示了机器上的所有网卡&#xff0c;大部分网卡都有一个IP地址&#xff0c;也存在特殊情况没有IP地址。这里IP地址是19…

Linux命令ip addr详解

Linux命令ip addr详解 熟悉Linux操作系统的同学对于ip addr命令应该不陌生&#xff0c;知道它是用来查看本地IP地址的&#xff0c;除了IP地址&#xff0c;其它额外的信息有必要了解一下。 roottest:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue s…

python中ipaddr库用法详解

首先安装ipaddr库 pip install ipaddr 判断一个IP地址是否在某个网段内&#xff1a; import ipaddrip ipaddr.IPv4Address("192.168.1.1") ip_net ipaddr.IPv4Network("192.168.1.0/23")if ip in ip_net:print("True") else:print("Fal…

ip addr命令介绍

Windows上查看IP地址是ipconfig命令。 Linux上查看IP地址是ifconfig命令。 Linux上还有一个ip addr命令可以查看IP地址。 博主使用标准版ISO镜像文件安装的CentOS7虚拟机没有ifconfig命令&#xff0c;但有ip addr命令。 其实通过这几个命令查到的IP都是私网IP&#xff0c;…

linux删除ip地址的命令

linux删除ip地址的命令是“ip addr”&#xff0c;该命令用于查看并操作ip地址&#xff1b;想要删除指定ip地址可使用“ip addr del ip地址 dev 接口”语句&#xff0c;清空指定网卡的所有ip可使用“ip addr flush dev 接口”语句。 1、删除指定IP ip addr del ip地址 dev 接口…

ip addr命令解析

概述 ip addr命令的作用是在Linux系统上查询ip地址。 这个系统上的两个接口: 环回&#xff08;lo&#xff09;和网络&#xff08;eth0&#xff09;。 环回接口&#xff0c;常被分配到127.0.0.1&#xff0c;用于本机通信&#xff0c;经过内核处理后直接返回&#xff0c;不会在任…

MQTT协议详解

源视频地址 1.MQTT协议概念: MQTT是基于Publish/Subscribe(发布订阅)模式的物联网通信协议 特点: 简单易实现支持Qos(服务质量)报文小 MQTT协议构建于TCP/IP协议之上 发布订阅模式: 客户端只需要订阅这个主题&#xff0c;当有其他客户端向这个服务端发布消息时&#xff0c;这个…

什么是MQTT,物联网MQTT协议详解

老俊目前正在从事物联网行业&#xff0c;对MQTT有一定的了解&#xff0c;本文为您简述什么是MQTT&#xff0c;以及MQTT怎么使用 什么是MQTT 物联网 (IoT) 和机器对机器 (M2M) 通信对我们与技术交互的方式产生了持久影响。到 2022 年底&#xff0c;全球连接的物联网设备数量增…

物联网之MQTT协议详解基础篇(一)—— MQTT介绍

MQTT: The Standard for IoT Messaging 开场白 大概是这么个背景 比如小米智能家居目前是这么个流程&#xff1a; 物联网设备通过家里的wifi连接到外网服务器 在外网通过米家app控制就可以家里的物联网设备 其中服务器&#xff0c;app&#xff0c;物联网设备是通过MQTT协…

物联网数据传输协议MQTT介绍与应用开发详解

本文首发微信公众号&#xff1a;码上观世界 Part 1 物联网概述 1. 物联网概念 物联网是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术&#xff0c;实时采集任何需要监控、 连接、互动的物体或过程&#xff0c;采集其声、光、热、…

MQTT协议详解及开发教程(一)MQTT协议概述

推荐一款稳定的基于C编写的MQTT Client开源库《cMQTT》 一 概述 MQTT协议目前在物联网技术中应用非常广泛&#xff0c;各种公有云的IOT平台通信基本上都是按照该协议来实现的&#xff0c;这里先简单的做个总结&#xff1a; &#xff08;1&#xff09;MQTT协议框架及内容比…

1.MQTT协议介绍

所写博客来自网课视频、本网站或其他网站&#xff0c;只属于资料整理、用于个人学习&#xff0c;如有侵权行为可联系删除。 1.MQTT协议介绍 1.1 MQTT简介 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一…

MQTT协议通俗讲解

参考 Reference 协议文档 Offical Docs v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy&#xff08;基于JDK&#xff09; Chrome插件 MQTTLens&#xff08;需翻墙&#xff09; 基本概念 Basic Conception Session 会话 定义 …

Mqtt通信协议详解

文章目录 1. 简介mqtt2.mqtt协议实现3.Mqtt数据包4. QoS等级5. mqtt传输安全保证5.1 应用层5.2 传输层5.2.1 TLS安全协议 5.3 网络层 1. 简介mqtt MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发…

物联网消息传输协议——mqtt详解

什么是Mqtt mqtt是为物联网场景设计的基于tcp的pub/sub协议&#xff0c; 是基于发布/订阅模式的物联网通信协议 具有简单易用、支持QoS、报文小、轻量、节省带宽、不关心数据具体格式、可以时刻感知设备是否在线等特点 出生背景 本名&#xff1a; Message Queue Telemetry(遥…

MQTT物联网协议详解

MQTT物联网协议详解 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的“轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff…

MQTT协议,终于有人讲清楚了

6步&#xff01;教你写一个mqtt调试助手_GREYWALL-CSDN博客点击上方“小麦大叔”&#xff0c;选择“置顶/星标公众号”福利干货&#xff0c;第一时间送达大家好&#xff0c;我是小麦&#xff0c;之前写过一篇MQTT的文章&#xff0c;里面用来测试的mqtt client程序是自己编译的。…

MQTT协议简介及协议原理

文章目录 MQTT协议MQTT协议简介MQTT通信模型MQTT客户端的功能&#xff1a;MQTT客户服务器功能&#xff1a; 消息主题与服务质量MQTT控制报文固定报头可变报头CONNECT报文CONNACK报文 有效载荷 MQTT协议 MQTT协议简介 MQTT协议全称是Message Queuing Telemetry Transport&…