IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 第四章.网络层:4.2网际协议IP -> 正文阅读

[网络协议]第四章.网络层:4.2网际协议IP


与网际协议IPv4配套的3个协议:

  1. 地解析协议ARP(Address Resolution ProtocoI)
  2. 网际控制报文协议ICMP(Internet ControlMessage Protocol)
  3. 网际组管理协议IGMP(Internet GroupManagement Protocol)

image-20211125084452232

4.2.1 虚拟互联网络

实现网络互连、互通时需要解决许多问题,如以下“不同":

寻址方案、最大分组长度、网络接入机制、超时控制、差错恢复方法、状态报告方法、路由选择技术、用户接入控制、服务、管理与控制方式……

如何将异构的网络互相连接起来?

1. 实现异构网络的互连互通方法,哪种好?

image-20211125084737737

2.使用中间设备进行互连

image-20211125084811235

3. 使用转发器或网桥不称为网络互连

转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络。

image-20211125085013352

4. 网络互连使用路由器

image-20211125085101468

5. 互连网络与虚拟互连网络

image-20211125085204727

6. IP网的意义

  • 当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。
  • 如果在这种覆盖全球的IP网的上层使用TCP协议,那么是现在的互联网(Internet)。

image-20211125085456179

7. 分组传输路径

image-20211125085529642

不需要经过任何路由器的是直接交付,反之为间接交付。

4.2.2 IP地址

  • 在TCP/IP体系中,IP地址是一个最基本的概念。
  • 没有IP地址,就无法和网上的其他设备进行通信。
  • 本部分重点:
    1. IP地址及其表示方法
    2. 分类的IP地址
    3. 无分类编址CIDR
    4. IP地址的特点

1. IP地址及其表示方法

image-20211125090009895

互联网上的每台主机(或路由器)的每个接口分配一个在全世界唯一的IP地址。 由互联网名字和数字分配机构进行分配。

点分十进制记法举例:

image-20211125090134984

2. IP地址采用2级结构

两个字段:网络号和主机号。

image-20211125090445707

IP地址在整个互联网范围内是唯一的。 IP地址指明了连接到某个网络上的一个主机。

3. 分类的IP地址

image-20211125090701608

单播地址:一对一通信

多播地址:一对多通信

  • A类地址的网络号字段net-id为1字节,主机号字段host-id为3字节。
  • B类地址的网络号字段net-id为2字节,主机号字段host-id为2字节。
  • C类地址的网络号字段net-id为3字节,主机号字段host-id为1字节。
  • D类地址是多播地址
  • E类地址保留为今后使用

各类IP地址的指派范围:

image-20211125091212286

注意:指派时要扣除全0和全1的主机号。

一般不使用的特殊的IP地址:

image-20211125091413485

A类地址的网络号字段占1个字节,只有7位可供使用(该字段的第一位已固定为0)。 但要注意,第一,网络号为全0的IP地址有特殊的用途,它表示“本网络";第二,网络号,为127(即01111111)保留作为本地软件环回测试本主机的进程之间的通信之用。若主机发送一个目的地址为环回地址(例如127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络。因此A类地址可指派的网络号是126个(即27-2)。

A类地址的主机号占3个字节。但全0和全1的主机号一般不指派。全0的主机号表示该IP地址是“本主机”所连接到的单个网络地址(例如,若主机的IP地址为5.6.7.8,则该主机所在的网络的网络号是5,而该网络的网络地址就是5.0.0.0)。全1表示“所有的”,因此全1的主机号字段表示该网络上的所有主机。因此每一个A类网络中的最大主机数是224-2,即16777214。

B类地址的网络号字段有2个字节。因此B类地址可指派的网络数为214,即16384。B类地址的每一个网络上的最大主机数是216-2,即65534。这里需要减2是因为要扣除全0全1的主机号。

C类地址有3个字节的网络号字段。因此C类地址可指派的网络总数是221,即 2097152。每一个C类地址的最大主机数是28-2,即254。

4. 分类的IP地址的优点和缺点

优点:

  1. 管理简单
  2. 使用方便
  3. 转发分组迅速
  4. 划分子网,灵活地使用

缺点:

  1. 设计上不合理
  2. 大地址块,浪费地址资源
  3. 即使采用划分子网的方法,也无法解决IP地址枯竭的问题

补充:划分子网的方法,即在IP地址的主机号中,插入一个子网号,把两级的IP地址变为三级的IP地址。

5. 无分类编址

  • CIDR:无分类域间路由选择。
  • 消除了传统的A类、B类和C类地址以及划分子网的概念,可以更加有效地分配IPv4的地址空间,但无法解决IP地址枯竭的问题。

<1>网络前缀

2级结构,两个字段:网络前缀和主机号。

image-20211127082902885

网络前缀的位数n是多少?

最大的区别: 前缀的位数n不固定,可以在0~32之间选取任意值。

CIDR记法:

斜线记法:a.b.c.d/n:二进制IP地址的前n位是网络前缀。 例如:128.4.35.7/20:前20位是网络前缀。

