网络层2--IP协议

news2024/12/26 9:23:33

目录

一、虚拟互连网络

二、IP地址

1、IP地址表示方法

2、IP地址分类

3、无分类编址CIDR

(1)网络前缀

(2)地址块 、 地址掩码

4、IP地址特点

5、地址解析协议ARP

(1)原理

(2)ARP四种情况

6、IP数据报的格式

(1)版本——4位

(2)首部长度——4位

(3)区分服务——8位

(4)总长度——16位

(5)标识——16位

(6)标志——3位

(7)片漂移——13位

(8)生存时间——8位

(9)协议——8位

(10)首部检验和——16位

(11)源地址、目的地址——32位

(12)可变部分——长度可变

三、阅读本文章后,你需要具备的能力


我们知道,数据链路层用于同一个网络内的不同主机通信
但是,不同的网络,要如何通信?
这就是IP协议的作用,让不同的计算机网络进行通信。
在理解IP协议前,需要先了解虚拟互连网络


一、虚拟互连网络

世界上数以百万计的不同网络之间,实现方式不可能一模一样
因为用户对网络的需求是不一样的,这就导致实现方式不同
实现方式不同,网络结构就有差异,例如:
不同寻址方式、不同接入方式、不同最大分组长度、不同路由控制技术等等
那么,如何将这不同的、有差异的网路进行连接互通呢?
这就需要中间设备辅助实现:转发器、交换机、路由器、网关

网络层次

设备名称功能描述
物理层转发器负责在物理层传输信号,连接同一网络内的设备。
数据链路层交换机在数据链路层转发数据帧,依据MAC地址进行数据转发,提升同一网络的效率。
网络层路由器在网络层转发数据包,依据IP地址选择最佳路径,连接不同的网络。
网络层以上网关作为不同网络协议之间的“翻译器”,处理网络层以上的数据传输和协议转换。

理解:
现在路由器将不同的网络连接起来
不同网络之间的通信通过路由器支持的IP协议实现
于是,IP协议屏蔽了不同网络底层的差异和异构
在逻辑上,以统一的视角将不同网络组织起来
从逻辑上看,好像所有的网络都是一样的,都是以IP协议进行连接
你用IP协议,我也用IP协议,大家都用IP协议,都一样
于是,网络之间的连接,就可以模糊掉底层细节,化成以下的样子:


(在一个异构层的上层增加一个统一的技术层是组织一个系统结构的重要手段)

直接交付:两个主机在同一个网络
间接交付:两个主机不同一个网络,需要通过路由器转发
分组在路由器中的每一次转发叫做“跳”

主机的协议栈有5层,路由器的协议栈只有下三层

二、IP地址

一个连接在互联网的设备,如果没有IP地址,就无法和其他主机通信,即没有接入网络
IP地址是互联网分配给世界上每一台主机的一个唯一的32位标识
只要接入互联网,就会自动被分配一个IP地址,作为该主机在整个计算机网络的地址标识

1、IP地址表示方法

IP地址是32位的二进制代码
为了提高可读性,一般8个为一个单元,使用十进制进行记录
然后在每一个十进制之间使用小数点隔开,称为点分十进制法
例如:

IP地址分两个字段
前面的网络号 + 后面的主机号 = 32位
IP地址指明,连接到某一个网络号的主机 / 路由器

2、IP地址分类

以网络号个数进行分类:
A类(8位)、B类(16位)、C类(24位)单播地址 和 D类多播地址
主机号一般扣除全1和全0;网络号也一般扣除全1和全0

A类地址网络号有8位,第一位固定0,实际有7位
网络号0000 0000 :表示本网络,特殊用途
网络号0111 1111:127表示环回测试,用于本主机进程通信
因此,可用网络范围为:1-126,减去全0和全1
主机号可分配位为24位置,除去全0和全1(全0表示网络号,全1表示所有主机,广播)2^24-2

