四、网络层(三)IPv4

news2025/1/16 1:59:03

目录

3.1  IPv4地址

3.1.1分类编址

3.1.2子网划分与子网掩码

3.1.3无分类编址CIDR

3.1.4网络地址转换(NAT)

3.2   IPv4分组

3.2.1   IP分组(IP数据报)的格式

3.2.2   IP数据报分片 

3.3  地址解析协议(ARP)

3.4  动态主机配置协议(DHCP)

3.5  网际控制报文协议(ICMP)


3.1  IPv4地址

IPv4即现在普遍使用的IP协议(版本4)。IP协议定义数据传送的基本单元:IP分组及其确切的数据格式。IP协议也包括一套规则,指明分组如何处理、错误怎样控制。特别是IP协议还包含非可靠投递的思想,以及与此关联的分组路由选择的思想。  

IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。

3.1.1分类编址

  • 只有A、B、C类地址可分配给网络中的主机或路由器的各接口。
  • 主机号为全“0”的地址是网络地址,不能分配给主机或路由器的各接口。
  • 主机号为全“1”的地址是广播地址,不能分配给主机或路由器的各接口。 
  • A类地址中网络号为0的地址为保留地址;网络号为127的地址为环回自检地址 
  • 255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,等效为本网络的广播地址(各路由器均不转发)。

 

 IP地址有以下重要特点(部分)

  1. IP地址是一种分等级的地址结构。分等级的好处是:IP地址管理机构在分配IP地址时只分配网络号,而主机号则由得到该网络号的组织自行分配,方便了IP地址的管理;路由器仅根据目的主机所连接的网络号来转发分组,从而减少了路由表所占的存储空间
  2. IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,该主机就必须同时具有两个相应的IP地址,其网络号是不同的,即这台主机属于两个逻辑网络。
  3. 路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址。

3.1.2子网划分与子网掩码

 两级IP地址的缺点:

  • IP地址空间的利用率有时很低
  • 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏。
  • 两级的IP地址不够灵活

在IP地址中增加一个“子网号字段”使两级IP地址变成了三级IP地址。这种方法为子网划分。子网划分已成为因特网的正式标准协议。

 子网划分的基本思路如下:

  1. 子网划分纯属一个组织内部的事情。该组织对外仍然表现为没有划分子网的网络
  2. 从主机号借用若干位作为子网号,当然后主机号也就相应减少了相同的位。三级IP地址的结构为:IP地址={<网络号><子网号><主机号>}。
  3. 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是先根据IP数据报的目的网络号找到连接到本单位网络上的路由器;然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网;最后把IP数据报直接交付给目的主机。

划分子网会减少主机的数量(占用了部分主机号),但不增加网络的数量(对外仍表现为没有划分子网),只增加子网的数量,减少广播域的大小。 

子网掩码 

为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。 

默认的子网掩码是指在未划分子网时使用的子网掩码。 

3.1.3无分类编址CIDR

 无分类域间路由CIDR是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。

CIDR使用“网络前缀”的概念代替子网络的概念,网络前缀的位数不是固定的,可以任意选取,CIDR的记法为:

IP::={<网络前缀>,<主机号>}   或  IP地址/网络前缀所占比特数 (如128.14.32.5/20)。

将网络前缀都相同的连续IP地址组成“CIDR地址块”一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息的交换,从而提供网络性能。

最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀最长,其地址块最小,路由就越具体。

CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索。

3.1.4网络地址转换(NAT)

IPv4地址空间有限即将耗尽(实际上2011年已经分配完毕)。网络地址转换NAT用来缓解IPv4地址空间不足的问题。

NAT能使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。

这种采用私有IP地址的互连网络称为专用互联网本地互联网。私有IP地址也可称可重用地址

在专用网络连接到因特网的路由器上安装NAT软件(变为NAT路由器),它至少要有一个有效的外部全球地址IP。这样,所有使用内部专用地址的主机在和外部因特网通信时,都要在NAT路由器上将其内部专用地址转换成外部全球地址IP。 

 普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号。

3.2   IPv4分组

3.2.1   IP分组(IP数据报)的格式

