趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
39583 人已学习
课程目录
已完结 51 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 想成为技术牛人?先搞定网络协议!
免费
第一模块 通信协议综述 (4讲)
第1讲 | 为什么要学习网络协议?
第2讲 | 网络分层的真实含义是什么?
第3讲 | ifconfig:最熟悉又陌生的命令行
第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?
第二模块 底层网络知识详解:从二层到三层 (5讲)
第5讲 | 从物理层到MAC层:如何在宿舍里自己组网玩联机游戏?
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第7讲 | ICMP与ping:投石问路的侦察兵
第8讲 | 世界这么大,我想出网关:欧洲十国游与玄奘西行
第9讲 | 路由协议:西出网关无故人,敢问路在何方
第二模块 底层网络知识详解:最重要的传输层 (4讲)
第10讲 | UDP协议:因性善而简单,难免碰到“城会玩”
第11讲 | TCP协议(上):因性恶而复杂,先恶后善反轻松
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第13讲 | 套接字Socket:Talk is cheap, show me the code
第二模块 底层网络知识详解:最常用的应用层 (4讲)
第14讲 | HTTP协议:看个新闻原来这么麻烦
第15讲 | HTTPS协议:点外卖的过程原来这么复杂
第16讲 | 流媒体协议:如何在直播里看到美女帅哥?
第17讲 | P2P协议:我下小电影,99%急死你
第二模块 底层网络知识详解:陌生的数据中心 (6讲)
第18讲 | DNS协议:网络世界的地址簿
第19讲 | HTTPDNS:网络世界的地址簿也会指错路
第20讲 | CDN:你去小卖部取过快递么?
第21讲 | 数据中心:我是开发商,自己拿地盖别墅
第22讲 | VPN:朝中有人好做官
第23讲 | 移动网络:去巴塞罗那,手机也上不了脸书
第三模块 热门技术中的应用:云计算中的网络 (5讲)
第24讲 | 云中网络:自己拿地成本高,购买公寓更灵活
第25讲 | 软件定义网络:共享基础设施的小区物业管理办法
第26讲 | 云中的网络安全:虽然不是土豪,也需要基本安全和保障
第27讲 | 云中的网络QoS:邻居疯狂下电影,我该怎么办?
第28讲 | 云中网络的隔离GRE、VXLAN:虽然住一个小区,也要保护隐私
第三模块 热门技术中的应用:容器技术中的网络 (3讲)
第29讲 | 容器网络:来去自由的日子,不买公寓去合租
第30讲 | 容器网络之Flannel:每人一亩三分地
第31讲 | 容器网络之Calico:为高效说出善意的谎言
第三模块 热门技术中的应用:微服务相关协议 (5讲)
第32讲 | RPC协议综述:远在天边,近在眼前
第33讲 | 基于XML的SOAP协议:不要说NBA,请说美国职业篮球联赛
第34讲 | 基于JSON的RESTful接口协议:我不关心过程,请给我结果
第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
第四模块 网络协议知识串讲 (4讲)
第37讲 | 知识串讲:用双十一的故事串起碎片的网络协议(上)
第38讲 | 知识串讲:用双十一的故事串起碎片的网络协议(中)
第39讲 | 知识串讲:用双十一的故事串起碎片的网络协议(下)
第40讲 | 搭建一个网络实验环境:授人以鱼不如授人以渔
答疑与加餐 (9讲)
协议专栏特别福利 | 答疑解惑第一期
协议专栏特别福利 | 答疑解惑第二期
协议专栏特别福利 | 答疑解惑第三期
协议专栏特别福利 | 答疑解惑第四期
协议专栏特别福利 | 答疑解惑第五期
加餐1 | 测一测:这些网络协议你都掌握了吗?
加餐2 | 创作故事:我是如何创作“趣谈网络协议”专栏的?
加餐3 | “趣谈网络协议”专栏食用指南
第2季回归 | 这次我们来“趣谈Linux操作系统”
结束语 (1讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第3讲 | ifconfig:最熟悉又陌生的命令行

刘超 2018-05-23
上一节结尾给你留的一个思考题是,你知道怎么查看 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:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::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 1000
link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fec7:7975/64 scope link
valid_lft forever preferred_lft forever
这个命令显示了这台机器上所有的网卡。大部分的网卡都会有一个 IP 地址,当然,这不是必须的。在后面的分享中,我们会遇到没有 IP 地址的情况。
IP 地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码。既然是门牌号码,不能大家都一样,不然就会起冲突。比方说,假如大家都叫六单元 1001 号,那快递就找不到地方了。所以,有时候咱们的电脑弹出网络地址冲突,出现上不去网的情况,多半是 IP 地址冲突了。
如上输出的结果,10.100.122.2 就是一个 IP 地址。这个地址被点分隔为四个部分,每个部分 8 个 bit,所以 IP 地址总共是 32 位。这样产生的 IP 地址的数量很快就不够用了。因为当时设计 IP 地址的时候,哪知道今天会有这么多的计算机啊!因为不够用,于是就有了 IPv6,也就是上面输出结果里面 inet6 fe80::f816:3eff:fec7:7975/64。这个有 128 位,现在看来是够了,但是未来的事情谁知道呢?
本来 32 位的 IP 地址就不够,还被分成了 5 类。现在想想,当时分配地址的时候,真是太奢侈了。
在网络地址中,至少在当时设计的时候,对于 A、B、 C 类主要分两部分,前面一部分是网络号,后面一部分是主机号。这很好理解,大家都是六单元 1001 号,我是小区 A 的六单元 1001 号,而你是小区 B 的六单元 1001 号。
下面这个表格,详细地展示了 A、B、C 三类地址所能包含的主机的数量。在后文中,我也会多次借助这个表格来讲解。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(236)

  • 猿来是你 置顶
    能讲的详细些吗?非网络科班出身,理解不透彻!不要一带而过!

    作者回复: 第三讲主要通过ip addr命令对于网络相关概念有一个总体的介绍,深入了其中一部分,如果您觉得其他部门讲的粗略还不能理解透彻,到这一节可以先忽略,应该不影响。当时设计讲网络的时候,其实就有个难点,相互关联性太强,二层会依赖四层,四层也会依赖二层,如果每一点都深挖的另一个问题就是一下子深入进去,让初学者晕了。所以我想用的方式是从平时接触到的东西开始逐层深入,如果文中说这里不详述的部分,其实是对当前知识点的理解尚不构成阻碍,等构成阻碍了,就会讲清楚。

    2018-05-27
    1
    106
  • 船新版本 置顶
    cidr那块将IP和子网掩码都转成二进制列出来对比的话会比较直观很多,第一遍看到这块的时候有点懵

    作者回复: 这段纠结了好久,完全二进制的话,音频就没法读了。现在这样😊好像读起来也有点别扭。是要照顾上班路上只听音频的朋友

    2018-05-26
    1
    34
  • net-tools起源于BSD,自2001年起,Linux社区已经对其停止维护,而iproute2旨在取代net-tools,并提供了一些新功能。一些Linux发行版已经停止支持net-tools,只支持iproute2。
    net-tools通过procfs(/proc)和ioctl系统调用去访问和改变内核网络配置,而iproute2则通过netlink套接字接口与内核通讯。
    net-tools中工具的名字比较杂乱,而iproute2则相对整齐和直观,基本是ip命令加后面的子命令。
    虽然取代意图很明显,但是这么多年过去了,net-tool依然还在被广泛使用,最好还是两套命令都掌握吧。

    作者回复: 太赞了

    2018-05-23
    2
    267
  • Will王志翔(大象)
    第三讲笔记


    # 面试考点:

    1. ip addr → 不知道基本没有用Linux
    2. ifconfig 和 ip addr 的区别吗?
    3. CIDR
    4. 共有IP和私有IP
    5. MAC地址
    6. 网络设备的状态标识

    # 知识点:

    ## 核心:

    1. IP设计时犯的错误?

    低估了未来网络的发展,32位地址不够用。于是有了现在IPv6(128位)
    分类错误。分成了5类。C类太少,B类太多。C类254个,网络都不够;D类6万多,给企业都太多。

    2. 那后来者如何弥补IP设计者犯的错误呢?

    CIDR,无类型域间选路。
    打破原来几类地址设计的做法,将32位IP地址一分二,前者网络号,后者主机号。
    如何分呢?
    栗子:10.100.122.2/24
    24 = 前24位是网络号,那么后8位就是主机号。
    那如何用?
    如发送行信息给 10.100.122.255
    所有以 10.100.122... 开头的机器都能收到。
    于是有了两个概念:
    广播地址:10.100.122.255
    子网掩码:255.255.255.0 -> AND 得到网络号。

    3. 每一个城市都有人民广场,IP设计是如何解决的?

    公有IP地址和私有IP地址。
    搭建世界人民都可以访问的网站,需要共有IP地址
    搭建只有学校同学使用饿的网站,只要私有IP地址
    例子1: Wi-Fi
     192.168.0.x 是最常用的私有 IP 地址
    192.168.0 是网络号
    192.168.0.1,往往就是你这个私有网络的出口地址
    192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。

    例子2: 16.158.165.91/22

    4. 如何理解MAC地址?

    如果说IP是地址,有定位功能。那Mac就是身份证,唯一识别。

    ## 琐碎:

    5. 讲了ABC,那是D类是什么?

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

    6. IP地址scope是什么意思?

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

    7. 那lo是什么意思?

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

    8. < BROADCAST,MULTICAST,UP,LOWER_UP > 是干什么的?

    net_device flags,网络设备的状态标识。
    UP 表示网卡处于启动的状态;
    BROADCAST 表示这个网卡有广播地址,可以发送广播包;
    MULTICAST 表示网卡可以发送多播包;
    LOWER_UP 表示 L1 是启动的,也即网线插着呢。

    9. MTU1500 是指什么意思呢?是哪一层的概念?

    最大传输单元 MTU 为 1500,这是以太网的默认值。
    MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。

    10. qdisc pfifo_fast 是什么意思呢?

    排队规则。规定数据包如何进出的。有pfifo, pfifo_fast.
    2018-07-07
    234
  • Jealone
    MTU 大小是不包含二层头部和尾部的,MTU 1500表示二层MAC帧大小不超过1518. MAC 头14 字节,尾4字节。可以抓包验证

    作者回复: 赞

    2018-05-29
    2
    90
  • 登高
    mac是身份证,ip是地址
    透彻
    2018-05-23
    79
  • 猴哥
    现在很多工具都可以更改本机的MAC地址,也就是网络上存在很多MAC地址被更改成一样的,然而并没有出现通讯异常或者混乱这是为什么?

    这是一个别人的留言,老师回答了会出问题,但没回答为什么?
    MAC在一个局域网内冲突才会影响网络通讯,局域网外是通过IP定位,所以不同局域网的网络设备MAC一样是不会有通讯问题的。
    2018-05-24
    43
  • 来生树
    看了3篇,精彩阿,这个课程定价,严重定低了。应该299起嘛

    作者回复: 哈哈,谢谢

    2018-05-23
    38
  • 周磊
    大学学的计算机网络课程关于ip地址要比这详细多,但刘老师讲的更为生动,联系生活中的场景做比喻,读后印象深刻。
    建议读起来困难的同学先了解下二进制以及与十进制转换,再就是找相关的资料补充一下。
    很多东西第一遍读不懂没关系,无论你不理解或忘记多少,当你在另一个地方再次看到这些东西时,你便会有种亲切感,以前模糊的地方会在这次变得清晰一些。经过多次的接触同一个知识点,你会越来越清楚直到透彻。

    作者回复: 赞,毕竟大学的课时比较多

    2018-05-31
    1
    24
  • Bill
    补充内核恐慌的老梗:
    不知道有没有内核恐慌的水友(̿▀̿̿Ĺ̯̿̿▀̿ ̿)̄

    1、1.1.1.1 不是测试用的,原来一直没分配,现在被用来做一个DNS了,宣传是比谷歌等公司的dns服务
    更保护用户隐私。

    2、IP地址255.255.255.255,代表有限广播,它的目标是网络中的所有主机。

    3、IP地址0.0.0.0,通常代表未知的源主机。当主机采用DHCP动态获取IP地址而无法获得合法IP地址时,会用IP地址0.0.0.0来表示源主机IP地址未知。

    4、NID不能以数字127开头。NID 127被保留给内部回送函数,作为本机循环测试使用。
    例如,使用命令ping 127.0.0.1测试TCP/IP协议栈是否正确安装。在路由器中,同样支持循环测试地址的使用。
    2018-07-08
    23
  • 秋生
    刘老师,您好,您举例说的那个容易犯错的CIDR问题里,为什么第一个地址和子网掩码都是补上00,而广播地址是补上11;本人是个小白,希望能得到您的解答,谢谢
    2018-05-23
    4
    19
  • 来生树
    采精,唯一不足,这个课程定价严重定低了,哈哈
    2018-05-23
    13
  • Norman
    老师可以给推荐一本网络协议相关的书吗?我是小白,之前没有系统学习过网络协议,想好好看一下
    2018-05-23
    11
  • 进阶的码农
    A B C 类别表里A类数据有问题 应该是1:0:0:1-126:255:255:254 建议检查以下B 和C类

    作者回复: (⊙o⊙)哇,好严谨。A类IP的地址第一个字段范围是0~127,但是由于全0和全1的地址用作特殊用途,实际可指派的第一个字段范围是1~126。所以仔细搜了一下,如果较真的考试题的说法是,A类地址范围和A类有效地址范围。

    2018-06-01
    10
  • Will王志翔(大象)
    第三讲笔记


    # 面试考点:

    1. ip addr → 不知道基本没有用Linux
    2. ifconfig 和 ip addr 的区别吗?
    3. CIDR
    4. 共有IP和私有IP
    5. MAC地址
    6. 网络设备的状态标识

    # 知识点:

    ## 核心:

    1. IP设计时犯的错误?

    低估了未来网络的发展,32位地址不够用。于是有了现在IPv6(128位)
    分类错误。分成了5类。C类太少,B类太多。C类254个,网络都不够;D类6万多,给企业都太多。

    2. 那后来者如何弥补IP设计者犯的错误呢?

    CIDR,无类型域间选路。
    打破原来几类地址设计的做法,将32位IP地址一分二,前者网络号,后者主机号。
    如何分呢?
    栗子:10.100.122.2/24
    24 = 前24位是网络号,那么后8位就是主机号。
    那如何用?
    如发送行信息给 10.100.122.255
    所有以 10.100.122... 开头的机器都能收到。
    于是有了两个概念:
    广播地址:10.100.122.255
    子网掩码:255.255.255.0 -> AND 得到网络号。

    3. 每一个城市都有人民广场,IP设计是如何解决的?

    公有IP地址和私有IP地址。
    搭建世界人民都可以访问的网站,需要共有IP地址
    搭建只有学校同学使用饿的网站,只要私有IP地址
    例子1: Wi-Fi
     192.168.0.x 是最常用的私有 IP 地址
    192.168.0 是网络号
    192.168.0.1,往往就是你这个私有网络的出口地址
    192.168.0.255 就是广播地址。一旦发送这个地址,整个 192.168.0 网络里面的所有机器都能收到。

    例子2: 16.158.165.91/22

    4. 如何理解MAC地址?

    如果说IP是地址,有定位功能。那Mac就是身份证,唯一识别。

    ## 琐碎:

    5. 讲了ABC,那是D类是什么?

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

    6. IP地址scope是什么意思?

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

    7. 那lo是什么意思?

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

    8. < BROADCAST,MULTICAST,UP,LOWER_UP > 是干什么的?

    net_device flags,网络设备的状态标识。
    UP 表示网卡处于启动的状态;
    BROADCAST 表示这个网卡有广播地址,可以发送广播包;
    MULTICAST 表示网卡可以发送多播包;
    LOWER_UP 表示 L1 是启动的,也即网线插着呢。

    9. MTU1500 是指什么意思呢?是哪一层的概念?

    最大传输单元 MTU 为 1500,这是以太网的默认值。
    MTU 是二层 MAC 层的概念。MAC 层有 MAC 的头,以太网规定连 MAC 头带正文合起来,不允许超过 1500 个字节。

    10. qdisc pfifo_fast 是什么意思呢?

    排队规则。规定数据包如何进出的。有pfifo, pfifo_fast.
    2018-07-07
    9
  • 笨笨熊
    @Norman,wireshark网络分析就这么简单 这本书不错,推荐给你!

    作者回复: 谢谢

    2018-05-24
    9
  • FLOSS
    现在很多工具都可以更改本机的MAC地址,也就是网络上存在很多MAC地址被更改成一样的,然而并没有出现通讯异常或者混乱这是为什么?

    作者回复: 会啊,如果你创建虚拟机,复制的时候,没有原则重新生成mac,你就发现你连不上了

    2018-05-24
    8
  • 约书亚
    我就是来纯感谢的,天天ip addr,好多内容也不清楚干什么的。

    作者回复: 谢谢

    2018-05-23
    8
  • metalmac.kyle
    浅显易懂,言简意赅,网络的书看了很多加上实践和作者的讲解豁然开朗,重温复习很有效,如果能再搭配一些相关书籍章节的参考和深入更赞了👍

    作者回复: 谢谢,看来我要出一个推荐书列表了

    2018-05-27
    7
  • Chain
    课程几十块钱,感觉我捡便宜了😂️😂️😂️

    作者回复: 谢谢

    2018-05-25
    6
收起评论
99+
返回
顶部