<2>地址块

  • CIDR把网络前缀都相同的所有连续的IP地址组成一个CIDR地址块。
  • 一个CIDR地址块包含的IP地址数目,取决于网络前缀的位数。

image-20211127083337458

注意:

image-20211127084012585

我们尝试用地址块中的最小地址和网络前缀的位数指明一个地址块。也可以用二进制代码(网络前缀加 *)简要地表示该地址块。

<3>地址掩码

  • 又称为子网掩码。
  • 位数:32位。
  • 目的:让机器从IP地址迅速算出网络地址。
  • 由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。

image-20211127084907106

默认地址掩码:

image-20211127085029799

网络地址=(二进制的IP地址)AND(地址掩码):

image-20211127085630926

image-20211127085959649

由上面的运算结果可以知道,IP地址128.14.35.7/20所在的网络地址是128.14.32.0/20。

常用的CIDR地址块:

image-20211127090207134

构造超网:

  • 每一个CIDR地址块中的地址数一定是2的整数次幂。
  • 除最后几行外,CIDR地址块都包含了多个C类地址(是一个C类地址的2n倍,n是整数)
  • 因此在文献中有时称CIDR编址为“构造超网"。

image-20211127090421663

三个特殊的CIDR地址块:

image-20211127090515536

路由聚合:

image-20211127090641443

CIDR地址块划分举例:

image-20211127091155291

这个ISP共有64个C类网络。如果不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的转发表中,需要有64行。采用地址聚合后,转发表中只需要用1行来指出到206.0.64.0/18地址块的下一跳。 在ISP内的路由器的转发表中,也仅需用206.0.68.0/22这1个顶目,就能把外部发送到这个大学各系的所有分组,发到大学的路由器。

1. IP地址的特点

  1. 每个IP地址都由网络前缀和主机号两部分组成。

    IP地址是一种分等级的地址结构。

    • 方便了IP地址的分配和管理。
    • 实现路由聚合,减小了转发表所占的存储空间,以及查找转发表的时间。
  2. IP地址是标志一台主机(或路由器) 和一条链路的接口。

    • 当一台主机同时连接到两个网络上时, 该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。

    • 一个路由器至少应当连接到两个网络, 因此一个路由器至少应当有两个不同的IP地址。

  3. 转发器或交换机连接起来的若干个局域网仍为一个网络。

    • 按照互联网的观点,一个网络(或子网)是指具有相同网络前缀的主机的集合。
    • 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
    • 具有不同网络号的局域网必须使用路由器进行互连。
  4. 在IP地址中,所有分配到网络前缀的网络都是平等的。

    互联网同等对待每一个IP地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网。

注意:

image-20211127093501165

  1. 同一个局域网上的主机或路由器的IP地址中的网络号必须一样。
  2. 路由器的每一个接口都有一个不同网络号的IP地址。
  3. 两个路由器直接相连的接口处,可指明也可不指明地址。 如指明IP地址,则这一段连线就构成了一种只包含一段线路的特殊“网络”。这种网络仅需两个IP地址, 可以使用/31地址块。 主机号可以是0或1。

4.2.3 IP地址与MAC地址

image-20211127094156507

1. IP地址与MAC地址的区别

image-20211127094227350

我们以以下的过程为例:

image-20211127094352335

从协议栈的层次上看IP地址和MAC地址:

image-20211127094456680

在IP层抽象的互联网上只能看到IP数据报:

image-20211127094803722

虽然IP数据报要经过路由器R1和R2的两次转发,但在它的首部中的源地址和目的地址始终分别是IP1和IP2。数据报中间经过的两个路由器的IP地址并不出现在IP数据报的首部中。

在局域网的链路层,只能看见MAC帧:

image-20211127095056287

MAC帧在不同网络上传送时,其MAC帧首部中的源地址和目的地址要发生变化。在数据链路层,进行每次转发时,都要剥去原来的MAC帧的首部和尾部,再重新添加新的首部和尾部。这时首部中的源地址和目的地址已经发生改变,而这种变化,在上面的IP层上是看不见的。

不同层次、不同区间使用的源地址和目的地址:

image-20211127095440386

  • 尽管互连在一起的网络的MAC地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些很复杂的细节。
  • 只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。

那么,主机或路由器怎样知道应当在MAC帧的首部填入什么样的MAC地址?

4.2.4 地址解析协议ARP

实现IP通信时使用了两个地址:

  1. IP地址(网络层地址)
  2. MAC地址(数据链路层地址)

image-20211127095729820

1. 地址解析协议ARP的作用

问题:已经知道了一个机器(主机或路由器)的IP地址,如何找出其相应的MAC地址?

image-20211127095848884

<1>ARP高速缓存

  • ARP高速缓存:
    • 存放IP地址到MAC地址的映射表。
    • 映射表动态更新(新增或超时删除)。

image-20211127100309629

超过生存时间的顶目都从高速缓存中删除,以适应网络适配器变化。

