计算机网络 网络层 2

IP协议:

Ip数据报的格式:


首部:分为固定部分 和 可变部分

固定部分是20B

版本:表明了是IPV4还是IPV6

首部长度:单位是 4B,表示的范围是(5~15)*4B

填充:全0,,让首部变成4B的整数倍

区分服务:表示期望获得那种类型的服务

总长度:首部+尾部的长度 (有16位)这里的单位是1B

标识:看后面

标志:看后面

片偏移:看后面
生存时间:IP分组的保质期,每每经过一个路由器就会-1(防止一个IP分组无用但耗性能)

协议:数据部分所使用的协议

首部检验和:检验首部

源地址和目的地址都是32位地址

可选字段:0~40B,用来支持安全检测,排错,测量等操作

最大传输单元(MTU):链路层数据帧的封装数据上限

以太网中的MTU最大是1500B

IP数据报的分组

因为传输的数据部分可能超过MTU的限额,所以会将数据进行分片

标识:同一个数据片使用的统一标识

标志:第二位和第三位有效

第二位 DF:1表示禁止分片,0表示允许分片

第三位MF:1表示后面还有分片,0表示这是最后一个分片/没有分片

片偏移:指出较长的分组分片之后某片在其中的相对位置,单位:8B(由此可知,每个分片,除了最后一个,都一定是8B的整数倍)

IPV4地址
目的:知道在哪个网络,要知道主机是哪个(在哪,叫什么)

Ip地址:是 IP 协议中用于标识网络中设备的地址编号

IPV4简介:

地址格式:32 位二进制数,为方便人类识别和使用,通常采用点分十进制表示法,即将 32 位的二进制数分成 4 个 8 位组,每个 8 位组用十进制数表示,范围是 0 - 255,组与组之间用’.’分隔,如 192.168.1.1。

地址数量:理论上约 43 亿个,但由于地址分配的不合理等因素,可用地址数量远低于此,这也促使了 IPv6 的诞生。

应用场景:目前仍广泛应用于互联网和局域网中,许多现有的网络设备、操作系统和应用程序都支持 IPv4。

IPV6简介:

地址格式:128 位二进制数,采用’:’分隔的十六进制表示法,如

2001:0db8:85a3:0000:0000:8a2e:0370:7334。为简化表示,可省略前导零,连续的零段还可用双冒号 “::” 表示,如 2001:db8:85a3::8a2e:370:7334 。

地址数量:拥有近乎无限的地址数量,能够满足未来物联网等大量设备接入网络的需求。

应用场景:随着互联网的发展,尤其是物联网、5G 等技术的推进,IPv6 的应用逐渐增多,一些新部署的网络基础设施开始优先支持 IPv6。

分类的IP地址

特殊IP地址

私有IP地址

网络类别

A中网络数-2 减去的是全0和127 ,主机数-2,减去的是全0和全1

B和C的网络数-1 ,减去的是全0, 主机数 -2 减去的是全0和全1

网络地址转换NAT:

网络地址转换NAT(NetworkAddress Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。

通过这个NAT路由器来实现内外的通信

NAT转换表:一个是在外网中使用的ip地址,一个是在专用网中的ip,当数据经过NAT,会将目的地址/源地址,端口号进行替换


因为分类IP地址的一些缺点:(1)ip地址空间利用率很低,(2)两级ip地址不灵活

子网划分:将<网络号,主机号>更细致的划分为<网络号,子网号,主机号>

但是对于外网,子网的划分是透明的

划分后的子网号能否全0,全1要看协议

子网掩码:主机部分的子网掩码全0,网络号部分全1

子网网络地址:ip地址二号子网掩码相与得到的地址

使用子网时的分组转发

NAT路由会

1.提取目的IP地址2.看本网络是否直接交付3.如果不能,就看是否是特定主机路由4.如果还不是,就检查是否转发,检测路由表中有无路径5.都没有就默认路由 0.0.0.0发给其他路由6.上述操作都没有找到,就丢弃,报告转发分组出错

无分类编码 (CIDR)

IP地址 <网络前缀,主机号>

特点:1,消除了传统的A类,B类,C类地址以及划分子网的概念

2,融合了子网地址和子网掩码.方便了子网划分

CIDR记法:ip+/+可变长的网络前缀

如:128.128.128.1/20

二进制 : 1000 0000 1000 0000 1000 0000 0000 0001(前20个事网络号,后面是主机号)

最小地址: 1000 0000 1000 0000 1000 0000 0000 0000(前20个是网络号,后面是主机号)

最大地址: 1000 0000 1000 0000 1000 1111 1111 1111(前20个是网络号,后面是主机号)

地址掩码: 1111 1111 1111 1111 1111 0000 0000 0000

构成超网:多个子网构成一个更大的子网,叫做超网/路由聚合

优化:将接口一致的网络合体,后面的主机号全0

比如 128.2.32.1/20,128.2.46.9/20 他们聚合后的网络地址是128.2.32.0/20

ARP协议:

是一种用于在局域网(LAN)中将 IP 地址映射到物理硬件地址(如 MAC 地址),从而实现在网络中通信的协议。

ARP 协议的主要功能

1.解析 IP 地址和 MAC 地址的映射关系:当一个设备需要通过 IP 地址与另一个设备通信时,它需要知道目标设备的 MAC 地址。ARP 协议允许设备发送 ARP 请求消息,以查询目标 IP 地址对应的 MAC 地址。

2.缓存 IP 地址和 MAC 地址的映射关系:设备在进行 ARP 解析时,会将查询到的 IP 地址和 MAC 地址的映射关系存储在本地的 ARP 缓存中。在后续的通信中,设备可以直接使用缓存中的映射关系,避免发送新的 ARP 请求。

3.更新映射关系:ARP 协议支持动态更新映射关系。当设备在网络中发现 IP 地址和 MAC 地址发生变化时,它会发送 ARP 广播消息来通知其他设备更新相应的映射关系。

ARP 协议的工作原理:

1.地址查询:当一台设备(发送方)需要与另一台设备(目标方)进行通信时,它首先检查自己的 ARP 缓存中是否存在目标设备 IP 地址对应的 MAC 地址。如果存在,就在 ARP 缓存中查出其对应的硬件地址,再把这个硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址。如果不存在,则需要进行地址查询

2.ARP 请求广播:如果在 ARP 缓存中无法查到目标设备的 IP 地址,发送方设备则创建一个 ARP 请求报文,其中包含自己的 MAC 地址IP 地址目标设备的 IP 地址。然后,发送方设备将该 ARP 请求报文广播到局域网上的所有设备

3.目标设备响应:局域网上的所有主机都会接收到 ARP 请求报文,但只有目标设备会响应。目标设备接收到 ARP 请求报文后,会检查自己的 IP 地址是否与请求报文中的目标 IP 地址相匹配。如果匹配,则目标设备创建一个 ARP 响应(ARP reply)报文,其中包含自己的 MAC 地址和 IP 地址,并将该响应报文发送回发送方设备

4.地址缓存更新:发送方设备收到目标设备的 ARP 响应报文后,将目标设备的 IP 地址和 MAC 地址映射关系添加到自己的 ARP 缓存中。这样,在以后与目标设备的通信中,发送方设备就可以直接从 ARP 缓存中获取目标设备的 MAC 地址,而无需再次发送 ARP 请求。

DHCP协议:

是一种用于在网络中自动分配 IP 地址等网络配置参数的应用层协议。

DHCP 协议的基本功能

1,自动分配 IP 地址:在一个网络中,特别是大型网络,手动为每台设备配置 IP 地址是一项繁琐且容易出错的任务。DHCP 可以自动为网络中的设备(如计算机、打印机、智能手机等)分配 IP 地址,减少了网络管理员的工作量,也避免了因手动配置错误而导致的网络问题。

2,分配其他网络配置参数:除了 IP 地址,DHCP 还可以分配子网掩码、默认网关、DNS(域名系统)服务器地址等网络配置参数。这些参数对于设备正确地在网络中进行通信至关重要。子网掩码用于确定设备所在的网络范围;默认网关是设备访问其他网络的出口;DNS 服务器地址则用于将域名转换为 IP 地址,使得用户可以通过域名访问网站等网络资源。

DHCP 协议的工作原理

1,(发现阶段):

当一台设备(DHCP 客户端)首次接入网络并需要获取 IP 地址等配置信息时,它会发送一个 DHCP Discover 广播消息。因为此时设备还没有 IP 地址,所以采用广播方式,以确保网络中的 DHCP 服务器能够接收到请求。这个消息包含了一些客户端的基本信息,如客户端的 MAC地址,用于唯一标识设备,使得服务器能够针对该设备进行配置。

2,(提供阶段):

网络中的 DHCP 服务器接收到 广播消息后,会从自己的 IP 地址池中选择一个可用的 IP 地址,并构建一个 DHCP Offer 消息。这个消息包含了为客户端提供的 IP 地址、子网掩码、默认网关、DNS 服务器地址等配置信息。

然后,DHCP 服务器将 DHCP Offer 消息以广播的形式发送回网络,因为客户端还没有 IP 地址,无法接收单播消息。此时,可能有多个 DHCP 服务器收到了客户端的 Discover 消息并都发送了 Offer 消息,客户端会选择其中一个 Offer。

3,(请求阶段);

客户端接收到多个 DHCP Offer 消息后,会选择其中一个(通常是最先接收到的),然后向该 DHCP 服务器发送一个 DHCP Request 消息。这个消息告诉服务器,客户端接受了它提供的 IP 地址和其他配置参数。

同时,这个消息也是广播形式,目的是通知其他 DHCP 服务器,客户端已经选择了某个服务器提供的配置,其他服务器可以将之前为该客户端准备的 IP 地址等资源收回

4,(确认阶段)

DHCP 服务器接收到客户端的 DHCP Request 消息后,会发送一个 DHCP Acknowledge 消息作为回应。这个消息确认客户端可以使用之前提供的 IP 地址和其他配置参数,并且服务器会将该 IP 地址标记为已分配状态,避免重复分配。

此时,客户端接收到 DHCP Acknowledge 消息后,就可以使用分配到的 IP 地址和其他配置参数在网络中进行通信了。

DHCP 协议的优点:

1,高效管理 IP 资源:通过自动分配回收 IP 地址提高了 IP 地址的利用率,尤其是在动态变化的网络环境中,如企业网络中员工设备的频繁接入和离开,以及公共场所的 Wi - Fi 网络等。

2,减少配置错误:避免了因手动配置 IP 地址等参数而可能出现的错误,如 IP 地址冲突、子网掩码设置错误等,从而提高了网络的稳定性和可靠性。

3,易于网络扩展:当网络中有新设备加入时,无需人工干预即可自动完成配置,方便了网络的扩展和维护。

ICMP协议:

互联网控制消息协议,是网络层的一个重要协议。它主要用于在 IP 主机、路由器之间传递控制消息,这些控制消息对于诊断网络问题、测试网络连通性等方面非常重要。ICMP 协议是 IP 协议的补充,它使用 IP 协议进行传输,但是 ICMP 消息是封装在 IP 数据报中的。

ICMP的报文格式:

第一行(4个字节)的内容是一样的

5个差错报文

1,终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。

2,源点抑制:(拥塞丢数据时,才会用到)当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报发送速率慢一点。

3,时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发

送时间超过报文

4,参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

5,改变路由:路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

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

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

相关文章

JAVA-二叉树的四种遍历

目录 一、二叉树的存储 二、二叉树遍历的概念 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 三、概念面试题 四、代码实现 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 五、其他写法(非递归) 1.非递归前序遍历 2.非递归中序遍历 3.非递归后续遍历 一、二叉树…

Spring FactoryBean到仿照mybatis @Mapper的实现

目录 FactoryBean原理FactoryBean例子org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean mybatis mapper bean的手动实现思考复习下Jdbc传统sql查询做法Mapper接口实现思路复习批量注册beanDefinition: ConfigurationClassPostProcessor自定义实现Mapp…

【Go】Go数据类型详解—数组与切片

1. 前言 今天需要学习的是Go语言当中的数组与切片数据类型。很多编程语言当中都有数组这样的数据类型&#xff0c;Go当中的切片类型本质上也是对 数组的引用。但是在了解如何定义使用数组与切片之前&#xff0c;我们需要思考为什么要引入数组这样的数据结构。 1.1 为什么需要…

flutter Get GetMiddleware 中间件不起作用问题

当使用 get: ^5.0.0-release-candidate-9.2.1最新版本时&#xff0c;中间件GetMiddleware各种教程都是让我们在redirect中实现&#xff0c;比如&#xff1a; overrideRouteSettings? redirect(String? route) {return RouteSettings(name: "/companyAuthIndexPage"…

【Idea启动项目报错NegativeArraySizeException】

项目场景&#xff1a; Idea启动项目报错&#xff08;打包不报错&#xff09;&#xff0c;项目在服务器部署运行没有问题&#xff0c;尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…

微信小程序:播放音频

在小程序开发中&#xff0c;音频播放是一个重要的功能。本文将详细介绍小程序音频播放的相关知识点&#xff0c;帮助开发者更好地掌握小程序音频播放的实现方法。 一、小程序音频播放的基本流程 在小程序中&#xff0c;音频播放的基本流程如下&#xff1a; 获取音频数据&#…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API &#xff0c;这个是大模型的接口。配置好了之后&#xff0c;就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台&#xff0c;**默认账号…

RocketMQ 学习笔记01

一、MQ简介 1. 什么是MQ&#xff1f; MQ&#xff08;Message Queue&#xff0c;消息队列&#xff09; 是一种在分布式系统中用于实现进程间通信和数据传输的中间件。它通过在不同进程或应用程序之间传递消息&#xff0c;实现数据的异步处理、解耦和削峰填谷等功能。MQ广泛应用…

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例

梁山派入门指南3——串口使用详解&#xff0c;包括串口发送数据、重定向、中断接收不定长数据、DMA串口接收不定长数据&#xff0c;以及对应的bsp文件和使用示例 1. 串口发送数据1.1 串口简介1.2 梁山派上的串口开发1.3 bsp_uart文件&#xff08;只发送不接收&#xff0c;兼容串…

Linux和Docker常用终端命令:保姆级图文详解

文章目录 前言1、Docker 常用命令1.1、镜像管理1.2、容器管理1.3、网络管理1.4、数据卷管理1.5、监控和性能管理 2、Linux 常用命令分类2.1、文件和目录管理2.2、用户管理2.3、系统监控和性能2.4、软件包管理2.5、网络管理 前言 亲爱的家人们&#xff0c;创作很不容易&#xf…

智能科技与共情能力加持,哈曼重新定义驾乘体验

2025年1月6日&#xff0c;拉斯维加斯&#xff0c;2025年国际消费电子展——想象一下&#xff0c;当您步入一辆汽车&#xff0c;它不仅能响应您的指令&#xff0c;更能理解您的需求、适应您的偏好&#xff0c;并为您创造一个独特且专属的交互环境。作为汽车科技领域的知名企业和…

关于2025年智能化招聘管理系统平台发展趋势

2025年&#xff0c;招聘管理领域正站在变革的十字路口&#xff0c;全新的技术浪潮与不断变化的职场生态相互碰撞&#xff0c;促使招聘管理系统成为重塑企业人才战略的关键力量。智能化招聘管理系统平台在这一背景下迅速崛起&#xff0c;其发展趋势不仅影响企业的招聘效率与质量…

机器视觉5-全连接神经网络

机器视觉5-全连接神经网络1 图像表示多层感知器全连接神经网络一、两层全连接网络表达式二、三层全连接网络表达式三、关于非线性操作的说明四、全连接神经网络的映射原理 全连接神经网络的权值一、线性分类器二、两层全连接网络三、总结 全连接神经网络线性不可分全连接神经网…

解锁转型密码:不同方向的技能与素质修炼手册

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 解锁…

ChatGPT提示词合集(国内大模型可参考使用)

行为迅速的Linux终端我想让你充当 linux 终端。我将输入命令&#xff0c;您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出&#xff0c;而不是其他任何内容。不要写解释。除非我指示您这样做&#xff0c;否则不要键入命令。当我需要用英语告诉你一些事情…

第三十八章 Spring之假如让你来写MVC——适配器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

深度剖析RabbitMQ:从基础组件到管理页面详解

文章目录 一、简介二、Overview2.1 Overview->Totals2.2 Overview->Nodesbroker的属性2.3 Overview->Churn statistics2.4 Overview->Ports and contexts2.5 Overview->Export definitions2.6 Overview->Import definitions 三、Connections连接的属性 四、C…

使用 Python 编写一个简单的聊天机器人

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

Unity 自定义批量打包工具

打包配置项 using UnityEngine; using System.Collections.Generic;namespace MYTOOL.Build {[System.Flags]public enum VersionOptions{None 0,Major 1,Minor 4,Build 8,Revision 0x10,}/// <summary>/// 批量打包配置文件/// </summary>[CreateAssetMenu]…

JAVA实现五子棋小游戏(附源码)

文章目录 一、设计来源捡金币闯关小游戏讲解1.1 主界面1.2 黑棋胜利界面1.3 白棋胜利界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/145161039 JA…