网络原理 IP协议与以太网协议

博主主页: 码农派大星.
数据结构专栏:Java数据结构
数据库专栏:MySQL数据库
JavaEE专栏:JavaEE
关注博主带你了解更多数据结构知识

目录
1.网络层 IP协议
1.IP协议格式
2.地址管理
2.1 IP地址
2.2 解决IP地址不够用的问题
2.3NAT网络地址转换
2.4网段划分
3.路由选择
2.数据链路层 以太网协议
1 认识以太⽹
2.认识MAC地址
3.ARP协议
4.以太⽹帧格式
3.应⽤层协议DNS(DomainNameSystem)
1.网络层 IP协议
1.地址管理 => IP地址
2.路由管理 => 数据报传输路径进行规划
1.IP协议格式

4位版本号:指定IP协议的版本,对于IPv4来说,就是4,IPv6,就是6.
4位头部⻓度(header length):IP头部的⻓度是多少个32bit,也就是length*4的字节数.4bit表⽰最 ⼤的数字是15,因此IP头部最⼤⻓度是60字节.
8位服务类型(TypeOfService):3位优先权字段(已经弃⽤),4位TOS字段,和1位保留字段(必须置为 0).4位TOS分别表⽰:最⼩延时,最⼤吞吐量,最⾼可靠性,最⼩成本.这四者相互冲突,只能选择⼀个. 对于ssh/telnet这样的应⽤程序,最⼩延时⽐较重要;对于ftp这样的程序,最⼤吞吐量⽐较重要.
16位总⻓度(total length):IP数据报整体占多少个字节.
IP协议内置了拆包组包机制,单个IP数据报确实没法超过64KB,但不代表IP协议不能传输超过64KB的数据,IP协议会自动把大的数据报,拆成多个IP数据报携带传输,在接收方再进行拼装.
16位标识(id) : 同一个载荷的数据,被分成多份,交给多个IP数据报来携带,多个IP数据报,16标识(id)是相同的数值
3位标志位 : 只有2个有效,其中一个,表示这个包是否需要组包(是否拆包的一部分),另一个表示当前包是否组包的最后一个单位
13位片偏移: 决定组包的时候数据报的位置
8位⽣存时间(TimeToLive,TTL): 一个数据报在网络中最多存活多长时间.
8位协议 : IP数据报中,携带的载荷,是哪种传输层协议的数据报
16位头部校验和: 验证数据在传输中是否出错(只是针对首部,IP报头),载荷部分TCP/UDP都有自己的校验和了
32位源地址和32位⽬标地址:表⽰发送端和接收端
IP地址是32位的整数,是一个很大的数字,不方便理解和阅读,于是就通过点分十进制把32位(4字节)通过3个圆点分割开,每一个部分是一个字节(范围是0-255)
2.地址管理
2.1 IP地址
IP地址是一个32位的整数,即42亿9千万。地址描述的是一台联网设备在网络上所占的位置,理论上来说,是不应该重复的,但现在移动互联网的时代看来是不够用的。
2.2 解决IP地址不够用的问题
1.动态分配IP地址
一个设备上网就分配IP,不上网就不分配IP
2.NAT网络地址转换
3.IPv6 使用128位()16个字节表示IP地址 而IPv4使用32位(
)4个字节
2.3NAT网络地址转换
把IP地址分为两大类:
1, 内网IP/私网IP 是以10.、172.16.-172.31.、192.168.
2,外网IP/公网IP
公网IP必须是唯一的,但私网IP是允许重复的(在不同的局域网中时允许重复的)
同一个局域网内,主机A访问主机B,不会涉及到NAT机制,公网上的设备A,访问公网上的设备B,也不会涉及到NAT机制,但如果一个局域网中的主机A访问另一个局域网的主机B,NAT机制中,不允许的!!
如果局域网内部的设备A访问公网上的设备B ,NAT机制主要就是针对这个情况进行生效
NAT机制的缺点: 网络环境太复杂,替换过程中,每一层路由器都需要维护映射关系,每次转发数据,都要查询映射关系,都是开销
2.4网段划分
把一个IP地址会划分成2部分:网络号(标识一个局域网)+主机号(标识局域网中的设备)
同一个局域网中,网络号必须相同,主机号不同。

