IP协议(2) 和 数据链路层协议基础
IP协议续
1.路由选择
在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择
举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地
路由的过程,其实就是样子问路的过程
1.当IP数据包到达路由器的时候,会查看目的IP
2.路由器决定这个数据包是能直接发送给目标主机还是需要发送给下一个服务器(查询路由表)
3.依次反复,知道到达目的IP地址
如何判定数据包应该发到哪里??
这就依赖路由器存储了一个路由表结构,能找到路线就直接发送,否则按照默认发送
IP地址
IP地址分为网络号和主机号
教材上经常说分为ABCDE五类地址,实际上现在已经取消了这种叫法了
因为这种方案的局限性太大了,A类和B类这样的地址能存放的主机数太多了,实际上根本不可能有这么大的局域网,这么多的主机,这样就浪费了很多IP地址
于是人们提出了新的划分方案,称之为 CLDR
1.引入一个子网掩码来区分网络号和主机号
2.子网掩码也是一个32位的正整数 通常用 0 结尾
3.将IP地址和子网掩码进行按位与得到的就是网络号
4.网络号和主机号的划分和ABC类地址无关
例:子网掩码 255.255.255.0 8位子网掩码
网络号 140.205.20.0
这里能表示的地址范围就是 140.202.20.0 - 140.202.25.255
;
特殊IP地址
127.0.0.1 常用的测试IP地址,表示本机 (本机环回测试)
其实127.*都可以表示本机IP
每个网段的1 和 255 的地址是不可用的
1代表该网段
255代表广播地址(一对多)
数据链路层
1.以太网数据帧格式
以太网数据帧的数据格式很简单
这里数据链路层也搞了一套地址体系
MAC地址 一个主机只能有一个MAC地址,相当于身份证号,出厂即有
MAC地址和IP地址的区别:
MAC地址侧重于局部的转发(相邻设备)
IP地址侧重于全局的转发
举个例子
我现在想从这个路线走
南京 -> 西安 -> 四川
南京 - > 西安
源IP 南京 目的IP 四川
源mac 南京 目的 mac 西安
西安 -> 四川
源IP 南京 目的 IP 四川
源mac 西安 目的mac 四川
1.目的地址 需要发送到的MAC地址
2.源地址 发送的源地址
3.类型 分为几种类型
类型 0800 + 数据报(16-1500字节) 可能是syn这样的特殊报文也可能是正常 的业务数据
类型0806 ARP 请求/应答 + PAD
类型8035 RARP请求/应答 + PAD
ARP协议和RARP协议是两个横跨数据链路层和网络层的协议
主要进行IP和MAC地址之间的转换
RARP则是转换回IP地址,类似于hash表的结构(转发表不是路由表)
转发表:一个设备和哪些设备是连接的
4.CRC 校验和,和之前的一样,是为了检验数据传输途中有没有发生比特翻转
注:这里载荷的部分有一个特殊的要求:最短是46字节最长是1500字节
原因:受限于物理设备
46字节是因为ARP是46字节
1500字节的上限就取决于以太网的网口,网线等硬件设备 也称之为 MTU
所以IP数据包的拆包往往是因为这个MTU的限制导致的,而不是64KB的上限导致的
以太网是如此,但是还有其他的传输协议,所以MTU并不是固定1500的
DNS(域名解析系统)
通过IP地址来描述网络设备的位置
这里域名就是一个更好记的网址 ,用其来代表IP地址,方便记忆
很久以前是引入的hosts文件,类似于哈希表,每次访问域名就会获取查询
随着互联网发展的越来越快,维护hosts表就很麻烦了,此时就有大佬搭建了一个(DNS服务器),查询到的结果就是域名对应的IP
由于全世界都得上网,对于根域名服务器来说压力太大了,此时我们就在各国搞一个镜像,分别为每个国家的顶级DNS服务器,然后再进行分级管理,每次用户访问就就近访问即可.
相关文章:

IP协议(2) 和 数据链路层协议基础
IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…...
Flink-1.18.1环境搭建
下载 下载flink安装包 Index of /dist/flink/flink-1.18.1 下载flink-cdc安装包 Release Release 3.0.0 ververica/flink-cdc-connectors GitHub 安装 添加环境变量 vi ~/.bash_profile export FLINK_HOME=/home/postgres/flink/flink-1.18.1 export PATH=$PATH:$FL…...
deepin20.9安装及配置
安装deepin20.9很简单,刻录u盘 安装 一路next apt install nginx global vim-nox debian11 使用apt安装php, 使php多版本共存_debain11 php5-CSDN博客 vim LeaderF安装问题 - 知乎 debian10安装vue环境, 包括安装node.js-CSDN博客 debian安装vue3 nodejs20-CSD…...