B类地址网络段有2个字节,16位,前两位固定10,实际有14位,可分配网络号:2^14-2
主机号地址有16位,最大主机数是2^16-2
网络号范围为128.1-191.254(全0和全1不指派)

C类:网络有3字节,24位,前三位固定110,实际有21位,主机号有8位,减去全0和全1有2^8 -2 

可分配网络号:2^21-2,网络号范围为192.0.1-223.255.254,全0,全1不可指派

3、无分类编址CIDR

(1)网络前缀

网络前缀不固定,设置为n位,指明网络号的位数;剩余为主机号后缀
网络号的n位不是固定的值,而可以是任意位
使用斜线记法:192.168.1.1/20

(2)地址块 、 地址掩码

32位的地址,减去n位的网络号剩余就是主机号,扣去全0和全1

地址掩码举例:192.255.1.1/20(斜线后面的20就是地址掩码的个数)
由地址掩码获取网络号:
0111 1111  1111 1111  0000 0001  0000 0001 原地址
1111 1111  1111 1111  1111 0000  0000 0000 地址掩码 (源地址与地址掩码 与运算)
0111 1111  1111 1111  0000 0000  0000 0000 网络号

写成点分十进制,192.255.0.0就是网络号

特殊地址块:
0.0.0.0/0:默认路由
前缀n=31,只有两个主机号0和1,用于点对点链路
前缀n=32,前32位都是网络号,没有主机号,用于路由器路由

路由聚合:
一个大地址快会包含多个小地址块
当由很多小地址块时,可以使用一个大地址块作为目的网络地址
于是,一个转发表地址就可以转发很多个对应网络
大大节省转发表空间

4、IP地址特点

(1)网络前缀由IP地址管理机构分配主机号由得到该网络前缀的单位自行分配
(2)路由器根据网络号进行分组转发,剩下的交给网络内部自己处理
(3)具有不同网络前缀的网络必须使用路由器进行转发
(4)所有的网络号都是平等的
IP地址是标志主机连接一个网络的接口,如果断开连接,IP地址就不存在
交换机连接起来的多个网段依旧是一个网络
路由器至少拥有两个以上的IP地址,一个端口就是一个IP地址
两个路由器连接,连线两端可以分配网络(必须不同),也可以不分配网络(无编号 / 匿名网络)

MAC地址和IP地址的区别:

MAC是硬件地址,物理地址
IP地址是逻辑地址,因为是软件实现的

MAC地址运行在数据链路层
IP地址运行在网络层,是MAC的上层协议

