【计算机网络入门】初学计算机网络(十一)重要
目录
1. CIDR无分类编址
1.1 CIDR的子网划分
1.1.1 定长子网划分
1.1.2 变长子网划分
2. 路由聚合
2.1 最长前缀匹配原则
3. 网络地址转换NAT
3.1 端口号
3.2 IP地址不够用?
3.3 公网IP和内网IP
3.4 NAT作用
4. ARP协议
4.1 如何利用IP地址找到MAC地址?
5. DHCP协议
5.1 DHCP作用
5.2 DHCP分配流程
①discover:
②offer:
③request:
5.2.1 提出问题
④acknowledge:
1. CIDR无分类编址
由于互连网的兴起,如果还是采用ipv4每人一个ip,那么42亿ip地址一定是不够用的,为了解决这个问题就有了CIDR无分类编址。
传统的IP地址分配方式:
举一个简单的例子,某公司需要2000个ip地址,那么如果使用c类地址那么只有2的八次方 = 256个地址能用显然是不够的,所以使用b类地址,那就是有2的16次方 = 65536个地址,剩下的ip资源就会大量的浪费。
CIDR无分类编址分配IP:
分配21位网络号,那么主机号就是32 - 21 = 11,也就可以有2的11次方 = 2048个ip地址可以提供分配。
1.1 CIDR的子网划分
1.1.1 定长子网划分

这样做有什么缺点呢?例如我们使用2bit作为子网号,那么14位是主机号,那就意味着每一个子网都要2的14次方个ip地址,那么实际情况下,有些子网可能根本不需要这么多的ip地址,就会造成资源的浪费。每个子网都一样大,资源就会造成浪费。

1.1.2 变长子网划分
从自由分配的主机号里面每次取出1bit作为子网号,就可以分为两个子网,每个子网依次重复之前的步骤。
不断划分子网的网络前缀不是其他子网的网络前缀的前缀,其实就是哈夫曼编码。


2. 路由聚合
当路由表项的部分网络前缀相同并且转发的出口一致,就可以合并为一个路由表项。这样的聚合叫做路由聚合也叫做超网。
优点:
①路由表变小,内存占用减少。
②查询速度减少。
缺点:
①可能引入无效地址;但是转发的时候会走默认0.0.0.0,此帧将会被丢弃。

2.1 最长前缀匹配原则
当目的地址与表项中多个路由地址相同,有限选取匹配程度最高的表项,从该表项的接口转发。

3. 网络地址转换NAT
3.1 端口号
网络层实现了主机和主机之间的通信,但是事实上的通信一定是进程之间的通信,例如微信发送消息只能微信接收,那么我们要实现进程之间的通信就会引入端口号这一概念。
IP地址+端口号就可以锁定某一个主机的特定进程;每一台主机的端口号相互独立。
传输层包含的首部是:源端口和目的端口;网络层包含的首部是:源IP地址和目的IP地址。
3.2 IP地址不够用?
地址是32个bit,如果每一台主机都要消耗全球唯一的IP地址,那么2的32次方 = 42亿肯定是不够用,那么如果一个局域网使用一个IP呢?例如校园网,有成千上万台设备,如果学校只用一个IP,成千上万台设备里面运行了几十万+个进程,我们只需要给这些进程编号即可区分彼此,所以端口号就能做到这一点。
3.3 公网IP和内网IP
一般来说,一个局域网才有资格使用全球唯一的IP,这个IP叫做公网IP或者外网IP。在局域网内部,有一些可以复用的特殊网段例如192.xx.xx.xx等,这些网段只能由内网使用,可以复用。
3.4 NAT作用
使用NAT可以将外网IP+端口号 ==》内网IP + 端口号(特定主机的特定进程)。

发送信息的流程:
首先发送信息的一方把自己的内网IP和端口号、目的进程的公网IP和端口号封装;然后到了距离目的进程最近的路由器,使用路由器中的NAT表对封装内的目的IP和端口进行改写,改写成该网段下该进程的内网IP和端口,最后将封装好的信息传送给指定进程,进程再逐级拆分从而获得真正的信息。
如何进行封装信息:
信息首先会添加传输层的TCP首部,其中包含源端口和目的端口;然后经过网络层添加IP首部,其中包含源IP和目的IP。

4. ARP协议
ARP协议最核心的就是ARP表,里面记录着IP和MAC地址之间的映射。