2-2 动手学深度学习v2-损失函数-笔记
损失函数,用来衡量预测值和真实值之间的区别。是机器学习里面一个非常重要的概念。 三个常用的损失函数 L2 loss、L1 loss、Huber’s Robust loss 均方损失 L2 Loss l ( y , y ′ ) 1 2 ( y − y ′ ) 2 l(y,y^{\prime})\frac{1}{2}(y-y^{\prime})^{2} l(y,y′)21…...
非springboot 使用aop 切面
在非Spring Boot应用中使用AOP(Aspect Oriented Programming,面向切面编程)的代码实现需要依赖Spring AOP库。由于Spring AOP库并不直接支持非Spring应用,你需要将Spring AOP库作为依赖项添加到项目中,并使用Spring AO…...
MongoDB 字段中数据类型不一致序列化异常排查与处理
MongoDB 字段中数据类型不一致序列化异常排查与处理 背景如下,因为项目迁移愿意,一个使用Mongodb的业务拥有C#和Java两组Api。Java Api开发和测试都很顺利。上线一段时间后,客服反馈记录都不见了。查看数据库发现,时间字段拥有两…...
网络安全简介
网络安全: 网络安全攻击分为被动攻击和主动攻击。 1. 被动攻击:是指攻击者从网络上窃取了他人的通信内容,通常把这类的攻击称为截获,被动攻击只要有2种形式:消息内容泄漏攻击和流量分析攻击。由于攻击者没…...

【Docker】.NET Core 6.0 webapi 发布上传到Docker Desktop并启动运行访问,接口返回数据乱码解决方法
欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…...

【Android Gradle 插件】自定义 Gradle 插件模块 ⑤ ( 完整总结 )
一、创建自定义插件类型模块 ( Java or Kotlin Library ) 选择 " 菜单栏 / New / New Module… " 选项 , 在 " Create New Module " 对话框中 , 选择 创建 " Java or Kotlin Library " 类型的依赖库 ; 二、手动导入相关依赖 ( Java | Groovy | …...

浅析现代计算机启动流程
文章目录 前言启动流程概述磁盘分区格式MBR磁盘GPT磁盘隐藏分区 传统BIOS引导传统BIOS启动流程 UEFI引导UEFI引导程序UEFI启动流程 引导加载程序启动操作系统相关参考 前言 现代计算机的启动是一个漫长的流程,这个流程中会涉及到各种硬件的配置与交互,包…...

七月论文审稿GPT第2.5和第3版:分别微调GPT3.5、Llama2 13B以扩大对GPT4的优势
前言 自去年7月份我带队成立大模型项目团队以来,我司至今已有5个项目组,其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第…...

Android Studio导入项目 下载gradle很慢或连接超时
AS最常见的问题之一就是下载gradle非常慢,还经常出现下载失败的情况,没有gradle就无法build项目,所以一定要先解决gradle的下载问题,下面教大家两种常用方法 手动下载压缩包并替换 1、关闭Android Studio,复制下面的网…...

如何使用VSCode上运行Jupyter,详细案例过程出可视化图
Python作为最受AI喜欢的语言之一,我们与大家共同学习下如何在VS Code上运行Jupyter,并且用简单案例实现出图。 环境 VS Code version: 1.80.1 Python: 3.12.0 小白安装过程: 在准备好基础环境,小白心想,AI可是霸占科…...

Linux中有名管道和无名管道
无名管道基础 进程间通信介绍 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内存(mmap) 套接字(socket)过时的IPC通信方式 System V IPC 共享内存(sh…...

[SWPUCTF 2021 新生赛]easyupload1.0
发现是上传文件第一想到是文件木马 <?php eval ($_POST[123]);?>木马上传burp修改后缀发现flag里面这个是假的 我们猜想是在phpinfo我们上传<?php eval(phpinfo(););?>木马上传burp修改后缀里面 CtrlF 发现flag...

【Linux网络编程三】Udp套接字编程(简易版服务器)
【Linux网络编程三】Udp套接字编程(简易版服务器) 一.创建套接字二.绑定网络信息1.构建通信类型2.填充网络信息①网络字节序的port②string类型的ip地址 3.最终绑定 三.读收消息1.服务器端接收消息recvfrom2.服务器端发送消息sendto3.客户端端发送消息sendto4.客户端…...

【Rust】字符串,看这篇就够了
这节课我们把字符串单独拿出来讲,是因为字符串太常见了,甚至有些应用的主要工作就是处理字符串。比如 Web 开发、解析器等。而 Rust 里的字符串内容相比于其他语言来说还要多一些。是否熟练掌握 Rust 的字符串的使用,对 Rust 代码开发效率有很…...
单片机和 ARM 的区别
单片机和 ARM 在功能和使用上有一些区别,因此哪个更好用取决于具体的需求和场景。 单片机是一种集成了微处理器、存储器和外设接口的集成电路芯片,通常具有体积小、功耗低、可靠性高、成本低等特点。单片机广 泛应用于各种领域,如智能仪表、工…...

JavaScript从入门到精通系列第三十一篇:详解JavaScript中的字符串和正则表达式相关的方法
文章目录 知识回顾 1:概念回顾 2:正则表达式字面量 一:字符串中正则表达式方法 1:split 2:search 3:match 4:replace 知识回顾 1:概念回顾 正则表达式用于定义一些字符串的…...

23、数据结构/查找相关练习20240205
一、请编程实现哈希表的创建存储数组{12,24,234,234,23,234,23},输入key查找的值,实现查找功能。 代码: #include<stdlib.h> #include<string.h> #include<stdio.h> #include<math.h> typedef struct Node {int data;struct n…...

Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...