网络层五大核心知识点

引言

在前面几期文章中,无论是UDP还是TCP,其实我们都在介绍 TCP/IP 模型的“传输层”,我们知道,数据在传输层完成相应的封装后就会来到网络层进行下一步的数据转发,那么数据在网络层又接受了哪些神秘的力量?下面就让我们来揭开网络层的神秘面纱!

一、地址管理

1、IP地址

IP 地址(Internet Protocol Address)是指互联网协议地址。IP地址是一个32位的二进制数,通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:192.168.1.36

2、MAC地址

MAC 地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址。主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC地址。长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)

特殊的MAC地址:广播数据报的MAC地址为:FF:FF:FF:FF:FF:FF(注:广播数据报,发送一个广播数据报,表示对同网段所有主机发送数据报。)

二、子网划分

具体划分过程如下图(来源:涨芝士):

这里引入两个概念:

1、将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得到的结果就是网络号。
2、将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。

同时网络号主机号也是IP地址的两个重要组成部分。其中网络号用来标识网段(局域网);主机号用来标识局域网中的主机。

这里除了使用子网掩码的方式划分,还有一种古老的方式,将IP地址划分为以下5类:

注意:这种“粗糙”的划分方式,存在 IP 地址浪费的问题。例如在A、B类地址中,由于主机号长度过长,并且实际网络架设时,连接的主机数量又常远小于最大主机数,会造成大量 IP 地址浪费。

三、特殊IP地址

  1. 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网;
  2. 将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包;此时想这个IP地址发送UDP数据包,这个数据包就会被转发给整个局域网中所有主机(TCP不支持广播);
  3. 127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
  4. 主机号为1。如192.168.0.1一般作为网关IP

注意:TCP/IP 协议规定,不同子网之间无法直接通信,如果想要通信需要“网关”进行转发。通常路由器就担当“网关”这样一个角色。

四、解决 IP 地址不够用

由于IP地址是一个32位的二进制数,因此最大的IP地址数就为 2 32 2^{32} 232 次方,大约是 42亿9千万,而全球人口数量接近 80亿,IPV4 在2019年11月25日被正式分配完毕,为了解决IP地址不够用的问题当下主要有以下解决方案:

1、动态分配IP地址

设备上网才分配IP地址,不上网不分配。这种方案治标不治本,并没有增加 IP 数量,只能在一定程度上解决问题,不能彻底解决 IP 地址不够用的问题。

2、NAT机制

NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能。在探讨NAT技术之前,我们先了解以下3个概念:

  1. 内网(局域网)IP:10.*172.16.*-172.31.*192.168.*
  2. 外网 IP:除去内网 IP 剩下的IP地址均为外网 IP
  3. 全局IP要求唯一,但是私有(内网)IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的。

NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法,并且同一局域网在转化时会分配同一个全局IP,也就是说此时一个全局IP就代表当前局域网内所有的网络设备。下图IP转换过程:

那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?此时NAPT就可以解决这个问题,通过使用使用 IP+port 来建立这个关联关系:

3、使用IPV6

IPV4使用4个字节,32位来表示IP地址。IPV6使用16个字节,128位来表示IP地址,经过简单计算,大约是:2^32*2^32*2^32*2^32这个数字无比巨大,甚至说给世界上每一粒沙子都分配一个IP地址都搓搓有余。

但是对当前来说,有余IPV6和IPV4协议并不兼容,使用IPV6需要升级硬件,成本较高,又由于NAT技术的使用目前极大缓解了IPV4的困境,所以IPV6目前还多处于预备阶段,尚未启用。

五、路由选择

对于网络数据传输,不是想象中那样,数据直接从源主机到达目的主机,而是类似在地图中,从A到B的过程:

IP地址描述的是路途总体的起点和终点。而行进也必须一个地点一个地点的前进,由MAC地址来描述路途上每一个区间的起点和终点。

