关于网络协议的若干问题(二)

news2024/11/19 0:35:38

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

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

假如你在一个小公司里,总共就没几台机器,对于私有地址,一般选择 192.168.0.0/24 就可以了。这个时候先有的是网络号。192.168.0 就是网络号。有了网络号,子网掩码同时也就有了,就是前面都是网络号的是 1,其他的是 0,广播地址也有了,除了网络号之外都是 1。

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

有了公有云之后,一般有个概念虚拟网络(VPC),鼠标一点就能创建一个网络,网络完全软件化了,任何人都可以做网络规划。

2、组播和广播的意义和原理是什么?

答:广播和组播分为两个层面,其中 MAC 层有广播和组播对应的地址,IP 层也有自己的广播地址和组播地址。

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

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

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

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

3、MTU 1500 的具体含义是什么?

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

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

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

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

4、 在 DHCP 网络里面,手动配置 IP 地址会冲突吗?

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

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

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

5、DHCP 的 Offer 和 ACK 应该是单播还是广播呢?

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

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

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

6、DHCP 如何解决内网安全问题?

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

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

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

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

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

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

8、每台交换机的武力值是什么样的?

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

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

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

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

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

 答:ARP 的目标地址是广播的,所以无论是否进行地址学习,都会广播,而对于某个 MAC 的访问,在没有地址学习的时候,是转发到所有的端口的,学习之后,只会转发到有这个 MAC 的端口。

10、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,进行转发。

此文章为10月Day11学习笔记,内容来源于极客时间《趣谈网络协议》,推荐该课程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 centos7 上安装Docker

1、检查linux内核 Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。 Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。 uname -r 2、使用 root 权限登录 Centos…

商业化之路怎么走,一家开源分布式数据库厂商的答案|爱分析调研

01 商业化是衡量开源项目成功与否的重要维度之一 中国开源软件商业化公司的涌起以及资本对开源的持续关注,正打破人们对开源与商业化“互斥”的传统印象,展现出两者关系的真正本质,即开源和商业化可以相互促进、相互融合,协同发展…

Apache Doris (三十九):Doris数据导出 - MySQL dump导出

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

Spring Cloud 2023 新特性 同步网关

网关不支持传统 Servlet 容器 Spring Cloud Gateway 需要运行在提供的 Netty 运行时。它不能在传统的 Servlet 容器中工作,也不能在构建为 WAR 时工作。WebFlux 使用了异步非阻塞的编程模型,相较于传统的 MVC Servlet 需要理解和适应新的编程范式和响应…

Python之函数详解

一、函数的定义与调用 函数定义语法: def 函数名([参数列表]): ‘’‘注释’‘’ 函数体 注意事项 函数形参不需要声明类型,也不需要指定函数返回值类型即使该函数不需要接收任何参数,也必须保留一对空的圆括号 括号后面的冒号必不可少函数…

数据结构之堆的实现

首先我们要想堆应该用什么实现,我们这里可以使用数组,因为每一层的数是有限个的,所以我们可以很容易将数的每一个位置对应到数组中去。 那我们就可以仿照顺序表写出我们的结构。 然后我们要考虑我们要实现哪些函数。 最基本的功能初始化和销…

Jetson Orin NX 开发指南(6): VINS-Fusion-gpu 的编译和运行

一、前言 由于 Jetson 系列的开发板 CPU 性能不是很好,因此在处理图像数据时往往需要 GPU 加速,而 VINS-Fusion 是针对同步定位与建图(SLAM)问题中十分出色的视觉算法,但是其在图像处理过程中资源消耗较大&#xff0c…

TypeScript基础语法

👨 作者简介:大家好,我是Taro,前端领域创作者 ✒️ 个人主页:唐璜Taro 🚀 支持我:点赞👍📝 评论 ⭐️收藏 文章目录 前言一、TS是什么?二、使用步骤1.安装TS…

力扣刷题 day41:10-11

1.乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 方法一&…

图像特征算法---ORB算法的python实现

一、ORB算法 1.算法简介 ORB 是 Oriented Fast and Rotated Brief 的简称,可以用来对图像中的关键点快速创建特征向量,这些特征向量可以用来识别图像中的对象。 其中,Fast 和 Brief 分别是特征检测算法和向量创建算法。ORB 首先会从图像中…

Nginx常用操作命令

文章目录 前言Nginx常用操作指令查看Nginx版本号启动Nginx && 关闭Nginx重新加载Nginx 前言 我们在使用Nginx操作命令之前,我们必须要进入到Nginx的目录里面才可以。 指令1:   cd /usr/local/nginx/   指令2:    cd sbin 也可…

计算机毕业设计 it职业生涯规划系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

MySQL三大日志undolog、redolog、binlog

在MySQL中,很多的功能也都需要基于日志实现,比如事务回滚、数据持久化、数据恢复、数据迁移、MVCC机制。其中undolog、redolog都是InnoDB引擎中的日志,而且都是在Buffer Pool中,而binlog在Server层中,位于每条线程中。…

如何在小程序首页设置标题栏文字

小程序的首页标题栏是用户进入小程序时首先看到的部分,因此设置一个适合文字对于树立品牌非常有作用。以下是一些简单的步骤,教你如何在小程序的首页设置标题栏文字(如下图,白色的“商城”文字)。 1. 在小程序管理员后…

电大搜题——学习的好机会

添加图片注释,不超过 140 字(可选) 近年来,随着广播电视大学教育的普及,重庆开放大学以其卓越的教学品质和领先的教育理念,在继续教育领域崭露头角。作为这一教育品牌下的杰出成果,电大搜题微信…

旧苹果手机数据如何导入新手机里面?

旧iphone数据怎么导入新iphone?一般需要先备份旧iphone,然后再将备份恢复到新iphone。如果满足一定条件,也可以通过设备传输的方式。旧iphone数据导入新iphone要多久?这取决于导入的数据量以及使用的工具。本文会给大家详细讲解一…

【JavaEE初阶】 synchronized关键字详解

文章目录 🌴synchronized 的特性🚩互斥🚩可重入 🍀synchronized 的使用🚩直接修饰普通方法🚩修饰静态方法🚩 修饰代码块🧭synchronized 的使用总结: 🎍Java 标…

TCP/IP(十一)TCP的连接管理(八)socket网络编程

一 socket网络编程 socket 基本操作函数 bind、listen、connect、accept、recv、send、select、close 说明: 本文需要C语言、syscall系统调用、OS 操作系统支持,如果不了解可以暂时跳过备注: 知道对应库函数的更底层机制思考: socket函数与FIN、ACK等…

Malformed \uxxxx encoding.问题解决方案

问题背景 Maven项目构建时报错如下, [ERROR] Malformed \uxxxx encoding. [ERROR] java.lang.IllegalArgumentException: Malformed \uxxxx encoding. [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re…

测试岗最好用的——十大软件测试工具

前言 目前由于软件测试工作在软件的生产过程中越来越重要,很多软件测试工具应运而生,这里介绍一下目前最流行的一些软件测试工具,一个十个,介绍如下: 一、企业级自动化测试工具WinRunner 这款软件是Mercury Interact…