4.1 如何利用IP地址找到MAC地址?
首先将ARP请求分组封装进MAC帧,目的地址全1进行广播,源地址是自己的地址;当目的路由器收到ARP请求分组的时候,会记录分组中的MAC和IP之间的映射关系在ARP表之中。ARP请求分组进行广播之后,会受到ARP响应分组进行单播,源地址是要找的地址,目的地址是请求分组的源地址。此时发送方的路由器也会记录IP和MAC地址在ARP表之中。

ARP请求分组:
我的IP是xx,我的MAC是xx,要找IP是xx的家伙。
ARP响应分组:
我是你要找的那个家伙,我的IP是xx,MAC是xx。
5. DHCP协议
5.1 DHCP作用
分配IP地址,配置子网掩码、默认网关。
5.2 DHCP分配流程
一台新接入网络的主机会经过以下几个步骤:
①discover:
首先在应用层封装DHCP报文,自报家门,把自己的MAC地址封装。
然后再传输层封装UDP数据报,把自己的端口号和目的端口号进行封装。
然后网络层中封装IP数据报,目的地址是全1进行广播,源地址因为没有分配所以是全0,形成广播数据报
最后在数据链路层封装MAC帧,把自己的MAC地址和全1的MAC地址封装进去形成广播帧。

如果是其他服务器接受到这个MAC帧,一层一层剥开发现传输层里面的目的端口是67,而67是DHCP独占端口,所以接受到之后直接丢弃。
②offer:
DHCP服务端接收到客户端发送的MAC帧就会一层一层拆开,最后发现传输层的端口就是自己的端口,于是返回一个offer。
首先在IP地址池里面找到一个空闲地址,应用层封装DHCP数据报里面存着提供的空闲IP地址租用期、默认网关、子网掩码。
然后到了传输层封装UDP数据报里面存放着源端口号和目的端口号。
然后到了网络层封装IP数据报,目的IP是广播,源IP。
最后封装成MAC数据帧,把客户端的MAC地址作为目的地址,源地址是本地地址,进行发送。
到了路由器直接进行精准发送。
DHCP客户端收到MAC帧之后一层层拆开获得IP地址、子网掩码、默认网关。

③request:
此时在应用层封装DHCP请求报文,内含自己的MAC地址,以及接受此IP地址。
然后去传输层封装UDP数据报,内含DHCP服务器的端口和客户端的端口。
在网络层封装IP数据报,内含广播IP地址和0.0.0.0
在数据链路层封装MAC帧,内含广播MAC地址和自己的MAC地址
路由器收到MAC帧直接广播,非DHCP服务器接收之后拆到传输层发现端口不对,直接丢弃
最后DHCP服务器收到。

5.2.1 提出问题
为什么第一次DHCP客户端收到服务端的信息报文里面不含服务端的IP和MAC地址呢,这样一来第二次发送request的时候就直接点对点发送不就好了吗?
答案:因为不止一个DHCP服务器,第一次discover是进行广播的,所以服务器都会发送一个offer,如果第三次是点对点发送给服务器,那么就有n-1个服务器不知道那个客户端接收了谁的IP地址等信息,所以第三次的request必须是广播形式。
④acknowledge:
DHCP服务端收到客户端发来的MAC帧之后,需要返回确认帧。
DHCP确认报文被封装到UDP报文,封装到IP数据报,最后封装到MAC帧指定发送给客户端。


