湖科大计网:网络层

一、网络层概述

一、基本概念

        网络层的主要任务是实现网络互连,进而实现数据包在各网络之间传输。

若只有单个网络,只需要物理层和数据链路层即可。

不同的异构网络需要路由器将其互连,路由器的每一个接口代表一个不同的网络,也区分一个广播域。

        我们以TCP/IP协议栈的网络层为例来学习网络层。

二、需要实现的任务

①向传输层提供可靠服务还是不可靠服务。

即在数据包传输过程中,可能误码、乱序、丢失之类的,网络层可以选择是否提供可靠传输功能。

如TCP/IP协议体系的网络层是提供的不可靠服务。

②网络层寻址问题

IP地址的前面相同部分是网络编号,后面是区分不同的接口。

③路由选择问题

传输数据包的时候,一个路由器如何选择它要传出的接口。

三、网络层提供的两种服务

数据交换方式的分组交换方式。

虚电路方式和数据报方式。

我们将学习的TCP/IP协议体系的网络层就是无连接的不可靠传输的网络层。

二、IPv4地址—32bit

一、概述

IPv4地址是因特网上的每一台主机(或路由器)的每一个接口分配的全球唯一的32bit的标识符。

IPv4地址采用点分十进制表示方法,即将32bit分为4个字节,每个字节的值表示成一个十进制用点分开。

二、IPv4地址的编制方法

对于每一个网络,分配网络地址的时候,每一个路由器接口都划分出一个网络号。

不管是哪种编址方式,一定要记住,每一个路由器的接口都是不一个不同的网络号,包括不同的子网!!

每一个主机和路由器的接口 都有一个IP地址,互不相同,同一个路由器接口下的网络,网络号相同。

一、分类编制的IPv4地址

A类地址,网络号占一个字节,网络号首位为0,则网络号有0~127

B类地址,网络号占两个字节,网络号前两位为10,则网络号有128.0~191.255

C类地址,网络号占三个字节,网络号前三位是110,则网络号有192.0.0~223.255.255

判别这三类地址只需要判断第一个字节的大小

0~128~192~224

A        B      C

分配给主机的IP地址的主机号不能为全0,也不能为全1,全0那表示一个网络地址,全1表示一个广播地址。

①A类地址

A类地址特殊在于网络号0和127(最大和最小的两个),都用于特殊作用。

最小的0不指派,最大的127用作本地环回测试地址,不指派。

②B类地址

没有特殊的网络号

③C类网络

没有特殊的网络号

④特殊IP地址

(1)全0的地址:0.0.0.0 用于没有分配IP地址的主机发送报文时作为自己的源IP地址

如果仅仅网络号是0,也是一样的作用

(2)广播地址:只可以做为目的地址

1°仅主机号全1的广播地址,表示在对应网络号下进行广播,可以跨路由器转发

2°IP地址全1的广播地址255.255.255.255,表示在本地网络下广播,路由器不转发

(3)环回地址:A类地址的127.

只要主机地址不是全0(网络地址),也不是全1(广播地址),那就可以当作环回地址既可以当作目的也可以当作源。

二、划分子网的IPv4的地址

        我们可以在分类编址的基础上,给原来的网络划分子网。

        利用主机号的一部分位作为子网的标识,并且注意子网号也将作为新的网络号。

        子网号的识别可以用子网掩码来实现,即子网号的部分掩码位置全为1,其余部分为0,与IP地址相与 以及分类编址的情况,就可以知道主码有哪几位是分配给子网编制了。

        在没有分配子网的网络中,会存在默认的子网掩码,那就是原来分类编址全为1的子网掩码。

        以后网络地址就是子网的网络地址了。

三、无分类编址的IPv4的地址(CIDR)

同一个网络号的IP地址组成一个“CIDR块”。

同样的,对于一个网络号,主机号全0是网络地址,全1是广播地址!

CIDR方法在画路由表的时候更加节省空间!使用路由聚合的方法,可以在没有差错的情况下对IP地址求前缀。

三、IPv4地址的应用规划

①定长的子网掩码FLSM

使用同一个子网掩码来划分子网。

网络号+主机号→网络号+子网号+主机号(这里和划分子网的IPv4地址方法是一样的)

即申请到的C类网络地址被划分成8个子网,拿出5个分配给不同的网络即可。

②变长的子网掩码VLSM

