【计算机网络入门】初学计算机网络(十一)重要

目录

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帧指定发送给客户端。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

精讲坐标轴系统(Axis)

续前文: 保姆级matplotlib教程:详细目录 保姆级seaborn教程:详细目录 seaborn和matplotlib怎么选,还是两个都要学? 详解Python matplotlib深度美化(第一期) 详解Python matplotlib深度美化&…

Metal学习笔记十:光照基础

光和阴影是使场景流行的重要要求。通过一些着色器艺术,您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成,如果您没有正确地照亮它们,场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…

动态规划_路径问题(典型算法思想)—— OJ例题算法解析思路

目录 一、62. 不同路径 - 力扣(LeetCode) 算法代码: 代码思路分析 问题定义: 动态规划定义: 边界条件: 填表过程: 返回结果: 代码优化思路 空间优化: 滚动数组…

【AI论文】ViDoRAG:通过动态迭代推理代理实现视觉文档检索增强生成

摘要:理解富含视觉信息的文档中的信息,对于传统的检索增强生成(Retrieval-Augmented Generation,RAG)方法来说,仍然是一个重大挑战。现有的基准测试主要集中在基于图像的问答(Question Answerin…

【赵渝强老师】监控Redis

对运行状态的Redis实例进行监控是运维管理中非常重要的内容,包括:监控Redis的内存、监控Redis的吞吐量、监控Redis的运行时信息和监控Redis的延时。通过Redis提供的监控命令便能非常方便地实现对各项指标的监控。 一、监控Redis的内存 视频讲解如下 【…

HTML前端手册

HTML前端手册 记录前端框架在使用过程中遇到的各种问题和解决方案,供后续快速进行手册翻阅使用 文章目录 HTML前端手册1-前端框架1-TypeScript框架2-CSS框架 2-前端Demo1-Html常用代码 2-知云接力3-Live2D平面动画 3-前端运维1-NPM版本管理 1-前端框架 1-TypeScrip…

C++:类和对象(下篇)

1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _mont…

JVM基本概念及内存管理模型

一、JVM基本概念 JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序运行的核心组件。它负责将 Java 字节码转换为特定平台的机器指令,并提供内存管理、垃圾回收、安全性等功能。JVM 的主要功能包括以下: 加载和执行…

MyBatis - 单元测试 参数传递 注解 CRUD

目录 1. MyBatis 简介 2. 简单使用 MyBatis 2.1 创建 MyBatis 项目 2.2 连接数据库 2.3 创建 Java 类 2.4 创建 Mapper 接口 2.5 在测试类中执行 3. 单元测试 3.1 Test 3.2 SpringBootTest 3.3 BeforeEach / AfterEach 4. MyBatis 基础操作 4.1 配置 MyBatis 打印日…

大语言模型学习--本地部署DeepSeek

本地部署一个DeepSeek大语言模型 研究学习一下。 本地快速部署大模型的一个工具 先根据操作系统版本下载Ollama客户端 1.Ollama安装 ollama是一个开源的大型语言模型(LLM)本地化部署与管理工具,旨在简化在本地计算机上运行和管理大语言模型…

shell文本处理

shell文本处理 一、grep ​ 过滤来自一个文件或标准输入匹配模式内容。除了 grep 外,还有 egrep、fgrep。egrep 是 grep 的扩展,相当于 grep -E。fgrep 相当于 grep -f,用的比较少。 用法 grep [OPTION]... PATTERN [FILE]...支持的正则描述…

Linux中死锁问题的探讨

在 Linux 中,死锁(Deadlock) 是指多个进程或线程因为竞争资源而相互等待,导致所有相关进程或线程都无法继续执行的状态。死锁是一种严重的系统问题,会导致系统资源浪费,甚至系统崩溃。 死锁的定义 死锁是指…

Baklib内容中台赋能企业智管

内容中台构建全场景智管 现代企业数字化运营中,全域内容管理能力已成为核心竞争力。通过智能知识引擎驱动的内容中台架构,企业能够实现跨部门、多形态数据的统一归集与动态调度。以某制造企业为例,其利用中台系统将分散在CRM、ERP及内部文档…

ArcGIS Pro高级应用:高效生成TIN地形模型

一、引言 在地理信息科学与遥感技术的快速发展背景下,数字高程模型(DEM)已成为地形表达与分析的关键工具。 三角网(TIN)作为DEM的一种重要形式,因其能够精准描绘复杂地形特征而广受青睐。 ArcGIS Pro为用…

leetcode112-路径总和

leetcode 112 思路 我们利用递归来实现,用result字段来记录结果值,默认为false,我们递归的时候传入需要的目标值,然后每次遍历到一个节点,就用目标值减去节点当前值,最终到叶子节点时,如果是…

LLM | 论文精读 | CVPR | PEACE : 通过多模态大语言模型(MLLMs)赋能地质图全面理解

论文标题:FairCLIP: Harnessing Fairness in Vision-Language Learning 作者:Yan Luo Min Shi Muhammad Osama Khan Muhammad Muneeb Afzal等 期刊:CVPR 2025 email:yuhan.huangwhu.edu.cn 创作不易,恳请大家点赞收…

网络学习(四)HTTPS中,SSL的单向认证与双向认证

目录 一、什么是SSL?1.1 SSL 的主要功能1.2 SSL 的工作原理1.3 SSL 的核心组件1.4 SSL 的应用场景1.5 SSL 与 TLS 的区别 二、SSL 单向认证、双向认证2.1 SSL 单向认证2.2 SSL 双向认证2.3 总结:SSL 单向认证和双向认证的区别 一、什么是SSL?…

Mybatis 中#{} 和${} 的区别是什么?

在 MyBatis 中,#{} 和 ${} 都是用于动态 SQL 语句中的占位符,但是它们的作用和使用方式是不同的。下面是它们的区别: 1. #{} —— 用于防止 SQL 注入和自动类型处理 #{} 是用来将参数安全地传递到 SQL 语句中,它会将传递的参数值…

HTML-05NPM使用踩坑

2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷,然后一番折腾之后,终究还是没有解决npm的问题😞😞😞,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…

Zookeeper 的核心引擎:深入解析 ZAB 协议

#作者:张桐瑞 文章目录 前言ZAB 协议算法崩溃恢复选票结构选票筛选消息广播 前言 ZooKeeper 最核心的作用就是保证分布式系统的数据一致性,而无论是处理来自客户端的会话请求时,还是集群 Leader 节点发生重新选举时,都会产生数据…