gitbook/趣谈网络协议/docs/13847.md
2022-09-03 22:05:03 +08:00

15 KiB
Raw Permalink Blame History

协议专栏特别福利 | 答疑解惑第二期

你好,我是刘超。

第二期答疑涵盖第3讲至第6讲的内容。我依旧对课后思考题和留言中比较有代表性的问题作出回答。你可以点击文章名回到对应的章节复习也可以继续在留言区写下你的疑问我会持续不断地解答。希望对你有帮助。

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

课后思考题

你知道 net-tools 和 iproute2 的“历史”故事吗?

这个问题的答案,盖同学已经写的比较全面了。具体的对比,我这里推荐一篇文章https://linoxide.com/linux-command/use-ip-command-linux/,感兴趣的话可以看看。

留言问题

1.A、B、C类地址的有效地址范围是多少

我在写的时候,没有考虑这么严谨,平时使用地址的时候,也是看个大概的范围。所以这里再回答一下。

A类IP的地址第一个字段范围是0127但是由于全0和全1的地址用作特殊用途实际可指派的范围是1126。所以我仔细查了一下如果较真的话你在答考试题的时候可以说A类地址范围和A类有效地址范围。

2.网络号、IP地址、子网掩码和广播地址的先后关系是什么

当在一个数据中心或者一个办公室规划一个网络的时候,首先是网络管理员规划网段,一般是根据将来要容纳的机器数量来规划,一旦定了,以后就不好变了。

假如你在一个小公司里总共就没几台机器对于私有地址一般选择192.168.0.0/24就可以了。

这个时候先有的是网络号。192.168.0就是网络号。有了网络号子网掩码同时也就有了就是前面都是网络号的是1其他的是0广播地址也有了除了网络号之外都是1。

当规划完网络的时候一般这个网络里面的第一个、第二个地址被默认网关DHCP服务器占用你自己创建的机器只要和其他的不冲突就可以了当然你也可以让DHCP服务自动配置。

规划网络原来都是网络管理员的事情。有了公有云之后一般有个概念虚拟网络VPC鼠标一点就能创建一个网络网络完全软件化了任何人都可以做网络规划。

3.组播和广播的意义和原理是什么?

C类地址的主机号8位去掉0和255就只有254个了。

在《TCP/IP详解》这本书里面有两章讲了广播、多播以及IGMP。广播和组播分为两个层面其中MAC层有广播和组播对应的地址IP层也有自己的广播地址和组播地址。

广播相对比较简单MAC层的广播为ff:ff:ff:ff:ff:ffIP层指向子网的广播地址为主机号为全1且有特定子网号的地址。

组播复杂一些MAC层中当地址中最高字节的最低位设置为1时表示该地址是一个组播地址用十六进制可表示为01:00:00:00:00:00。IP层中组播地址为D类IP地址当IP地址为组播地址的时候有一个算法可以计算出对应的MAC层地址。

多播进程将目的IP地址指明为多播地址设备驱动程序将它转换为相应的以太网地址然后把数据发送出去。这些接收进程必须通知它们的IP层它们想接收的发给定多播地址的数据报并且设备驱动程序必须能够接收这些多播帧。这个过程就是“加入一个多播组”。

当多播跨越路由器的时候需要通过IGMP协议告诉多播路由器多播数据包应该如何转发。

4.MTU 1500的具体含义是什么

MTUMaximum Transmission Unit最大传输单元是二层的一个定义。以以太网为例MTU为1500个Byte前面有6个Byte的目标MAC地址6个Byte的源MAC地址2个Byte的类型后面有4个Byte的CRC校验共1518个Byte。

在IP层一个IP数据报在以太网中传输如果它的长度大于该MTU值就要进行分片传输。如果不允许分片DF就会发送ICMP包这个在ICMP那一节讲过。

在TCP层有个MSSMaximum Segment Size最大分段大小它等于MTU减去IP头再减去TCP头。即在不分片的情况下TCP里面放的最大内容。

在HTTP层看来它的body没有限制而且在应用层看来下层的TCP是一个流可以一直发送但其实是会被分成一个个段的。

《第4讲 | DHCP与PXEIP是怎么来的又是怎么没的》

课后思考题

PXE 协议可以用来安装操作系统,但是如果每次重启都安装操作系统,就会很麻烦。你知道如何使得第一次安装操作系统,后面就正常启动吗?

一般如果咱们手动安装一台电脑的时候,都是有启动顺序的,如果改为硬盘启动,就没有问题了。

好在服务器一般都提供IPMI接口可以通过这个接口启动、重启、设置启动模式等等远程访问这样就可以批量管理一大批机器。

这里提到Cobbler这是一个批量安装操作系统的工具。在OpenStack里面还有一个Ironic也是用来管理裸机的。有兴趣的话可以研究一下。

留言问题

1.在DHCP网络里面手动配置IP地址会冲突吗?

在一个DHCP网络里面如果某一台机器手动配置了一个IP地址并且在DHCP管理的网段里的话DHCP服务器是会将这个地址分配给其他机器的。一旦分配了ARP的时候就会收到两个应答IP地址就冲突了。

当发生这种情况的时候应该怎么办呢DHCP的过程虽然没有明确如何处理但是DHCP的客户端和服务器都可以添加相应的机制来检测冲突。

如果由客户端来检测冲突一般情况是客户端在接受分配的IP之前先发送一个ARP看是否有应答有就说明冲突了于是发送一个DHCPDECLINE放弃这个IP地址。