以我的主机为例:子网掩码为11111111 1111111 11111110 0000000,被标记为1的位置就是网络号,标记为0为主机号,那么网络号就是10.81.33,主机号为:.105
上面带有的子网掩码的划分是当下的网络环境,也有一些其他划分方式。
3.路由选择
在网络中进行路由转发的时候,每一个路由器无法知道网络的全貌,只知道一些局部信息,这就意味IP数据转发的过程中,是探索式,启发式的。
一个网络层的数据报报每次到达一个路由器的时,会进行一个类似“问路”的过程,每一个路由器内部都有一个数据结构“路右边”,根据数据报中的目的IP查找路由表,如果查到了,就直接去对应的位置,如果没有查到路由表中会有一个默认的表项,就向默认表项转发。
2.数据链路层 以太网协议
1 认识以太⽹
"以太⽹"不是⼀种具体的⽹络,⽽是⼀种技术标准;既包含了数据链路层的内容,也包含了⼀些物理 层的内容,以太⽹是当前应⽤最⼴泛的局域⽹技术
2.认识MAC地址
MAC地址⽤来识别数据链路层中相连的节点,⻓度为48位,及6个字节.⼀般⽤16进制数字加上冒号的形式来表⽰(例如:08:00:27:03:fb:19),在⽹卡出⼚时就确定了,不能修改.mac地址通常是唯⼀的
MAC地址与IP地址区别:
1).MAC地址使用6个字节表示,IP地址使用4个,空间范围比IP地址大了60000多倍,MAC地址可以给每个设备,都分配一个唯一的MAC地址值,一般一个网卡,在出厂的时候,MAC地址就被分配好了,就写死了,MAC地址也可以作为设备身份的标识
2)MAC地址使用在数据链路层,用来实现两个相邻设备之间的数据转发(微观),IP地址使用在网络层,立足于整个转发流程,进行路径规划(宏观)
IP地址立足于全局,完成整个传输过程,而mac地址只是相邻设备的通信。
3.ARP协议
ARP不是⼀个单纯的数据链路层的协议,⽽是⼀个介于数 据链路层和⽹络层之间的协议;
ARP协议/ARP数据报建⽴了主机IP地址和MAC地址的映射关系.
4.以太⽹帧格式

IP地址立足于全局,完成整个传输过程,而mac地址只是相邻设备的通信。