IP数据报在进行网络转发过程中,和上述情况类似,就是一个逐渐问路的过程,每个路由器只认识周围的情况,很可能不清楚目的IP所在的位置,此时路由器就会指出一条路径(路由表中的“下一条”表项),将数据报引向更上一级的路由器中,重复上述过程,最终会逐渐逼近目标,最终实现数据报的转发。

其实在“下一跳”寻址的过程中,还会使用到一个关键的协议:ARP协议。

ARP是一个介于数据链路层和网络层之间的协议,ARP协议建立了IP地址与MAC地址的映射关系

在数据链路层,寻找下一跳设备MAC地址的过程,称为ARP寻址

下面是具体的寻址过程:

  1. 主机和路由器中都保存了一张ARP缓存表:通过IP地址可以找到对应的MAC地址。
  2. 根据下一跳设备的IP地址,在ARP缓存表中能找到对应的MAC地址,则可以设置目的MAC并发送数据报。
  3. 如果找不到,则发送ARP广播数据报:目的MAC为广播地址,询问下一跳设备的MAC地址。

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

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

相关文章

IDEA 2019 Springboot 3.1.3 运行异常

项目场景&#xff1a; 在IDEA 2019 中集成Springboot 3.1.3 框架&#xff0c;运行异常。 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

代码随想录 Day6 哈希 LeetcodeT454 四数之和II T383赎金信 T15 三数之和 T18 四数之和

本文代码思路来源于: 代码随想录 前言 希望大家在刷这部分题的时候先熟悉熟悉哈希结构的基本常用api,比较方便理解. LeetCode T454 四数之和 题目链接:454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; 题目思路 暴力解法仍然是遍历四个数组解决此题, 哈希的思路有…

基于SpringBoot+Bootstrap的旅游管理系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 登录模块的实现 景点信息管理界面 订票信息管理界面 用户评价管理界面 用户管理界面 景点资讯界面 系统主界面 用户注册界面 景点信息详情界面 订票信息界面 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言…

【Go】rsrc不是内部或外部命令、无法将“rsrc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称 解决方法

前言 想尝试用go创建一个桌面应用程序&#xff0c;然后查了下决定用 walk。 我们要先下载walk&#xff0c;这里 官方链接 按照官方文档&#xff0c;我们先用go get命令下载。 go get github.com/lxn/walk然后分别创建好了 main.go、main.manifest 文件&#xff0c;代码如下…

vue event bus 事件总线

vue event bus 事件总线 创建 工程&#xff1a; H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\08-事件总线-扩展 vue --version vue crea…

uniapp 微信小程序之隐私协议开发

uniapp 微信小程序之隐私协议开发 官网通知&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html 1、配置 __usePrivacyCheck__: true&#xff1b;位置 manifest.json : "mp-weixin":{"__usePrivacyCh…

Linux发行版X华为鲲鹏openEuler

前言 作为硬件和软件之间的桥梁&#xff0c;我接触的最多的就是Windows和Centos&#xff0c;还记得最初的鸟哥的Linux私房菜&#xff0c;而Centos即将停止维护更新&#xff08;Centos7维护到2024&#xff09;&#xff0c;对于个人学习来说没有任何影响&#xff0c;但是对于企业…

SEO方案尝试--Nuxtjs项目基础配置

Nuxtjs 最新版 Nuxt3 项目配置 安装nuxtjs 最新版 Nuxt3 参考官网安装安装插件安装ElementPlus页面怎么跳转&#xff0c;路由怎么实现404页面该怎么配置配置 网页的title 安装nuxtjs 最新版 Nuxt3 参考官网安装 安装插件 安装ElementPlus 安装 Element Plus 和图标库 # 首先&…

高效实时!麒麟信安操作系统(嵌入式版)V3来了,为工业领域数智化转型夯实安全底座

随着万物互联和工业领域数智化时代的到来&#xff0c;嵌入式应用日益广泛&#xff0c;嵌入式系统技术已成为促进智能制造快速发展的关键要素之一。麒麟信安作为国产操作系统领军企业&#xff0c;始终走在行业前列&#xff0c;本次发布的麒麟信安操作系统&#xff08;嵌入式版&a…