如果由服务器来检测冲突DHCP服务器会发送ping来看某个IP是否已经被使用。如果被使用了它就不再将这个IP分配给其他的客户端了。

2.DHCP的Offer和ACK应该是单播还是广播呢

没心没肺 回答得很正确。

这个我们来看DHCP的RFC,我截了个图放在这儿:

这里面说了几个问题。

正常情况下一旦有了IP地址DHCP Server还是希望通过单播的方式发送OFFER和ACK。但是不幸的是有的客户端协议栈的实现如果还没有配置IP地址就使用单播。协议栈是不接收这个包的因为OFFER和ACK的时候IP地址还没有配置到网卡上。

所以一切取决于客户端的协议栈的能力如果没配置好IP就不能接收单播的包那就将BROADCAST设为1以广播的形式进行交互。

如果客户端的协议栈实现很厉害即便是没有配置好IP仍然能够接受单播的包那就将BROADCAST位设置为0就以单播的形式交互。

3.DHCP如何解决内网安全问题?

其实DHCP协议的设计是基于内网互信的基础来设计的而且是基于UDP协议。但是这里面的确是有风险的。例如一个普通用户无意地或者恶意地安装一台DHCP服务器发放一些错误或者冲突的配置再如有恶意的用户发出很多的DHCP请求让DHCP服务器给他分配大量的IP。

对于第一种情况DHCP服务器和二层网络都是由网管管理的可以在交换机配置只有来自某个DHCP服务器的包才是可信的其他全部丢弃。如果有SDN或者在云中非法的DHCP包根本就拦截到虚拟机或者物理机的出口。

对于第二种情况一方面进行监控对DHCP报文进行限速并且异常的端口可以关闭一方面还是SDN或者在云中除了被SDN管控端登记过的IP和MAC地址其他的地址是不允许出现在虚拟机和物理机出口的也就无法模拟大量的客户端。

《第5讲 | 从物理层到MAC层如何在宿舍里自己组网玩联机游戏

课后思考题

1.在二层中我们讲了 ARP 协议,即已知 IP 地址求 MAC还有一种 RARP 协议,即已知 MAC 求 IP 的,你知道它可以用来干什么吗?

2.如果一个局域网里面有多个交换机ARP 广播的模式会出现什么问题呢?

盖还说出了环路的问题。

没心没肺不但说明了问题,而且说明了方案。

《第6讲 | 交换机与VLAN办公室太复杂我要回学校》

课后思考题

STP 协议能够很好地解决环路问题,但是也有它的缺点,你能举几个例子吗?

STP的主要问题在于当拓扑发生变化新的配置消息要经过一定的时延才能传播到整个网络。

由于整个交换网络只有一棵生成树,在网络规模比较大的时候会导致较长的收敛时间,拓扑改变的影响面也较大,当链路被阻塞后将不承载任何流量,造成了极大带宽浪费。

留言问题

1.每台交换机的武力值是什么样的?

当一台交换机加入或者离开网络的时候,都会造成网络拓扑变化,这个时候检测到拓扑变化的网桥会通知根网桥,根网桥会通知所有的网桥拓扑发生变化。

网桥的ID是由网桥优先级和网桥MAC地址组成的网桥ID最小的将成为网络中的根桥。默认配置下网桥优先级都一样默认优先级是32768。这个时候MAC地址最小的网桥成为根网桥。但是如果你想设置某台为根网桥就配置更小的优先级即可。

在优先级向量里面Root Bridge ID就是根网桥的IDBridge ID是网桥的IDPort ID就是一个网桥上有多个端口端口的ID。

按照RFC的定义ROOT PATH COST是和出口带宽相关的具体的数据如下

2.图中的LAN指的是什么

在这一节中,这两张图引起了困惑。

本来是为了讲二层的原理,做了个抽象的图,结果引起了大家的疑问,所以这里需要重新阐述一下。

首先这里的LAN1、LAN2、LAN 3的说法的确不准确因为通过网桥或者交换机连接它们还是属于一个LAN其实这是三个物理网络通过网桥或者交换机连接起来形成一个二层的LAN。

对于一层也即物理层的设备主要使用集线器Hub这里我们就用Hub将物理层连接起来。

于是我新画了两个图。

在这里我用Hub将不同的机器连接在一起形成一个物理段而非LAN。

3.在MAC地址已经学习的情况下ARP会广播到没有IP的物理段吗

首先谢谢这两位同学指出错误这里ARP的目标地址是广播的所以无论是否进行地址学习都会广播而对于某个MAC的访问在没有地址学习的时候是转发到所有的端口的学习之后只会转发到有这个MAC的端口。

4.802.1Q VLAN 和Port-based VLAN有什么区别

所谓Port-based VLAN一般只在一台交换机上起作用比如一台交换机10个口1、3、5、7、9属于VLAN 10。1发出的包只有3、5、7、9能够收到但是从这些口转发出去的包头中并不带VLAN ID。

而802.1Q的VLAN出了交换机也起作用也就是说一旦打上某个VLAN则出去的包都带这个VLAN也需要链路上的交换机能够识别这个VLAN进行转发。


感谢第3讲至第6讲中对内容有深度思考和提出问题的同学。我会为你们送上奖励礼券和知识图谱。稍后运营同学会发送短信通知。

欢迎你继续提问!