3.应⽤层协议DNS(DomainNameSystem)
即域名解析系统
域名=>网址
域名代表了IP地址
域名和IP地址,存在对应关系,一般是一个域名对应一个或者多个IP,也可能多个域名对应一个IP
把域名转换成IP地址的系统叫域名解析系统
全球搭建了DNS服务器,在全球范围里,DNS服务器数量太少,所以全球部署了许多DNS的镜像服务器供全球用户使用,每个人上网都会就近选择镜像DNS服务器.
相关文章:
网络原理 IP协议与以太网协议
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:MySQL数据库 JavaEE专栏:JavaEE 关注博主带你了解更多数据结构知识 目录 1.网络层 IP协议 1.IP协议格式 2.地址管理 2.1 IP地址 2.2 解决IP地址不够用的问题 2.3NAT网络地址转换 2.4网段划分 3.路由选择…...
k8s的安装
k8s的安装 1.创建主机,设置ip,hostname,关闭firewalld,selinux,NetworkManager 编号主机名称ip1k8s-master192.168.118.662k8s-node01192.168.118.773k8s-node02192.168.118.88 2.设置主机之间的ssh免密 [rootk8s-master ~]# ssh-keygen [rootk8s-ma…...
Qt中样式表常用的属性名称定义
Qt中,用好样式表,不但可以做出意想不到的酷炫效果,有时候也能减轻开发量,可能由于你不了解某些样式使用,想破脑袋通过代码实现的效果,反倒不如别人用样式,一两句样式脚本就搞定。 Qt中ÿ…...
React源码学习(一):如何学习React源码
本系列源码学习,是基于 v16.13.1,v17.x与v16.x区别并不太大! 一、如何正确的学习React源码? 找到Github,转到React仓库,fork / clone源码:React 查看Readme,在Documentation中有Cont…...
云计算服务的底层,虚拟化技术的实现原理
虚拟化技术: 一、 从cpu说起, intel和amd等cpu制造商 为了提高其cpu对 虚拟化程序的运算速度, 给cpu硬件里面 增加了指令集 VMLAUNCH, VMRESUME, VMEXIT, VMXOFF 这些指令集称为硬件辅助虚拟化技术的指令集。 ---------------------…...
大数据Flink(一百一十六):Flink SQL的时间属性
文章目录 Flink SQL的时间属性 一、Flink 三种时间属性简介 二、Flink 三种时间属性的应用场景 三、SQL 指定时间属性的两种方式 四、SQL 处理时间DDL定义 五、SQL 事件时间DDL定义 Flink SQL的时…...
Ansible自动化部署kubernetes集群
机器环境介绍 1.1. 机器信息介绍 IP hostname application CPU Memory 192.168.204.129 k8s-master01 etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,containerd 2C 4G 192.168.204.130 k8s-w…...
网络通信流程
目录 ♫IP地址 ♫子网掩码 ♫MAC地址 ♫相关设备 ♫ARP寻址 ♫网络通信流程 ♫IP地址 我们已经知道 IP 地址由网络号主机号组成,根据 IP 地址的不同可以有5钟划分网络号和主机号的方案: 其中,各类地址的表示范围是: 分类范围适用…...
数据结构一:绪论
(一)数据结构的基本概念 1.相关名词 【1】数据 1.信息的载体,描述客观事物 2.能被输入到计算机中 3.能被计算机程序识别和处理的符号的集合。 【2】数据元素 1.数据的一个“个体” 2.数据的基本单位 3.有时候也被称为元素、结点、顶点…...
使用OpenFeign在不同微服务之间传递用户信息时失败
文章目录 起因原因解决方法: 起因 从pay-service中实现下单时,会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中,不仅要Enable O…...
js中【Worker】相关知识点详细解读
什么是 JavaScript 中的 Worker? JavaScript 中的 Worker 是一个可以在后台线程中运行代码的 API,这样可以避免主线程(通常是 UI 线程)被阻塞。使用 Worker 时,JavaScript 可以在多线程环境中工作,解决了单…...
使用Apify加载Twitter消息以进行微调的完整指南
# 使用Apify加载Twitter消息以进行微调的完整指南## 引言在自然语言处理领域,微调模型以适应特定任务是提升模型性能的常见方法。本文将介绍如何使用Apify从Twitter导出聊天信息,以便进一步进行微调。## 主要内容### 使用Apify导出推文首先,我…...
【C++算法】滑动窗口
长度最小的子数组 题目链接: 209. 长度最小的子数组 - 力扣(LeetCode)https://leetcode.cn/problems/minimum-size-subarray-sum/description/ 算法原理 代码步骤: 设置left0,right0设置sum0,len0遍历l…...
(c++)猜数字(含根据当前时间生成伪随机数代码)
#include<iostream> #include<ctime>/*用srand((unsigned int)time(NULL));要包含这个头文件,如果没有这两个,rand()函数会一直生成42这个伪随机数。*/using namespace std;int main() {srand((unsigned int)time(NULL));//种子,…...
优化批处理流程:自定义BatchProcessorUtils的设计与应用
优化批处理流程:自定义BatchProcessorUtils的设计与应用 | 原创作者/编辑:凯哥Java | 分类:个人小工具类 在我们开发过程中,处理大量的数据集是一项常见的任务。特别是在数据库操作、文件处理或者…...
Framebuffer应用编程
目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数,分析Framebuffer…...
MongoDB根据字段内容长度查询语句
db.getCollection("qlzx_penalties_business_raw").find({$expr: {$lt: [{ $strLenCP: "$punish_name" }, 5]},"punish_name_type" : "机构", "source_data" : /中国/,})解释: 1-"source_data" : /中…...
Android中的单例模式
在Android开发中,单例模式(Singleton Pattern)是一种常用的设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式在需要控制资源访问、管理共享资源或配置信息的场景下特别有用。在Androi…...
python做游戏好用吗
Python做游戏是完全可以的,而且也非常简单,有一个专门针对游戏开发的平台(模块)—pygame,允许开发人员快速设计游戏而又摆脱了低级语言的束缚,下面我简单介绍一下这个模块的安装和使用: 1、首先…...
常用游戏运行库下载
包含以下资源: DirectX Repair.exe DirectX Repair(Enhanced Edition). vcredist C2013 x64.exe 微软常用运行库合集 下载链接...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
【汇编逆向系列】六、函数调用包含多个参数之多个整型-参数压栈顺序,rcx,rdx,r8,r9寄存器
从本章节开始,进入到函数有多个参数的情况,前面几个章节中介绍了整型和浮点型使用了不同的寄存器在进行函数传参,ECX是整型的第一个参数的寄存器,那么多个参数的情况下函数如何传参,下面展开介绍参数为整型时候的几种情…...