实际上就是将CIDR地址块,划分成不同的小地址块,(这是不是也就是不同网络前缀会不一样的原因了!因为将最大的CIDR地址块一步一步划分,一步一步分配下来的!)

而这里所谓的子网掩码,其实就是/x中x位网络前缀全1其余全0的32位bit。

大的网络前缀+主机号→小的网络前缀+主机号

我们来举个栗子!

        1°我们先看每个网络需要多少个主机号位(包括全0和全1)

        2°然后我们进行极限分配(也就是说 要多少我们给他的刚好达标就可以)

右边的注意事项实际上就是,网络地址的主机号必须是全0的,所以比如/28的网络前缀划分的子块必须从低四位为0开始。

        3°你会发现,咱们分配的时候是将218.75.230.0/24这个网络前缀为24位的大CIDR块下的IP地址分配给各网络,各网络的网络前缀可以不一样,但是他们分配的大CIDR块下的32位IP地址各不相同! 

<这就解释了我们的疑惑:/22的地址分配的32位IP地址如何避免与/18的32位IP地址相同? 实际上他们都是从一个更大的CIDR块按序分配下来的,所以一定不相同~>

三、IP数据报

一、发送和转发过程

我们来讨论一下,为什么某个主机 对于一个IP地址 与 其自己的掩码相与就能判断是否是同一个网络。我们来讨论无分类编址的情况(这种情况包含了划分子网的情况):

①对于一个大CIDR地址块/24下 分配的两个 小CIDR地址块,/27和/28,对于/27的网络而言,它的后5位00000~11111都是它网络下的,所以对于/28,其前27位就不能和/27是一样的了,对于任意一个/(n+x)和/n都是如此。所以一定可以区分下来。

②我们对于每一个网络都要分配到它的子网之下,而不能使用/24作为它的掩码,就比如,一栋房子有四个卧室,不同的人住在不同的卧室,用卧室可以区分不同的人,但是用这栋房子就区分不了,既然我们要做的就是用每栋房子某个卧室区分人,那就不要再在房子已经区分卧室之后再用房子指代人了。同理,对于一个大的CIDR块,它之下的子网,都以子网号区分,不会再用大的CIDR块的网络号。 所以用①就可以证明所有问题。

一、主机发送数据报

        主机需要发送的目的IP地址,与自己的子网掩码相与就可以知道目的IP地址是否与自己是同一个网络。因为当且仅当IP地址对应其子网掩码前面位数相同,相与之后得到的值才能是相同的,否则不相同。

        每个主机都含有一个自己的IP地址和自己的子网掩码,它们之与就可以得到它所在的网络地址是多少,每个主机还有一个默认网关,这要求是对应路由器接口的IP地址,用于主机间接传给其他网络的人呢;每个路由器接口都有一个IP地址和自己的子网掩码。

        在同一个网络中就可以直接用MAC地址寻址了。

二、路由器转发数据报

        路由器对来的目的地址与其路由表中的各子网掩码相与,来判断它所在的网络。

相与之后,与对应目的网络作比较如果是一样的,那就说明该目的地址就是这个目的网络。

七、总结

八、习题补充

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装nvm【node.js版本管理工具】

目录 下载安装包 安装 配置 配置node的国内镜像源 配置npm的国内镜像源 常用命令 查看可安装的node版本 安装指定的版本 查看已有的node版本列表 切换版本 下载安装包 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11 安装 安装过程就不贴了&#xff0…

leetcode刷题日志-14最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“raceca…

Java进阶笔记(面向对象后, 持续更新)

常用API 游戏打包成exe 考虑的因素 要有图形化界面代码要打包起来游戏用到的图片也要打包JDK也要打包 核心步骤 把所有代码打包成一个压缩包, jar后缀的压缩包把jar包转换成exe安装包把第二部的exe, 图片, JDK整合在一起, 变成最终的exe安装包 1. Math 是一个帮助我们用…

Android Studio 写一个Java调用c++ 的demo

前提条件&#xff1a; 本地已经配置好了ndk环境,如果没有配置好&#xff0c;建议参考macos 配置ndk环境-CSDN博客 这篇链接。 新建一个Empty Project 比如我这里的Project的名字是HelloJNI&#xff0c;包名是com.example.hellojni 然后在src目录下&#xff0c;右键选择Add C …

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时&#xff0c;可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例&#xff0c;但在某些测试用例中&#xff0c;URL是硬编码为httpbin.or…

SpringCloud -Token传递之Feign