【小笔记】fasttext文本分类问题分析

【学而不思则罔&#xff0c;思维不学则怠】 2023.9.28 关于fasttext的原理及实战文章很多&#xff0c;我也尝试在自己的任务中进行使用&#xff0c;是一个典型的短文本分类任务&#xff0c;对知识图谱抽取的实体进行校验&#xff0c;判断实体类别是否正确&#xff0c;我构建了…

配置OSPFv3基本功能 华为笔记

1.1 实验介绍 1.1.1 关于本实验 OSPF协议是为IP协议提供路由功能的路由协议。OSPFv2&#xff08;OSPF版本2&#xff09;是支持IPv4的路由协议&#xff0c;为了让OSPF协议支持IPv6&#xff0c;技术人员开发了OSPFv3&#xff08;OSPF版本3&#xff09;。 无论是OSPFv2还是OSPFv…

AI项目十一:Swin Transformer训练

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;训练自己的数据集&#xff0c;并测试。 一、安装标注软件labelme # 安装labelme pip install labelme # 启动 labelme 这里数据集准本&#xff0c;标注图片数据过程自己探索。 最后文件结构如下&…

sentinel-dashboard-1.8.0.jar开机自启动脚本

启动阿里巴巴的流控组件控制面板需要运行一个jar包&#xff0c;通常需要运行如下命令&#xff1a; java -server -Xms4G -Xmx4G -Dserver.port8080 -Dcsp.sentinel.dashboard.server127.0.0.1:8080 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.0.jar &…

HTML - input type=file 允许用户选择多个文件

效果 示例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><!-- When the multiple Boolean attribute is specified, the file input allows the user to select more than o…

再生之术:遗忘 Root 密码的 CentOS8 Stream 解决方案

文章目录 大魔头 RootGRUB 引导界面BootLoaderGRUB主要功能选择启动的操作系统编辑内核启动参数 进入GRUB 引导界面编辑内核启动参数单用户模式 进入内核编辑界面rd.break进入单用户模式 大魔头 Root 哈哈&#xff0c;你好&#xff01;今天&#xff0c;让我们来聊聊 Linux 系统…

Linux 端口

查看端口占用 1、使用nmap命令查看端口的占用情况 安装nmap&#xff1a;yum -y install nmap 语法&#xff1a;nmap 被查看的IP地址 可以看到&#xff0c;本机&#xff08;127.0.0.1&#xff09;上有7个端口现在被程序占用了。 2、使用netstat命令查看指定端口的占用情况 语…

小程序如何设置余额充值

在小程序中设置余额充值是一种非常有效的方式&#xff0c;可以帮助商家吸引更多的会员并提高用户的消费频率。下面将介绍如何在小程序中设置余额充值并使用。 第一步&#xff1a;创建充值方案 在小程序管理员后台->营销管理->余额充值页面&#xff0c;添加充值方案。可…

Python爬虫实战案例——第六例

文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff01;严禁将文中内容用于任何商业与非法用途&#xff0c;由此产生的一切后果与作者无关。若有侵权&#xff0c;请联系删除。 目标&#xff1a;去哪儿网指定城市人气值最高的15个景点评论数据采集 地址&a…

ThreeJS-3D教学二:基础形状展示

three中提供了22 个基础模型&#xff0c;此案例除了 EdgesGeometry、ExtrudeGeometry、TextGeometry、WireframeGeometry&#xff0c;涵盖 17 个形状。 Fog 雾化设置&#xff0c;这是scene场景效果EdgesGeometry , WireframeGeometry 更多地可能作为辅助功能去查看几何体的边和…

学校安全用电管理系统解决方案

随着科技的发展和进步&#xff0c;电力已成为我们日常生活和学习的重要支柱。然而&#xff0c;电力的使用也带来了一定的安全风险。特别是对于学校这个复杂而又活跃的环境&#xff0c;安全用电管理系统的角色显得尤为重要。 一、学校用电管理系统的现状 目前&#xff0…