网络层->数据链路层:
使用IP地址的数据报发送给链路层,会被封装为MAC帧,在IP地址基础加上MAC首部和CRC尾部
数据链路层看不见IP数据报
MAC帧在传送时使用的源地址和目的地址都是MAC地址
数据链路层->网路层
MAC帧剥去MAC地址首部和尾部得到IP数据报
在整个IP数据报的转发过程中,改变的只有MAC地址
而IP地址始终没有变化
因此,路由器只根据IP地址进行转发
而发送到局域网后的数据帧只能看到MAC地址(局域网只能看见MAC地址

5、地址解析协议ARP

IP地址可以让路由器将数据在不同的网络之间传递
但是,从网络层到数据链路层,到具体的局域网
此时数据报只有IP地址,需要封装成MAC帧
那么,如何知道MAC地址?
使用ARP协议
ARP协议用于解决同一个局域网的IP地址和MAC地址映射问题
该解析过程是主机自动进行的

(1)原理

在主机的ARP高速缓存存放一个从IP地址到MAC地址的映射表,并经常更新
假设,A主机向B主机发送IP数据报,先在A主机的ARP中查看是否存在B的IP地址
有,写入MAC帧
没有:
第一步、ARP进程向本局域网所有主机广播请求分组
        内容是:A的IP地址、MAC地;B的IP地址,请求B的MAC地址
第二步、所有主机收到请求
第三步、B主机收到分组,更新B的ARP映射表,同时向A单播信号:
        内容为:A的A的IP地址、MAC地;B的IP地址,B的MAC地址
第四步:A收到回复,更新映射表,封装mac帧,发送数据

映射地址的生存时间:凡超过生存时间的项目都删除

(2)ARP四种情况

1、发送方是主机,同一个网络
查ARP地址映射表
有,写入AMC帧
没有,广播请求分组

2、发送方是主机,不同网络
广播分组,找到该局域网内对应路由器(路由表)
找到路由器后,剩下的交给它处理
同时,路由器单播返回自己的MAC地址
主机更新ARP映射表

3、发送方是路由器,接收方是一个网络的主机
广播ARP分组,找到主机MAC地址
单播返回,写入MAC地址,发送
同时更新ARP映射表

4、发送方式路由器,接受方不同网络的主机
广播ARP分组,找到对应路由器
剩下工作由下一个路由器来做
单播返回,写入MAC地址,发送
同时更新ARP映射表

6、IP数据报的格式

(1)版本——4位

指明IP协议版本。(通信双方IP协议版本必须一致才能通信。)

(2)首部长度——4位

表示首部长度,1个单位表示4个字节。范围是0~15,首部长度范围为:0~60字节。

例如,首部长度为4时,首部长度为16,但是一般首部长度固定为20

(3)区分服务——8位

用于区分服务,判断是否有会员。没什么用处,不必理会

(4)总长度——16位

指明首部和数据长度之和,单位为字节。

因此数据报最大长度为:2^{16}-1=65535字节。

但是,数据链路层一般最大数据帧为1500字节。超过,就要分片。

分片,就要指明各个片之间的关系。

总长度就指明:分片后的数据报,其首部和数据的长度之和

(5)标识——16位

作用是:指明同属于一个数据报

每一个数据报都有标识。

当一个数据报需要分片时,该标识被复制到所有子分片中

最后有相同标识的数据分片重新组合,恢复原数据报

(6)标志——3位

指明分片情况,只有前两位有用。

低位:MF(more fragment),1表示后面还有分片;0表示我是最后一个分片

中间位:DF(don't fragment),表示不能分片,只有0才可以分片

(7)片漂移——13位

指明一个分片在该数据报的相对位置。

相对于数据起点,该分片从何处开始。片漂移以8个字节为单位。

假如某分片片漂移为100,100×8=800字节。

则说明该片要从数据段800个字节后开始。

(注意:数据被分片以后,还要加上20个首部长度进行组装)

(8)生存时间——8位

TTL(time to live)

指明数据报在网络中的寿命,在发送源设置

目的是防止数据报在网络中兜圈子

数据报每经过一个路由器,减去相应消耗时间(若时间小于1s,TTL减去1,取整)

当TTL为0,丢弃数据报

随着技术的发展,现在TTL不是秒数,而是跳数

没经过一个路由器,TTL-1,当TTL减为0,丢弃

生存时间占8位,TTL范围:1~255

(初始值不能设为0,否则都发不出去;因为为0说明不能再网络传播,会被直接丢弃)

如果TTL为1,则只能在本网络传输

(9)协议——8位

指明该IP数据报使用什么协议。方便交付上层

常用协议字段:

(10)首部检验和——16位

作用:仅仅检验首部

计算方法:

1、将首部字段分为多个16位子段

对发送方:对首部所有16位字段相加,和取反码,写入首部检验和

对接收方:对首部所有16位字段 和首部检验和 一起相加,和取反码

如果接收方结果为0,保留;否则丢弃

(11)源地址、目的地址——32位

发送主机、接收主机的IP地址

(12)可变部分——长度可变

用于拓展IP数据报的功能,实际没什么用,不必理会

上述所讲的是IP协议的第四个版本,故称为IPV4
IP协议还有三个协议:地址解析协议、网络控制报文协议、网络组管理协议:

协议名称简称英语全称功能描述主要用途
地址解析协议ARPAddress Resolution Protocol将网络层地址(IP地址)映射到链路层地址(MAC地址)。在以太网等网络中查找目标设备的MAC地址。
网络控制报文协议ICMPInternet Control Message Protocol用于发送控制消息和错误消息,帮助管理网络。例如,ping命令使用ICMP确认主机是否可达。
网络组管理协议IGMPInternet Group Management Protocol用于管理主机加入和离开多播组,支持多播通信。实现多播数据传输,常用于视频流和在线游戏等。

三、阅读本文章后,你需要具备的能力

1、会对网络进行划分、规划设计网络

2、会计算网络号

3、清晰IP数据报在整个网络的转发过程和细节

4、清晰在网络的传输中,IP数据报的格式的变化

5、清晰IP地址到MAC地址的地址解析ARP,以及四种情况

6、会检验首部

7、会计算网络号范围、主机号范围

8、会配置路由器的路由表

9、会对数据报进行分片

10、对IP数据报的各个功能结构要非常清晰

11、熟悉IP数据报格式的组成、长度、功能、实现

12、理解IP数据报和MAC帧的区别

13、IP地址和MAC地址的区别

14、如果进行路由聚合

等。

如果对上述的任何一个能力,你不知道,不清晰,不明白,请及时补习。

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

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

相关文章

进程间通信(命名管道 共享内存)

文章目录 命名管道原理命令创建命名管道函数创建命名管道 共享内存原理shmgetFIOK 代码应用:premsnattch 命名管道 用于两个毫无关系的进程间的通信。 原理 Linux文件的路径是多叉树,故文件的路径是唯一的。 让内核缓冲区不用刷新到磁盘中&#xff0c…

基于SSM+小程序的计算机实验室排课与查询管理系统(实验室2)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 1、管理员功能有个人中心,学生管理,教师管理,实验室信息管理,实验室预约管理,取消预约管理,实验课程管理&#xff0…

基于STM32的农业监测与管理系统设计思路介绍(代码示例)

一、项目概述 在全球农业现代化进程中,农业监测与管理系统的研发具有重要意义。本文介绍的基于STM32的农业监测与管理系统,旨在通过智能小车实现对农作物的环境监测、土壤检测等功能。该系统利用手势控制技术,农民可以通过简单的手势指令来操…

分布式架构搭建博客网站

目录 运行环境基础配置需求准备工作配置静态ip修改主机名及host映射开启防火墙时间同步配置免密ssh登录 环境搭建Server-Web端安装LNMP环境软件Server-NFS-DNS端上传博客软件Server-NFS-DNS端设置NFS共享Server-Web设置挂载远程共享目录nginx设置在数据库中创建数据库和用户重启…

基于Transformer的路径规划 - 第五篇 GPT生成策略_解码方法优化

上一篇:基于Transformer的路径规划 - 第四篇 GPT模型优化 在上一篇中,我尝试优化GPT路径生成模型,但没有成功。在随机生成的测试集上,路径规划成功率只有99%左右。而使用传统的路径规划算法,例如A*,路径规划…

【HarmonyOS】鸿蒙应用设置控件通用样式AttributeModifier, @Styles

【HarmonyOS】鸿蒙应用设置控件通用样式AttributeModifier, Styles 前言 在鸿蒙中UI开发经常需要对控件样式进行统一的封装,在API早前版本,一般是通过 Styles进行样式封装复用: Entry Component struct Index {build() {Column(…

[vulnhub]DC:7

https://www.vulnhub.com/entry/dc-7,356/ 端口扫描主机发现 探测存活主机,178是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-03 13:30 CST Nmap scan report for 192.168.75.1 Host is up (0.00037s l…

鸿蒙HarmonyOS应用开发者(基础+高级)认证

文章目录 鸿蒙HarmonyOS应用开发者(基础高级)认证👉1.HarmonyOS认证介绍1.1、HarmonyOS发展历程1.2、HarmonyOS NEXT 开发预览版1.3、ArkTS语言开发鸿蒙应用1.4、HarmonyOS应用开发者基础认证的核心内容1.5、HarmonyOS应用开发者高级认证的核心内容1.6、HarmonyOS应…

视频Qoe测量学习笔记(一)

目录 流媒体协议详解 RTSP:实时流式协议 RTCP:实时运输控制协议 RTP:实时运输协议 H.264 流媒体协议详解 RTSP:实时流式协议 由IETF MMusic小组开发,已成为互联网建议标准[RFC 2326]。RTSP本身并不传送数据&…

第三十三章 Vue路由进阶路由模块封装

目录 一、引言 二、完整代码 main.js index.js App.vue Find.vue My.vue 一、引言 在上一个章节中,我们将所有的路由配置都堆在main.js中来实现路径组件的路由,这样做的话非常不利于我们后期对项目的维护。因此正确的做法是将路由模块抽离出来&a…

用插值公式实现滚动进度条动画效果

我们在日常前端开发时在动画的选择上基本都是css,通过css的animation即可满足大部分的开发场景,如果遇到了特殊而比较不容易实现的效果就会考虑到用js来实现,而本次的主题,就是围绕用js来做一个比较不常见的特殊动画效果。 假设我…

【uni-app】创建自定义模板

1. 步骤 打开自定义模板文件夹 在此文件夹下创建模板文件(注意后缀名) 重新点击“新建页面” 即可看到新建的模板 2. 注意事项 创建的模板必须文件类型对应(vue模板就创建*.vue文件, uvue模板就创建*.uvue文件)

03哈希表算法/代码随想录

三、哈希表 有效的字母异位词 力扣242 这题是典型的哈希映射,只要将t存到哈希表中,key为t拆解的值,value为t中有过个key这样的值,然后在使用哈希表O(1)的时间复杂度判断 class Solution {public boolean …

下载安装COPT+如何在jupyter中使用(安装心得,windows,最新7.2版本)

目录 1.到杉树科技官网申请下载COPT 2.安装COPT&配置许可文件 3.在jupyter中使用COPT的python接口 最近看到一本和数学建模有关的新书:《数学建模与数学规划:方法、案例及编程实战》,作为数学建模老手,肯定要学习一下&…

【Linux】——操作系统-进程详解

大家好呀,我是残念,希望在你看完之后,能对你有所帮助,有什么不足请指正!共同学习交流哦 本文由:残念ing原创CSDN首发,如需要转载请通知 个人主页:残念ing-CSDN博客,欢迎各…

Excel:vba实现批量插入图片批注

实现的效果:实现的代码如下: Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Name As StringDim Comment As CommentDim folder As FileDialog 定义文件选择对话框 清…

HTML 语法规范——代码注释、缩进与格式、标签与属性、字符编码等

文章目录 一、代码注释1.1 使用注释的主要目的1.2 使用建议二、标签的使用2.1 开始标签和结束标签2.2 自闭合标签2.3 标签的嵌套2.4 标签的有效性三、属性四、缩进与格式4.1 一致的缩进4.2 元素单独占用一行4.3 嵌套元素的缩进4.4 避免冗长的行五、字符编码六、小结在开发 HTML…

闯关leetcode——242. Valid Anagram

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/valid-anagram/ 内容 Given two strings s and t, return true if t is an anagram of s, and false otherwise. Example 1: Input:s “anagram”, t “nagaram” Output:true Example 2: Inp…

无人机之远程指挥中心技术篇

一、核心功能 实时监控与控制: 通过高清视频流和其他传感器数据,指挥中心可以实时了解无人机的当前状态、位置和环境情况。操作人员可以在指挥中心对无人机进行精确的飞行控制,包括起飞、降落、悬停、移动等,确保无人机按照预定…

C++学习路线(数据库部分)二

类型 整形类型 整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。 类型名称后面的小括号…