网络多层的协议详述

news2024/12/20 22:42:39

网络层

1)地址管理:制定一系列的规则,通过地址,在网络上描述出一个设备的位置

2)路由选择:网络环境比较复杂,从一个节点到另一个节点,存在很多条不同的路径,需要规划出更适合的路径进行网络传输

TCP/IP协议栈

4位版本  

4 => ipv4                  6 => ipv6                  目前大规模使用的两个版本

4位首部长度

IP协议的报头,也是变长的       0—0xf  => *4 => 0-60字节

选项(如果有)

8位服务类型

能够让IP协议,切换形态

3位为优先权字段(已弃用),4位TOS字段,1位保留字段(必须设置为0)

TOS字段的四个位,彼此之间是相互冲突的,只有一位为1

不同的位设为1,表示IP协议不同的形态

最小延时,最大吞吐量,最高可靠性,最小成本

16位总长度(字节)

描述了IP数据包最长的长度

IP协议也存在64kb的限制,但是IP协议自身支持“拆包组包”功能——

16位标识——将一个大的数据包拆成若干个小包,16位标识就是相同的值

3位标志——一位表示是否允许拆包,一位表示是否是最后一个包

13位片偏移——描述当前每个小的数据包(分片)的相对位置

8位生存时间

描述了一个IP数据包,在网络上还能存活多久

TTL的单位是次数

数据包被构造出来,TTL会被设置成一个初始值,数据包在转发过程中,每次经过一个路由器,TTL就会减1

如果数据包把TTL耗尽,还没顺利到达对方,就被丢弃了

8位协议

描述的是IP数据包的载荷部分,是一个UDP数据包,还是TCP数据包(传输层是那个协议)

16位首部校验和

这个校验和,只是校验IP首部,不管IP的载荷(UDP/TCP这样数据,自身都是有校验和的)

32位源IP地址 —— 32位目的IP地址

IP地址,本质上是一个32位的整数,一般写作 点分十进制 

地址管理

IP地址,是一个32位整数            2*32   =>    42亿9千万

地址理论上是不能重复的,互联网发展至今,能上网的设备早已超过IP地址的范围

此时如何解决IP地址不够用的问题:

1)动态分配IP

提高了IP地址的利用率,但是没有增加IP地址的数量(广泛使用的过渡方案)

2)NAT机制(网络地址转换)

本质上是让一个IP地址,代表一批设备

把IP地址分成两大类:

1. 内网IP(局域网IP)

在同一个局域网内部,内网IP之间不能重复

在不同局域网中,内网IP可以重复

2. 外网IP(广域网IP)

外网IP始终不允许重复,务必唯一

例如现在要传输一个数据:

NAT 路由器将源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37
NAT 路由器收到外部的数据时,又会把目标 IP 202.244.174.37 替换回 10.0.0.10
NAT 路由器内部,有一张自动生成的,用于地址转换的表;
10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,
目的 IP 都是相同的。那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机?

此时IP地址是相同,但是每台主机的端口号是不同的

如果此时恰好两台主机分配端口号相同——>

请求到达路由器后,路由器会发现这两个数据包的目的IP地址和目的端口都一样(访问同一个服务器),源端口也一样

路由器会把源端口也一起替换掉(路由器内部会记录映射关系)

当前的网络环境就是以  NAT + 动态分配  的方式解决IP地址不够用的问题 

NAT机制是“纯软件”的方案,因此局域网内部的设备能够主动访问外网的设备,外网的设备不能主动访问局域网的设备

3)IPv6

IPv6 使用16个字节表示IP地址          0—2*128

地球上所有的设备都可以有一个自己的  IPv6地址

IPv6 和 IPv4 是不兼容的

网段划分

IP 地址分为两个部分              网络号和主机号
网络号 标识网段 ,保证相互连接的两个网段具有不同的标识
主机号 标识主机 ,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号

同一个局域网中的设备,网络号必须相同,主机号必须不同

不同的局域网,网络号不能相同

子网掩码

一个IP地址,哪部分是网络号,哪部分是主机号,是不一定的

子网掩码,就是用来确定网络号的

32位整数(左边全是1,右边全是0)

子网掩码格式和 IP 地址一样,也是一个 32 位的二进制数。其中左边是网络位,用二进制数字 “1” 表示,1 的数目等于网络位的长度;右边是主机位,用二进制数字 “0” 表示, 0 的数目等于主机位的长度
子网掩码也可以使用二进制所有高位1相加的数值来表示
网络通信时,子网掩码结合 IP 地址,可以计算获得网络号(划分子网后的网络号)及主机号(划分
子网后的主机号)。一般用于判断目的 IP 与本 IP 是否为同一个网段
计算方式:

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