<2>ARP工作

当主机A欲向本局域网上的某个主机B发送IP数据报时:

image-20211127100446737

<3>ARP查找IP地址对应的MAC地址

  • 本局域网上广播发送ARP请求(路由器不转发ARP请求)。
  • ARP请求分组:包含发送方硬件地址/发送方地址/目标方硬件地址(未知时填0)/目标方IP地址。
  • 单播ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址。
  • ARP分组封装在以太网帧中传输。

image-20211127100842775

第一次更新:主机A在发送其ARP请求分组时, 将自己的IP地址到MAC地址的映射写入ARP请求分组。

第二次更新:

  1. 当主机A收到主机B的ARP响应分组后,就在其ARP高速缓存器中写入主机B的IP地址到MAC地址的映射中。
  2. 当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。

<4>ARP高速缓存的作用

  1. 存放最近获得的IP地址到MAC地址的绑定。
  2. 减少ARP广播的通信量。
  3. 为进一步减少ARP通信量,主机A在发送其ARP请求分组时, 将自己的IP地址到MAC地址的映射写入ARP请求分组。
  4. 当主机B收到A的ARP请求分组时,就将主机A的IP地址及其对应的MAC地址映射写入主机B自己的ARP高速缓存中。不必再发送ARP请求。

<5>两台主机不在同一个局域网上怎么办?

ARP用于解决同一个局域网上的主机或路由器的地址和MAC地址的映射问题。

image-20211127102419821

image-20211127102902527

image-20211127102925719

image-20211127102936783

image-20211127102947633

<6>使用ARP的四种典型情况

  1. 发送方是主机,要把IP数据报发送到本网络上的另一个主机。这时用ARP找到目的主机的硬件地址。
  2. 发送方是主机,要把IP数据报发送到另一个网络上的一个主机。这时用ARP找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
  3. 发送方是路由器,要把IP数据报转发到本网络上的一个主机。这时用ARP找到目的主机的硬件地址。
  4. 发送方是路由器,要把IP数据报转发到另一个网络上的一个主机。这时用ARP找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。

2. 为什么要使用两种地址:IP地址和MAC地址?

  • 不同网络使用不同的MAC地址。MAC地址之间的转换非常复杂。

  • 对以太网MAC地址进行寻址也是极其困难的。

  • IP编址把这个复杂问题解决了。

    连接到互联网的主机只需各自拥有一个唯一的IP地址,它们之间的通信就像连接在同一个网络上那样简单方便,即使必须多次调用ARP来找到MAC地址,但这个过程都是由计算机软件自动进行的,对用户来说是看不见的。

因此,在虚拟的IP网络上用IP地址进行通信非常方便。

4.2.5 IP数据包的格式

image-20211127103705344

首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。可选字段,其长度是可变的。

1. IP数据报首部的固定部分中的各字段

image-20211127103851972

  • 版本——占4位,即IP协议的版本。目前IP协议版本号为4(即IPv4)。

  • 首部长度——占4位,可表示的最大值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。

  • 区分服务——占8位,用来获得更好的服务。只有在使用区分服务时,这个字段才起作用。在一般的情况下都不使用这个字段。

  • 总长度——占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。

  • 标识——占16位,它是一个计数器,用来产生IP数据报的标识。

  • 标志

    • 标志字段的最低位是MF。MF=1表示后面还有分片,MF=0表示最后一个分片。
    • 标志字段中间的一位是DF,只有当DF=0时才允许分片。
  • 片偏移——占13位,指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移以8个字节位偏移单位。

    IP数据报分片:

    image-20211127105337774

    image-20211127105357299

  • 生存时间——占8位,记为TTL,指示数据报在在网络中可通过的路由器数的最大值。

  • 协议——占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给那个处理过程。

    IP协议支持多种协议,IP数据报可以封装多种协议PDU。

    image-20211127110250625

    image-20211127110320364

  • 首部检验和——占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法。

    image-20211127110705247

    在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收到数据报后,把首部的所有16位字再使用反码算术运算相加一次。将得到的和取反码,即得出接收方检验和的计算结果。若首部未发生任何变化,则此结果必为0,于是就保留这个数据,否则即认为出差错,并将此数据报丢弃。

    补充:两个数进行二进制反码求和的运算很简单。它的规则是从低位到高位逐列进行计算。0和0相加是0,0和1相加 是1,1和1相加是0但要产生一个进位1,加到下一列。若最高位相加后产生进位,则最后得到的结果要在最低位加1。

  • 源地址和目的地址都各占32位。

2. IP数据报首部的可变部分

  • IP首部的可变部分是一个选顶字段,用来支持排错、测量以及安全等措施,内容很丰富。
  • 长度可变:从1个字节到40个字节不等,取决于所选择的顶目。
  • 增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的,增加了每一个路由器处理数据报的开销。
  • 实际上这些选项很少被使用。

参考资料:《计算机网络(第8版)》—— 谢希仁。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:37:38  更:2021-11-28 11:38:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:50:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码