注:不需记忆IP数据报的首部,只需熟悉IP数据报首部各个字段的意义和功能。 TCP、UDP首部也是如此。

  • 版本:指IP协议的版本,目前广泛使用的版本号为4(即IPv4)
  • 首部长度:占4bit。以4B为单位,4位二进制数最大为15,因此首部长度最大为60B(15×4B)。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。
  • 总长度:占16bit。首部和数据部分的总长度,单位为1B,因此数据报的最大长度为65535B。以太网帧的最大传送单元(MTU)为1500B,因此当一个IP数据报封装成帧时,数据报的总长度(首部加数据)一定不能超过下面的数据链路层的MTU值。

  • 标识:占16bit。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是“序号”(因为IP是无连接的数据报服务) 。当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报分片都复制一次标识号,以便能正确重装成原来的数据报。
  • 标志:占3bit。标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示这是最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片
  • 片偏移:占13bit。它指出较长的数据报在被分片后,某片在原数据报中的相对位置。片偏移以8B为偏移单位。除最后一个分片外,每个分片(分的是数据载荷部分)的长度一定是8B的整数倍。
  • 生存时间(TTL):标识数据报在网络中可通过的路由器数的最大值,以确保数据报不会永远在网络中循环。路由器在转发数据报之前,线把TTL减1。若TTL被减为0,则该数据报必须丢弃。
  • 协议:占8bit。指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理,如TCP、UDP等,其中值为6表示TCP,值为17表示UDP。
  • 首部校验和:占16bit,首部校验和只校验分组的首部,而不校验数据部分。
  • 源地址字段:占32bit,标识发送方的IP地址。
  • 目的地址字段:占32bit,标识接收方的IP地址。
  • 可选字段:长度从1B到40B不等,用来支持排错、测量以及完全措施等功能。注意当可选字段不为4B的整数倍时,需要填充字段为全0进行填充,因为首部长度是以4B为单位的。

注意:标志(凌云壮志,标志中DF=0允许分片)和标识加以区分,协议和版本加以区分。

3.2.2   IP数据报分片 

3.3  地址解析协议(ARP)

  • 在数据包的传送过程中,数据包的源IP地址和目的IP地址保持不变。
  • 在数据包的传送过程中,数据包的源MAC地址和目的MAC地址逐链路(或逐网络)改变。  

如果仅使用MAC地址进行通信,则会出现以下主要问题:

  • 如果仅使用MAC地址进行通信,因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址。
  • 如果仅使用MAC地址进行通信手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源。
  • 如果仅使用MAC地址进行通信包含海量MAC地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延。

 

故因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的MAC地址。

查表转发的结果可以指明IP数据报中下一跳路由器的IP地址,但无法指明该IP地址所对应的MAC地址。因此,在数据链路层封装该IP数据报成为帧时,帧首部中的目的MAC地址字段就无法填写,该问题需要使用网际层中的地址解析协议ARP来解决。 

每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。使用ARP来动态维护此ARP表。

从IP地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为数据链路层所需要的MAC地址。

3.4  动态主机配置协议(DHCP)

常用于给主机动态地分配IP地址,它提供了即插即用的联网机制。是应用层协议,放在应用层介绍。

3.5  网际控制报文协议(ICMP)

为了更有效地转发IP数据报以及提高IP数据报交付成功的机会,TCP/IP体系结构的网际层使用了网际控制报文(Internet Control Message Protocol,ICMP)。

主机或路由器使用ICMP来发送差错报告报文询问报文。ICMP报文被封装在IP数据报中发送。

