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

目录

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.mzph.cn/news/896891.shtml

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

相关文章

Android 获取jks的SHA1值:java.io.IOException: Invalid keystore format

命令生成 keytool -list -v -keystore 全路径.jks -alias 别名 -storepass 密码 -keypass 密码 1、遇到 的问题: 通过快捷键 ‘win r’ 启动的小黑框运行上面的命令会出现下面这个错误keytool 错误: java.io.IOException: Invalid keystore format 2、解决问题 …

掌握 ElasticSearch 聚合查询:Aggregations 入门与实战

掌握 ElasticSearch 聚合查询:Aggregations 入门与实战 一、引言 (Introduction)二、数据准备 (Data Preparation)2.1 创建索引 (Create Index)2.2 批量导入数据 (Bulk Import Data) 三、聚合查询基础 (Aggregation Basics)3.1 什么是聚合查询?(What are…

Microsoft.Office.Interop.Excel 的简单操作

Microsoft.Office.Interop.Excel 的简单操作 1、安装 Microsoft.Office.Interop.Excel2、声明引用 Microsoft.Office.Interop.Excel3、简单的新建 EXCEL 操作代码4、将 DataGridView 表数据写到 EXCEL 操作代码5、将 EXCEL 表数据读取到 C# 数据表 DataTable 操作代码 1、安装 …

LLM 对话框组件 | 字节青训营前端开发项目

系统介绍 LLM对话框项目系统介绍 一、项目概述 选题背景随着人工智能技术的飞速发展,自然语言处理(NLP)领域取得了显著进展,其中对话系统(Dialog System)作为NLP的重要应用方向,正逐渐渗透到人们的日常生活中。从智能客服到语音助手,从智能家居到在线教育,对话系统以…

k8s命名空间和资源配额

在现代的云计算环境中,容器化技术已成为主流。而 Kubernetes(简称 k8s)作为一项开源的容器编排系统,广泛应用于各类场景。本文将详细介绍关于 k8s 中的命名空间和资源配额,帮助你更好地理解和管理你的集群资源。 k8s …

从统计学视角看机器学习的训练与推理

从统计学视角看机器学习的训练与推理 目录 引言:统计学与机器学习的奇妙缘分训练与推理:你得先学会“看数据”再“用数据”最大似然估计(MLE):从直觉到数学证明 3.1 伯努利分布的MLE3.2 单变量高斯分布的MLE3.3 多元…

AI赋能企业协作4-NL2Sql技术路线

1.1 对话即服务的一点思考 在数智化转型的过程中,基于即时通信(IM)的协作平台正悄然成为企业智能化转型的“新基建”。协作平台天然具备高频交互、实时协同和场景化落地的特性,仿佛是为对话式AI量身定制的试验场——员工在熟悉的聊…

批量提取 Word 文档中的页面

如何将 Word 文档中的页面提取出来形成一个新的文档呢?比如将 Word 文档中的第一页提取出来、将 Word 文档中的最后一页提取出来、再或者将 Word 文档中的中间几页提取出来等等。人工的处理肯定非常的麻烦,需要新建 Word 文档,然后将内容复制…

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…

多镜头视频生成、机器人抓取、扩散模型个性化 | Big Model weekly第58期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介绍了一种名为GLM-4-Voice的智能且类人化的端到端语音聊天机器人。它支持中文和英文,能够进行实时语音对话&a…

基于 Rust 与 GBT32960 规范的编解码层

根据架构设计,实现编解码层的代码设计 Cargo.toml 加入二进制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二进制序列化支持 bytes-utils "0.1" # 添加字节处理工具 开始编码 错误处理(error.rs&#x…

MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第一部分)

声明:文章仅用于交流学习,不用于商业项目实施,图片来源于网络,如有侵犯权利,请联系作者及时删除。 本方案旨在对电力电容(PEC和PQM型号)制造工艺深度分析,结合管理要求设计MOM相关功…

FPGA开发,使用Deepseek V3还是R1(1):应用场景

以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…

JavaWeb后端基础(3)

原打算把Mysql操作数据库的一些知识写进去,但是感觉没必要,要是现在会的都是简单的增删改查,所以,这一篇,我直接从java操作数据库开始写,所以这一篇大致就是记一下JDBC、MyBatis、以及SpringBoot的配置文件…

Pytorch实现之SRGAN+CBAM的结构设计

简介 简介:在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。 论文题目:Super-resolution Generative Adversarial Networks Based on Attention Model(基于注意力模型的超分辨率生成对抗网络) 会议:2020 IEEE第六届计算机与通信国际会议 摘要:基…

移动端国际化翻译同步解决方案-V3

1.前言 因为软件出海,从在上上家公司就开始做翻译系统,到目前为止已经出了两个比较大的版本了,各个版本解决的痛点如下: V1版本: 主要针对的是AndroidiOS翻译不一致和翻译内容管理麻烦的问题,通过这个工具…

2.css简介

什么是css: CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言,CSS 文件扩展名为 .…

机器人学习模拟框架 robosuite (3) 机器人控制代码示例

Robosuite框架是一个用于机器人模拟和控制的强大工具,支持多种类型的机器人。 官方文档:Overview — robosuite 1.5 documentation 开源地址:https://github.com/ARISE-Initiative/robosuite 目录 1、通过键盘或SpaceMouse远程控制机器人…

可终身授权的外国工具,不限次数使用!PDF转CAD的软件

最近有不少朋友问我有没有好用的CAD转换工具,今天就来给大家分享两款超实用的小软件,希望能帮到大家。 第一款软件是一款国外开发的,它专门用来把PDF文件转换成CAD格式,特别方便。 这款软件的操作非常简单,打开后无需安…

Ubuntu系统上部署Node.js项目的完整流程

以下是在Ubuntu系统上部署Node.js项目的完整流程,分为系统初始化、环境配置、项目部署三个部分: 一、系统初始化 & 环境准备 bash # 1. 更新系统软件包 sudo apt update && sudo apt upgrade -y# 2. 安装基础工具 sudo apt install -y buil…