目录 方法一 RequestHeader 方法二 使用Feign的Interceptor 步骤一 实现RequestInterceptor接口 步骤二&#xff1a;配置Feign 通常微服务对于用户认证信息解析有两种方案 在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加到 header 中传递下去。在…

提取纯色马赛克

​​​​​​ 图像预处理 将彩色图像加载到内存。 转换图像为灰度图像&#xff0c;以简化处理。 对灰度图像应用二值化处理&#xff0c;将图像中的纯色区域分为前景和背景。这可以使用阈值处理来完成。 轮廓检测 使用轮廓检测算法&#xff0c;例如OpenCV的 findContours 函数&…

vite+vue3+electron开发环境搭建

环境 node 18.14.2 yarn 1.22 项目创建 yarn create vite test01安装vue环境 cd test01 yarn yarn dev说明vue环境搭建成功 安装electron # 因为有的版本会报错所以指定了版本 yarn add electron26.1.0 -D安装vite-plugin-electron yarn add -D vite-plugin-electron根目…

〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

专注于绘画,不受限制!尝试Growly Draw for Mac的快速绘画应用

Growly Draw Mac版是Mac平台上的一款绘画应用&#xff0c;它提供了简单易用的画板页面和多种色彩、画笔工具&#xff0c;让你可以轻松地完成作画。无论你是初学者还是专业人士&#xff0c;都可以在这款应用中找到适合自己的绘画方式。通过使用Growly Draw Mac版&#xff0c;你可…

ChatGPT + DALL·E 3

参考链接&#xff1a; https://chat.xutongbao.top/

基于R语言平台Biomod2模型的物种分布建模与可视化分析

!](https://img-blog.csdnimg.cn/84e1cc8c7f9b4b6ab60903ffa17d82f0.jpeg#pic_center)

​软考-高级-系统架构设计师教程(清华第2版)【第11章 未来信息综合技术(P384~P419)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第11章 未来信息综合技术&#xff08;P384~P419&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

Pandas 累计统计函数【cumsum、cumprod、cummax、cummin】【计算前1/2/3/…/n个数的和、积、最大值、最小值】

一、累计统计函数 函数作用cumsum计算前1/2/3/…/n个数的和cummax计算前1/2/3/…/n个数的最大值cummin计算前1/2/3/…/n个数的最小值cumprod计算前1/2/3/…/n个数的积 import numpy as np import pandas as pd# np.nan &#xff1a;空值 df pd.DataFrame({key1: np.arange(1…

LLM大模型 (chatgpt) 在搜索和推荐上的应用

目录 1 大模型在搜索的应用1.1 召回1.1.1 倒排索引1.1.2 倒排索引存在的问题1.1.3 大模型在搜索召回的应用 (实体倒排索引&#xff09; 1.2 排序1.2.1 大模型在搜索排序应用&#xff08;融入LLM实体排序&#xff09; 2 大模型在推荐的应用2.1 学术界关于大模型在推荐的研究2.2 …

HttpClient示例

HttpClient官网 HttpClient - HttpClient Home 每个对应版本都有 快速开始的示例 maven项目 pom依赖 <dependencies><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.…

智能指针面试题

智能指针被问到的概率还是很大的&#xff0c;特别是Shared_ptr&#xff0c;最好会手撕&#xff0c;亲身经历&#xff01; 基本概念 1. RAll RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源&#xff08;如内存、文…

(七)什么是Vite——vite优劣势、命令

vite分享ppt&#xff0c;感兴趣的可以下载&#xff1a; ​​​​​​​Vite分享、原理介绍ppt 什么是vite系列目录&#xff1a; &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff0…

Python入门学习篇(一)——注释变量输入输出

1 注释 1.1 作用 a 方便他人和自己阅读代码 b 告诉编译器这部分内容是不用执行的。1.2 单行注释 # 注释内容1.3 多行注释(引号) 1.3.1 三对双引号 """ 注释内容 """1.3.2 三对单引号 注释内容 1.4 pycharm快捷键使用 ctrl/ 多行注释(以# …

挑战视觉边界,探索图形验证码背后的黑科技

在日常生活中&#xff0c;我们登录网站或者其他平台时&#xff0c;在填写完账号密码之后&#xff0c;还会让我们填写4或6位的数字或者英文字母等&#xff0c;填写正确才能请求登录。这个其实是防止某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试&#xff0c;如下…