趣谈网络协议
刘超
网易研究院云计算技术部首席架构师
立即订阅
37973 人已学习
课程目录
已完结 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讲)
结束语 | 放弃完美主义,执行力就是限时限量认真完成
趣谈网络协议
登录|注册

第4讲 | DHCP与PXE:IP是怎么来的,又是怎么没的?

刘超 2018-05-25

上一节,我们讲了 IP 的一些基本概念。如果需要和其他机器通讯,我们就需要一个通讯地址,我们需要给网卡配置这么一个地址。

如何配置 IP 地址?

那如何配置呢?如果有相关的知识和积累,你可以用命令行自己配置一个地址。可以使用 ifconfig,也可以使用 ip addr。设置好了以后,用这两个命令,将网卡 up 一下,就可以开始工作了。

使用 net-tools:

$ sudo ifconfig eth1 10.0.0.1/24
$ sudo ifconfig eth1 up
复制代码

使用 iproute2:

$ sudo ip addr add 10.0.0.1/24 dev eth1
$ sudo ip link set up eth1
复制代码

你可能会问了,自己配置这个自由度太大了吧,我是不是配置什么都可以?如果配置一个和谁都不搭边的地址呢?例如,旁边的机器都是 192.168.1.x,我非得配置一个 16.158.23.6,会出现什么现象呢?

不会出现任何现象,就是包发不出去呗。为什么发不出去呢?我来举例说明。

192.168.1.6 就在你这台机器的旁边,甚至是在同一个交换机上,而你把机器的地址设为了 16.158.23.6。在这台机器上,你企图去 ping192.168.1.6,你觉得只要将包发出去,同一个交换机的另一台机器马上就能收到,对不对?

可是 Linux 系统不是这样的,它没你想得那么智能。你用肉眼看到那台机器就在旁边,它则需要根据自己的逻辑进行处理。

还记得我们在第二节说过的原则吗?只要是在网络上跑的包,都是完整的,可以有下层没上层,绝对不可能有上层没下层。

所以,你看着它有自己的源 IP 地址 16.158.23.6,也有目标 IP 地址 192.168.1.6,但是包发不出去,这是因为 MAC 层还没填。

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

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

© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈网络协议》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(183)

  • 袁沛
    20年前大学宿舍里绕了好多同轴电缆的10M以太网,上BBS用IP,玩星际争霸用IPX。那时候没有DHCP,每栋楼有个哥们负责分配IP。

    作者回复: 赞

    2018-05-25
    1
    143
  • xcodeproj
    新机器进来申请分配ip地址,老师你说在dhcp request的时候这台机器以0.0.0.0为源地址发出请求,那如果有多台机器同时申请呢?DHCP server如何分辨啊
    2018-05-25
    2
    102
  • ERIC
    刘老师你好,文章关于DHCP可能是有两处错误。DHCP Offer 和 DHCP ACK都不是广播包,而是直接发到客户机的网卡上的。这是wiki上的链接:
    https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#DHCP_offer
    https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#DHCP_acknowledgement

    另外我自己也抓了包验证,https://baixiang.oss-cn-shenzhen.aliyuncs.com/dhcp/dhcp.png。

    作者回复: 这个在答疑环节讲过啦

    2019-03-01
    3
    52
  • magict4
    请问在 Offer 和 ACK 阶段,为什么 DHCP Server 给新机器的数据包中,MAC 头里用的是广播地址(ff:ff:ff:ff:ff:ff)而不是新机器的 MAC 地址?
    2018-06-16
    3
    50
  • Will王志翔(大象)
    以问答写笔记:

    1. 正确配置IP?

    CIDR、子网掩码、广播地址和网关地址。

    2. 在跨网段调用中,是如何获取目标IP的mac地址的?

    从源IP网关获取所在网关mac,
    然后又替换为目标IP所在网段网关的mac,
    最后是目标IP的mac地址

    3. 手动配置麻烦,怎么办?

    DHCP!Dynamic Host Configuration Protocol!
    DHCP, 让你配置IP,如同自动房产中介。

    4. 如果新来的,房子是空的(没有操作系统),怎么办?

    PXE, Pre-boot Execution Environment.
    "装修队"PXE,帮你安装操作系统。

    作者回复: 赞

    2018-07-07
    41
  • 机器人
    那么跨网段调用中,是如何获取目标IP 的mac地址的?根据讲解推理应该是从源IP网关获取所在网关
    mac,然后又替换为目标IP所在网段网关的mac,最后是目标IP的mac地址,不知对否

    作者回复: 是的

    2018-05-25
    29
  • kevinwang527
    现在一般电脑的网卡几乎都支持PXE启动, PXE client 就在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行。
    安装完成后,将提示重新引导计算机。这个时候,在重新引导的过程中将BIOS修改回从硬盘启动就可以了。
    2018-06-28
    28
  • 天涯囧侠
    在一个有dhcp的网络里,如果我手动配置了一个IP,dhcp Server会知道这个信息,并不再分配这个IP吗?会的话具体是怎样交互的呢?

    作者回复: 有可能冲突的,所以办公网里面一般禁止配置静态ip

    2018-05-25
    22
  • 约书亚
    跨网段的通信,一般都是ip包头的目标地址是最终目标地址,但2层包头的目标地址总是下一个网关的,是么?

    作者回复: 是的

    2018-05-25
    2
    20
  • 贾志猛
    进入BIOS设置页面,有一项PXE Boot to LAN,若设置为Enabled则表示计算机从网络启动,从PXE服务端下载配置文件和操作系统内核进行启动;若设置为Disabled则表示从本地启动,启动动BIOS后,会去寻找启动扇区,如果没有安装操作系统,就会找不到启动扇区,这个时候就启动不起来。

    作者回复: 是的,还有一种服务端的配置

    2018-05-27
    19
  • 芋头
    要是以前大学老师能够讲得如此精彩,易懂,大学就不会白学了

    作者回复: 谢谢

    2018-06-01
    14
  • penghuster
    请教一下,pxe客户端请求的IP,是否最终会直接用于系统

    作者回复: 不会的,系统起来后配置ip是他自己的事情

    2018-06-01
    11
  • 没心没肺
    DHCP Request究竟使用广播还是单播取决于DHCP Offer包中Broadcast位的设置值。该位置1则使用广播发送,置0则使用单播发送。
    2018-05-25
    10
  • zhy
    之前一直不清楚dhcp是干嘛的→_→终于明白了
    2018-05-25
    10
  • 刘-阿-伟
    看了虽然懂了,但是对于一个做软件开发的,不知道怎么去实战!

    作者回复: 最后会有一个实验管理的搭建,一台机器足以

    2018-05-25
    9
  • Tristen陈涛
    文章开头,源 IP 地址 16.158.23.6,目标 IP 地址 192.168.1.6 发包的问题,还是不太懂
    此种情况下的结果是: 网关收到 16.158.23.6 包后直接拒绝了还是有别的处理?
    2018-05-29
    8
  • 卡卡
    pxe要去tftp下载初始文件,那么pxe自己是不是也需要一个tftp客户端?

    作者回复: 是的,不过tftp很轻量

    2018-05-25
    8
  • 呵呵
    pxe客户端是放在哪里的?

    作者回复: bios

    2018-05-25
    7
  • geduo4612
    PXE client 只能把整个操作系统放在内存里面里面?因为此时还木有文件系统啥的吧?DHCP,ARP,IP/TCP协议都是BIOS自带的?
    2018-06-03
    6
  • Jason
    大道至简。牛

    作者回复: 谢谢

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