相关文章:
【计算机网络入门】初学计算机网络(十一)重要
目录 1. CIDR无分类编址 1.1 CIDR的子网划分 1.1.1 定长子网划分 1.1.2 变长子网划分 2. 路由聚合 2.1 最长前缀匹配原则 3. 网络地址转换NAT 3.1 端口号 3.2 IP地址不够用? 3.3 公网IP和内网IP 3.4 NAT作用 4. ARP协议 4.1 如何利用IP地址找到MAC地址…...
决策树(Decision Tree)基础知识
目录 一、回忆1、*机器学习的三要素:1)*函数族2)*目标函数2.1)*模型的其他复杂度参数 3)*优化算法 2、*前处理/后处理1)前处理:特征工程2)后处理:模型选择和模型评估 3、…...
Nat Mach Intell | AI分子对接算法评测
《Nature Machine Intelligence》发表重磅评测,系统评估AI与物理方法在虚拟筛选(VS)中的表现,突破药物发现效率瓶颈。 核心评测体系:三大数据集 研究团队构建了三个新型测试集: TrueDecoy:含14…...
【自学笔记】Hadoop基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Hadoop基础知识点总览1. Hadoop简介2. Hadoop生态系统3. HDFS(Hadoop Distributed File System)HDFS基本命令 4. MapReduceWordCount示例&am…...
【Linux】使用问题汇总
#1 ssh连接的时候报Key exchange failed 原因:服务端版本高,抛弃了一些不安全的交换密钥算法,且客户端版本比较旧,不支持安全性较高的密钥交换算法。 解决方案: 如果是内网应用,安全要求不这么高…...
(二 十 二)趣学设计模式 之 备忘录模式!
目录 一、 啥是备忘录模式?二、 为什么要用备忘录模式?三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
交叉编译openssl及curl
操作环境:Ubuntu20.04 IDE工具:Clion2020.2 curl下载地址:https://curl.se/download/ openssl下载地址:https://openssl-library.org/source/old/index.html 直接交叉编译curl会报错找不到openssl,所以需要先交叉编…...
【每日八股】计算机网络篇(三):IP
目录 DNS 查询服务器的基本流程DNS 采用 TCP 还是 UDP,为什么?默认使用 UDP 的原因需要使用 TCP 的场景?总结 DNS 劫持是什么?解决办法?浏览器输入一个 URL 到显示器显示的过程?URL 解析TCP 连接HTTP 请求页…...
Gartner:数据安全平台DSP提升数据流转及使用安全
2025 年 1 月 7 日,Gartner 发布“China Context:Market Guide for Data Security Platforms”(《数据安全平台市场指南——中国篇》,以下简称指南),报告主要聚焦中国数据安全平台(Data Securit…...
从vue源码解析Vue.set()和this.$set()
前言 最近死磕了一段时间vue源码,想想觉得还是要输出点东西,我们先来从Vue提供的Vue.set()和this.$set()这两个api看看它内部是怎么实现的。 Vue.set()和this.$set()应用的场景 平时做项目的时候难免不会对 数组或者对象 进行这样的骚操作操作ÿ…...
深入浅出:UniApp 从入门到精通全指南
https://juejin.cn/post/7440119937644101684 uni-app官网 uniapp安卓离线打包流程_uniapp离线打包-CSDN博客 本文是关于 UniApp 从入门到精通的全指南,涵盖基础入门(环境搭建、创建项目、项目结构、编写运行)、核心概念与进阶知识&#x…...
DeepSeek未来发展趋势:开创智能时代的新风口
DeepSeek未来发展趋势:开创智能时代的新风口 随着人工智能(AI)、深度学习(DL)和大数据的飞速发展,众多创新型技术已经逐渐走向成熟,而DeepSeek作为这一领域的新兴力量,正逐步吸引越…...
阻塞队列的实现(线程案例)
一.什么是阻塞队列? 1.如果对于一个满的队列,还要把元素入队列,此时这个队列就会阻塞等待,一直阻塞到这个队列不满为止,从而把这个元素入队列! 2.如果对于一个空的队列,还要从队列拿出元素&…...
http status是什么?常见的http状态码指的是什么意思?
HTTP 状态码 HTTP 状态码(HTTP Status Code)是服务器在响应客户端请求时返回的一个三位数字代码,用于表示请求的处理结果。HTTP 状态码是 HTTP 协议的一部分,帮助客户端(如浏览器或应用程序)了解请求是否成…...
react组件分离,降低耦合
分离前 分离后...
【AI】AI白日梦+ChatGPT 三分钟生成爆款短视频
引言 随着人工智能(AI)技术的快速发展,AI在各个领域都展现出了强大的应用潜力。其中,自然语言处理技术的进步使得智能对话系统得以实现,而ChatGPT作为其中的代表之一,具有自动生成文本的能力,为…...
MYSQL的安装教程
mysql安装分为:普通安装和压缩包安装 压缩包安装很多会存在安装失败的情况,所以我这里就用了普通安装 一、官网下载安装包 www.mysql.com 点击DOWNLOADS: 进入社区版本下载: 点击最下面一行进行下载: 选择第二个离…...
深入解析 C# 中的泛型:概念、用法与最佳实践
C# 中的 泛型(Generics) 是一种强大的编程特性,允许开发者在不预先指定具体数据类型的情况下编写代码。通过泛型,C# 能够让我们编写更灵活、可重用、类型安全且性能优良的代码。泛型广泛应用于类、方法、接口、委托、集合等多个方…...
NUMA架构介绍
NUMA 架构详解 NUMA(Non-Uniform Memory Access,非统一内存访问) 是一种多处理器系统的内存设计架构,旨在解决多处理器系统中内存访问延迟不一致的问题。与传统的 UMA(Uniform Memory Access,统一内存访问…...
数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南
文章目录 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南ChatGPTKimi腾讯元宝DeepSeek 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南 产品隐私设置操作路径隐私协议ChatGPT…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