十进制二进制
IP地址
180.210.242.131
10110100.11010010.11110010.10000011
子网掩码
255.255.248.0
11111111.11111111.11111000.00000000
网络号
180.210.240.0
10110100.11010010.11110000.00000000
主机号
0.0.2.131
00000000.00000000.00000010.10000011

早期的网络分段形式:A类    B类    C类  D类   E类

0网络号(7位)主机号(24位)
10网络号(14位)主机号(16位)
110网络号(21位)主机号(8位)
1110多播组号(28位)
11110留后待用(27位)
1)将 IP 地址中的主机地址全部设为 0 ,就成为了网络号,代表这个局域网
2)将 IP 地址中的主机地址全部设为 1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包
3)127.* IP 地址用于本机环回( loop back )测试,通常是 127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),
对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通
操作系统提供了一套“虚拟网卡”,关联到这个IP上
4).255  
UDP能天然支持 广播,和这个IP有关
使用UDP socket给这个IP发送UDP数据报,此时局域网中的所有设备,都能收到这个数据

TCP无法与这个IP建立连接

路由选择

描述了IP协议(IP数据报)转发的过程

IP数据进行转发的时候,无法知道网络的全貌,只知道一些局部信息(一个路由器知道哪些设备和它是相连的),这就意味着IP数据报,在转发的过程中是一个“探索式”/“启发式”的过程

一个网络层数据报,每次到达一个路由器,都会进行“问路”过程

每个路由器内部都有一个数据结构“路由表”,根据数据报中的 目的IP,查路由表

如果查到了,就直接按照路由表中给定的方向(从哪个网口进行转发),继续转发

如果没查到,路由表里有一个“默认的表项”“下一个地址”,按照默认的表项转发

路由表——>

1. 手动配置

2. 自动获取

以太网协议

" 以太网 " 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了
一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等

通过网线/光纤,来通信,使用的协议是以太网协议

以太网横跨数据链路层和物理层

以太网数据帧:帧头 + 载荷(IP数据报)+ 帧尾

1)源地址和目的地址是指网卡的硬件地址(也叫 MAC 地址),长度是 48 位,是在网卡出厂时固
化的
2)帧协议类型字段有三种值,分别对应 IP ARP RARP
3)帧末尾是 CRC 校验码

目的地址/源地址

6个字节

不是IP地址,是网络中的另一套地址体系,Mac地址(物理地址)

目前来说,每个设备都是有唯一的Mac地址

Mac地址通常是十六进制表示的,两个十六进制数字就是一个字节

字节和字节之间通常使用  -  或者  :  来分割

IP协议立足于全局,完成整个通信过程中的路径规划工作

以太网则是关注于局部,相邻两个局部之间的通信过程

网络层 与 数据链路层 的路径侧重:

网络层无论有多少条路线,源IP和目的IP始终是整个通信过程中的最初起点和最后终点(不考虑NAT)

数据链路层关注的是“相邻节点”之间的如何转发

源mac和目的mac会根据当前转发的过程,每次到达一个节点,往下一个节点转发的时候,源mac和目的mac都会随之改变

IP数据报的最大长度不超过1500字节

MTU:数据链路层数据报能携带的最大载荷长度

不同数据链路层的协议,MTU不同(和物理层的介质也有关系)

IP数据报的分包组包,大概路是因为MTU,而不是触发64kb上限

这两种协议不是传输“业务数据”,而是辅助转发的协议

像交换机这样的设备,收到以太网数据报时,就需要要进行转发

转发的过程中就需要能根据Mac地址,判定数据要走那个网口

此处的网口是“物理意义”上插网线的接口(IP协议,路由器,走哪个网络接口,都是抽象的概念,最后还是要在数据链路层才能决定走哪个网口)

具体的转发过程:

交换机内部有一个数据结构“转发表”,和前面的路由器表有点像

转发表示一个简单的像hash的映射(此处不一定由软件实现)

转发表中的内容主要由  arp  协议实现

DNS

DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统

使用IP地址,描述设备在网络上的位置(应用层协议)

最早的域名解析系统,是通过一个简单文件实现——>  hosts文件

现在搭建了一套DNS系统(一组服务器)

如果要访问服务器,先给这个DNS服务器发起请求,查询一下当前的域名对应的IP,再访问目标网站

一个服务器硬件资源是有限的(CPU,内存,硬盘,网络带宽...)

服务器处理每个请求,都会消耗一定的资源

如果单位时间内访问次数超过服务器的上限,机器就挂了——>

1)开源

搭建“镜像服务器”,同步与主根的数据,用户会先访问距离自己最近的镜像服务器

2)节流

让请求量变少,让每个上网的设备,设置网络缓存

对于短时间的多次访问,只让第一次请求DNS即可,把到的结果保存到本地,后面的请求都是用第一次的结果即可

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

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

相关文章

Zabbix6.0升级为6.4