ICMP差错报告报文:用于目标主机或到目标主机路径上的路由器先源主机报告差错和异常情况。

  • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
  • 时间超过:当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
  • 参数问题:当路由器或目的主机收到的数据报首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  • 改变路径(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不应发送ICMP差错报告报文的几种情况

  • 对ICMP差错报告报文不再发送ICMP差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
  • 对具有组播地址的数据报都不发送ICMP差错报告报文
  • 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文

ICMP询问报文有4种类型

  • 回送请求和回答报文时间戳请求和回答报文。(这两种常用)
  • 掩码地址请求和回答报文路由器询问和通告报文

ICMP常见应用

分组网间探测PING(用来测试两台主机之间的连通性):使用了ICMP回送请求和回答报文(询问报文)
Traceroute/Tracert(用来跟踪分组经过的路由):使用了ICMP时间超过报文(差错报文)

注意:PING工作在应用层,它直接使用网络层的ICMP,而未使用传输层的TCP或UDP。
而Traceroute/Tracert工作在网络层。

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

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

相关文章

计讯物联二次供水水池泵站监测方案,从根本上保障居民饮用水安全

水质污染、设施故障率高、供水压力、安防缺失、故障反馈周期长等城市高楼大厦高层供水问题层出不穷&#xff0c;给二次供水安全带来隐患和威胁。为确保高层住宅安全稳定地进行二次供水&#xff0c;计讯物联利用新一代物联网技术、信息技术、云计算、大数据、数字孪生技术等先进…

ESP32中micro-ROS与ROS2通信(点亮esp32指示灯)

前言 micro-ROS&#xff0c;是基于ROS2进行优化的一套轻量级ROS系统&#xff0c;它提供了完全部署的ROS 2生态系统的大多数吸引人的工具和功能&#xff0c;并具有入式和低资源设备的卓越能力&#xff0c;可以运行在MCU硬件平台。 传统上&#xff0c;即使机器人包含许多ROS&am…

视频号直播间首次突破1万人

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 12月21直播结束后&#xff0c;看了下直播数据&#xff0c;竟然有100多人在线时长达到了1小时以上。看来直播间用户的粘性越来越强了&#xff0c;固定用户越来越多。个人做直播已经2年了&#xff0c…

聚观早报 | 马斯克或将卸任推特CEO;小米内部人士回应年底裁员

今日要闻&#xff1a;马斯克或将卸任推特CEO&#xff1b;小米内部人士回应年底裁员&#xff1b;微软或将于明年收购Netflix&#xff1b;奥迪正逐步淘汰燃油车&#xff1b;支付宝开通健康防疫专区马斯克或将卸任推特CEO 自今年 10 月份入主推特以来&#xff0c;马斯克一系列大刀…

[洛谷]【深基16.例3】二叉树深度

一、题目描述 题目描述 有一个 n(n≤106)n(n \le 10^6)n(n≤106) 个结点的二叉树。给出每个结点的两个子结点编号&#xff08;均不超过 nnn&#xff09;&#xff0c;建立一棵二叉树&#xff08;根节点的编号为 111&#xff09;&#xff0c;如果是叶子结点&#xff0c;则输入 …

实测 | 海纳百川,华为OceanStor Pacific分布式存储为多元算力应用带来更优选择...

被称为开眼看世界的林则徐&#xff0c;在自己的书房中写了这样一副对联&#xff0c;以做自勉&#xff1a;海纳百川&#xff0c;有容乃大&#xff0c;壁立千仞&#xff0c;无欲则刚。包容的胸怀是我们做成很多事情的根基&#xff0c;也是一项产业战略、科技事业发展的关键。近几…

数据开源 | Magic Data开源基于ChatGPT的可扩展的对话数据集

在过去的一月里&#xff0c;人工智能领域中最火的话题莫过"ChatGPT"。ChatGPT是OpenAI于11月30日发布最新作品聊天机器人&#xff0c;开放公众免费测试。聊天机器人是一种软件应用程序&#xff0c;根据用户的提问做出回应、模仿人类的对话方式。目前&#xff0c;Chat…

做好程序中的axios错误提示

今天外包组的项目客户反馈老是出错&#xff0c;一看页面卡在加载数据过程中&#xff0c;前后台分离之后&#xff0c;页面变得很奇怪&#xff0c;脸面都出来了&#xff0c;就是没有具体值。 初级程序员在很长一段时间要经历一个升级过程&#xff0c;写的程序首先是写画面&#…

散户如何进行开展量化股票交易的?

散户如何进行开展量化股票交易的&#xff1f;也就是投资者交易的条件&#xff0c;达到了投资者设定的条件时候&#xff0c;系统接口就会自动交易&#xff0c;下面来看看具体的流程&#xff1a; 依据个股的历史记录&#xff0c;进行多因子选股&#xff0c;比如&#xff0c;把市…

Rasa 基于知识库的问答 音乐百科机器人

文章目录1. 使用 ActionQueryKnowledgeBase创建知识库NLU数据2. 音乐机器人nlu.ymlstories.ymlrules.ymldomain.ymlconfig.ymlendpoints.ymldata.json自定义动作 actions.py测试使用Neo4jlearn from https://github.com/Chinese-NLP-book/rasa_chinese_book_code 机器人返回了…

从“小螺栓血案”谈装配体模型连接螺栓6个正确的处理方法

经调查发现&#xff1a;“江苏启安建设工程有限公司提供了支吊架膨胀螺栓计算书&#xff0c;但计算书上无企业相关人员签字&#xff0c;未经监理单位审核同意&#xff0c;未报施工总包单位&#xff0c;未经设计单位审定&#xff1b;计算书认为支吊架应采用直径为12mm 的膨胀螺栓…

成为全栈程序员太难了?这个低代码高效率的报表工具绝对不能错过

现在程序员有个很奇怪的归宿&#xff0c;就是都在主动或被动地成为全栈程序员。前端被要求写后端的代码&#xff0c;后端被要求能看懂前端&#xff0c;美名其曰加速成长或为老板省钱&#xff01; 但一个人能做到全栈真的很难&#xff01;就拿报表开发而言&#xff0c;学习整个…

朴素贝叶斯

概要 前文介绍了贝叶斯公式基础以及在统计领域的基本应用贝叶斯基础_zhanglehes的博客-CSDN博客&#xff0c;本文将介绍它的一种新的转换形式&#xff0c;以及在机器分类领域的应用。 分类的数学描述 朴素贝叶斯公式推理 贝叶斯公式 在分类领域&#xff0c;将其改写如下 我们…

在conda虚拟环境中安装OpenCv并在pycharm中使用

目录 一. 在下面的网站中下载OpenCV文件 二. 在虚拟环境中使用pip安装该文件 三、官网下载OpenCV源代码&#xff08;后续使用&#xff09; 四、pycharm中打开该虚拟环境 五、安装numpy和matplotlib 六、pycharm找不到cv2模块解决&#xff1a; 七、在pyhcharm中使用cv不自…

在服务器安装jupyter并在本地访问

一、安装 1.1安装jupyter notebook pip install jupyter1.2安装jupyter lab pip install jupyterlab # 中文界面包 pip install jupyterlab-language-pack-zh-CN二、本地使用 我们在远程登录Linux服务器时&#xff0c;经常希望在本地浏览器端打开jupyter notebook&#xff…

需求的收集,筛选和排序

对需求的把握是否准确&#xff0c;很大程度上决定了产品的成与败&#xff0c;需求分析对于产品经理是必须要掌握的技能&#xff0c;接下来聊下需求收集的目标和方式。 一、收集渠道&#xff1a; 1、用户反馈&#xff1a; 用户提出的反馈有可能也是我们没有意识到的问题&#…

SMT工厂及PCB工程师的福音!可视化BOM交互焊接工具来了

目前电子产品已经渗透到我们生活的各个角落&#xff0c;其产品涵盖通信、医疗、计算机及周边视听产品、玩具、家用电器、军工用品等。关于电子产品的PCBA焊接&#xff0c;在试样阶段一般采用手工焊接。手工焊接的好处是成本低&#xff0c;一把电络铁就搞定了&#xff0c;如果样…

记一次简单的白加黑测试

前一阵子成了小洋人&#xff0c;所以很长的时间也没更新了&#xff0c;今天更一篇PHP代码审计的吧&#xff0c;此次分享的内容十分的简单&#xff0c;大家简单的看看即可 命令注入 -1 从上述代码&#xff0c;我们可以看出来&#xff0c;$ip变量接收过来之后通过合并运算符(??…

【OpenCV-Python】教程:7-3 理解KMeans

OpenCV Python KMeans 的理解 【目标】 理解KMeans聚类的基础概念KMeans是如何工作的&#xff0c; 【理论】 Tshirt尺寸问题 有个公司&#xff0c;打算投放一批T-shirt到市场上售卖&#xff0c;但是不知道人们需要什么样的尺寸&#xff0c;而且工厂也不会制作所有的尺寸样…

联想C2E摄像头的折腾

背景 老苏的巨峰摄像头坏了&#xff0c;一直也没在意&#xff0c;因为监控也不是什么刚需。朋友送的&#xff0c;比较古老&#xff0c;不像现在的家用监控摄像头&#xff0c;都有 app&#xff0c;而这台巨峰摄像头不光不支持 app&#xff0c;后台设置还只能用 IE&#xff0c;因…