为了体验一些新的功能,比如 Webhook 和问题抑制等,升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档,确认组件要求的版本,否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

UML复习题

用例与用户的4种关系对象图和类图有什么关系:对象图是类图某一时刻的快照组件图,体现的是静态图部署图,涉及到硬件的结点,实线链接 以上都是静态图 时序图,消息先后协作图 ,谁和谁交互,对象之间的交互某一…

【MFC】多工具栏如何保存状态

MFC中的工具栏本来只有一个,如果想增加几个工具栏是比较简单,但现在一个重要的问题是,状态无法保存,导致每次打开,工具栏就会出现问题,要么偏移位置要么显示不出。 经过研究,发现是MFC框架中的…

Buck开关电源闭环控制的仿真研究15V/5V[Matlab/simulink源码+Word文档]

课题设计要求 ⑴输入直流电压(VIN):15V ⑵输出电压(VO):5.0V ⑶负载电阻:R2欧 ⑷输出电压纹波峰-峰值 Vpp≤50mV ,电感电流脉动:输出电流的10% ⑸开关频率(fs):100kHz ⑹BUCK主电路二极管的通态压降VD0.5V…

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

Flink2.0未来趋势中需要注意的一些问题

手机打字,篇幅不长,主要讲一下FFA中关于Flink2.0的未来趋势,直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲,很精彩,官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读:随着数据量的快速增长,传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战,Spark SQL 引入了多种优化技术,以提高查询效率,降低计算开销。本文从表达式层面探讨了 Spark…

在Tomcat中部署应用时,如何通过域名访问而不加端口号

--江上往来人,但爱鲈鱼美。 --君看一叶舟,出没风波里。 在Tomcat中部署应用时,如果你希望通过域名访问而不加端口号(默认HTTP端口80或HTTPS端口443),你通常需要在前端使用一个反向代理服务器(如…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

Leetcode分隔链表

java 实现 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class …

maui开发成生安卓apk,运行提示该应用与此设备的CPU不兼容

在生成.NET MAUI安卓应用时遇到“该应用与此设备的CPU不兼容”的问题,确保你的.NET MAUI应用支持的Android目标框架与设备CPU架构相匹配。例如,如果你的应用是为ARM64架构编译的,而你的设备是x86架构,就会出现不兼容的问题。 一、…

在 Unity 6 中使用APV为您的世界创建全局照明的新方法(一)

Unity 6 中推出的新照明功能让您能够更快速、更高效的完成对烘焙场景的照明工作,在本文中我们将与大家详细分享在 Unity 6 中应用自适应探针卷创建快速全局光照的更多细节与具体应用方法。由于内容比较丰富,我们将把内容分为三篇文章,以便大家…

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸,这样可以直接将低分辨率图片输入模型中,解决了输入尺度问题。改变特征维数,使用更小的卷积核和使用更多的映射层。卷积核更小,加入了更多的激活层。共享其中的映射层&…

VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Python环境安装二、VScode下载及安装三、VSCode配置Python环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…

使用Docker启用MySQL8.0.11

目录 一、Docker减小镜像大小的方式 1、基础镜像选择 2、减少镜像层数 3、清理无用文件和缓存 4、优化文件复制(COPY和ADD指令) 二、Docker镜像多阶段构建 1、什么是dockers镜像多阶段构建 1.1 概念介绍 1.2 构建过程和优势 2、怎样在Dockerfil…

Windows安全中心(病毒和威胁防护)的注册

文章目录 Windows安全中心(病毒和威胁防护)的注册1. 简介2. WSC注册初探3. WSC注册原理分析4. 关于AMPPL5. 参考 Windows安全中心(病毒和威胁防护)的注册 本文我们来分析一下Windows安全中心(Windows Security Center…

Hive其一,简介、体系结构和内嵌模式、本地模式的安装

目录 一、Hive简介 二、体系结构 三、安装 1、内嵌模式 2、测试内嵌模式 3、本地模式--最常使用的模式 一、Hive简介 Hive 是一个框架,可以通过编写sql的方式,自动的编译为MR任务的一个工具。 在这个世界上,会写SQL的人远远大于会写ja…

时空AI赋能低空智能科技创新

随着人工智能技术的不断进步,时空人工智能(Spatio-Temporal AI,简称时空AI)正在逐渐成为推动低空经济发展的新引擎。时空AI结合了地理空间智能、城市空间智能和时空大数据智能,为低空智能科技创新提供了强大的数据支持…

java 通过jdbc连接sql2000方法

1、java通过jdbc连接sql2000 需要到三个jar包:msbase.jar mssqlserver.jar msutil.jar 下载地址:https://download.csdn.net/download/sunfor/90145580 2、将三个jar包解压到程序中的LIB下: 导入方法: ①在当前目录下&#xff…

web实验二

web实验二 2024.12.19 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>青岛理工大学</title>&l…