热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

网络层(2.网际协议IP)

目录一、虚拟互联网络二、分类的IP地址1.IP地址及其表示方法2.常用的三种类别的IP地址A类地址:B类地址:C类地址:三类对比:IP地址的重要特点:三、IP地址与硬件地址四、地址

目录

一、虚拟互联网络

二、分类的IP地址

1. IP地址及其表示方法

2. 常用的三种类别的IP地址

A类地址:

B类地址:

C类地址:

三类对比:

IP地址的重要特点:

三、IP地址与硬件地址

四、地址解析协议ARP

五、IP数据报的格式

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

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

六、IP层转发分组的流程

特定主机路由:

默认路由:

路由器分组转发算法:

        网际协议IP是TCP/IP协议最重要的两个协议之一,也是最重要的互联网标准协议之一。

与 IP 协议配套的还有三个协议:

        地址解析协议 ARP        网际控制报文协议 ICMP           网际组管理协议IGMP                                                        《网络层(2.网际协议IP)》

一、虚拟互联网络

        若是把全世界所有网络互连起来,想要通信就要解决很多问题,如:不同的寻址方案、不同的最大分组长度、不同的网络接入机制等,因此没有一种单一的网络能够适应所有用户的需求

将网络连接起来要使用一些中间设备:

        物理层中继系统:转发器
        数据链路层中继系统:网桥或桥接器
        网络层中继系统:路由器
        网桥和路由器的混合物:桥路器
        网络层以上的中继系统:网关。 

        当中间设备是转发器或者网桥时,它们仅仅是将网络扩大了,从网络层角度看,这仍然是一个网络。

        网关比较复杂,使用的少。

        现在讨论网络互连时,都是指用路由器进行网络互连和路由选择。

《网络层(2.网际协议IP)》

        有许多网络参与互联,由于它们都使用相同的网络协议IP,因此可以把他们看成一个虚拟互联网络

        所谓虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络

         使用IP网的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

二、分类的IP地址

1. IP地址及其表示方法

        整个互联网就是一个单一的、抽象的网络。IP地址就是给互联网上每一台主机或路由都分配一个在全世界范围内都是唯一的32位标识符

        IP地址现在由互联网名字和数字分配机构ICANN进行分配。

IP地址的编址方式经历了三个阶段:

(1)分类的IP地址最基本的编址方式,在1981年通过了相应的标准协议。

(2)子网的划分对最基本的编址方式的改进,在1985年通过标准。

(3)超网。比较新的无分类编址方式

现在只讨论最基本的编址方式。

        分类的IP地址就是将IP地址划分为若干固定类。

        每一类地址都是由两个固定长度的字段组成。第一个字段是网络号 net-id,他标志主机或路由器连接到的网络;第二个字段是主机号 host-id

        网络号在整个互联网范围内必须是唯一的

        主机号在它前面网络号指定的网络范围内必须是唯一的

        因此,一个IP地址在整个互联网范围内都是唯一的

结构如下:

        《网络层(2.网际协议IP)》

可以记为:

        IP 地址 ::= { <网络号>, <主机号>}   ( ::= 代表 “定义为” )

各类IP地址的网络号字段和主机号字段:

《网络层(2.网际协议IP)》

        可见,IP地址不仅表明一台主机的类型,还指明了主机连接到的网络。

        为了提高可读性,再32位的IP地址中每八位插入一个点,并且等效成十进制数字,称为点分十进制

 例如:10000000 00001011 00000011 00011111 可以写为128.11.3.31

2. 常用的三种类别的IP地址

        IP地址一共占4个字节,32位,也就是一共有2^32个地址。

A类地址:

网络号:

        网络号字段占一个字节,共7位可用(因为第一位要表示是A类),可以指派的网络号是126个,即2^7-2,减 2 的原因:

        第一,IP地址中全0,即0000000是一个保留地址,意思是“本网络”。

        第二,网络号位127,即0111111保留为本地软件的环回测试本主机的进程之间的通信之用。

主机号:

        主机号占3个字节,也就是24位,一个A类网络号最大主机数为2^24 &#8211; 2,即16777214 。减二的原因:

        第一,全 0 的主机号字段表示该IP地址是“本主机”所连接到的单个网络地址(例如,一主机的IP地址为5.6.7.8,则该主机所在的网络地址就是5.0.0.0) 。

        第二,全 1 表示所有的,全1的主机号字段表示该网络上所有的主机

        若主机发送一个目的地址为“环回地址”的IP数据报,则本主机中的协议软件就直接处理数据报中的数据,而不会把他发送到任何网络。目的地址为环回地址的IP地址不会出现在任何网络上,因为网络号为127的地址根本不是一个网络地址。

        A类有 2^7 2^24 个地址,占总的IP地址空间的50%

B类地址:

网络号:

        B类地址网络号字段有两个字节,因为前两位已经固定(1 0),只剩下14位可分配

        因为14位无论怎么取值也不能使整个网络号字段全为0或1,因此不存在网络总数减2。

        但是128.0.0.0是不可以指派的,可以指派的最小B类地址为128.1.0.0

        因此B类地址可以指派的网络总数为 2^14-1,即16384

主机号:

        B类地址的每一个网络上最大主机数是 2^16 &#8211; 2,减2是除去全为0和全为1.原因跟A类一样。

        B类有 2^14 2^16 ,占总的IP地址空间的25%。

C类地址:

网络号:

        C类地址有3个字节的网络号,最前面三位(1 1 0),因此还有21位可分配

        因为21位无论怎么取值也不能使整个网络号字段全为0或1,因此不存在网络总数减2。

        192.0.0.0也是不能指派的,可以指派的最小C类地址为192.1.0.0

        C类地址可以指派的网络总数为 2^21-1,即2097151.

主机号:

        C类地址的每一个网络上最大主机数为 2^8 &#8211; 2,即254

        C类有 2^21 2^8,占总的IP地址空间的12.5% 。

三类对比:

《网络层(2.网际协议IP)》

 《网络层(2.网际协议IP)》

IP地址的重要特点:

(1)IP地址是一种分等级的地址结构。有两个好处:

        ①IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。

        ②路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。 

(2)实际上IP地址是标志一个主机或路由器和一条链路的接口

        当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机
        由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址

(3)用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id

(4)所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的

《网络层(2.网际协议IP)》

三、IP地址与硬件地址

从层次的角度看:

        硬件地址(或物理地址)是数据链路层和物理层使用的地址

        IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)

《网络层(2.网际协议IP)》

《网络层(2.网际协议IP)》

 《网络层(2.网际协议IP)》

 从上图可以看出,在网络层IP源地址和目的地址始终没有变化,而物理地址MAC却一直在变:

《网络层(2.网际协议IP)》

(1)在IP抽象层的互联网只能看到IP数据报

(2)虽然在IP数据报首部有源地址,但是路由器只根据目的站的IP地址网络号进行选择

(3)在局域网的链路层,只能看见MAC帧

(4)IP层抽象的互联网屏蔽了下层这些很复杂的细节。只要在网络层讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。

四、地址解析协议ARP

        已经知道以一个机器的IP地址,需要找出对应的硬件地址。这就是地址解析协议ARP干的事情。

地址解析协议ARP要点:

        网络层的IP地址和硬件地址格式不同不具有映射关系,而且在一个网络上可能会有新主机加入,撤走主机或者更换网络适配器(会使得硬件地址改变),更加无法映射。

        解决方法就是在主机ARP高速缓存中放一个从IP地址到硬件地址的映射表,这个表还要经常动态更新

映射表如何添加数据

        ARP对保存在高速缓存中的每一个映射地址都设有生存时间,超过生存时间就删除。

        当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址:
        (1)如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
        (2)如没有:

                ① ARP 进程在本局域网上广播发送一个 ARP 请求分组

                ②本局域网所有主机上运行的ARP都收到此ARP请求分组。

                ③除A、B以外主机检查请求分组中的地址,与自己不一样不理睬

                ④B主机检查地址一致,向A发送ARP响应分组,并把A的IP和硬件地址记录。

                ⑤A主机收到 ARP 响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存

《网络层(2.网际协议IP)》

ARP请求分组:

        发送方IP地址 / 发送方硬件地址 / 目标方硬件地址(未知填0) / 目标方IP地址

        该分组为本地广播,注意路由器不转发到互联网。

ARP响应分组:

        发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址

        该分组是单播,从一个源地址直接发送到一个目的地址

注意:

        ARP解决的是同一个局域网上的主机或路由器的IP地址和硬件地址映射问题。

若是在不同局域网,那么:

        ①通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址

        ②然后把分组发送给这个路由器

        ③让这个路由器把分组转发给下一个网络

        ④剩下的工作就由下一个网络来做

从 IP 地址到硬件地址的解析是自动进行的主机的用户对这种地址解析过程是不知道的

四种典型情况:

《网络层(2.网际协议IP)》

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

五、IP数据报的格式

        IP数据报由首部和数据两部分组成。

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

《网络层(2.网际协议IP)》

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

(1)版本

        占4位指IP协议的版本

        目前版本号为4,即IPv4.

(2)首部长度

        占4位,用来表示首部的长度。

        可表示最大的数十进制为151个单位表示32位,即4个字节

        因为仅首部固定部分就已经20字节,所以最小为5首部最大为15*4=60字节

        首部长度必须是4字节的整倍数,不是就利用最后的填充字节填充。

(3)区分服务

        占8位,用来获得更好的服务。       

        在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。

        只有在使用区分服务(DiffServ)时,这个字段才起作用

        在一般的情况下都不使用这个字段。

(4)总长度

        占16位,表示首部和数据之和的长度,单位为字节

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

        在数据链路层规定了一个数据帧的数据字段的最大长度,称为最大传送单元MTU

        一旦IP数据报的总长度超过数据链路层规定的MTU值,就要进行分片处理。分片处理在(7)片偏移里。这时的总长度是指分片后的每一个分片的首部长度与该分片的数据长度之和。

(5)标识

        占16位

        IP软件有一个计数器,每产生一个数据报,计数器便加1。这个标识并不是序号,不表明IP数据报的顺序。

        它的作用是数据报由于长度超过MTU后必须分片时,这个标识的值就会复制到所有切片内,相同标识值的字段最后被正确的重装成原来的数据

(6)标志

        占3位,目前只有两位有意义

        标志字段最低位标记为MF。MF=1 表示后面还要“分片”的数据报。MF=0 表示这已经是若干数据报片中的最后一个。

        标志字段中间一位记为DF,意思是不能分片。只有当DF=0 时才允许分片。

(7)片偏移

        占13位

        代表:较长的分组在分片后,某片在原分组中的相对位置。就是说相对于用户数据字段的起点,该片从何处开始。

        片偏移以8个字节为偏移单位。也就是说每个分片的长度一定是8字节的整数倍。

《网络层(2.网际协议IP)》

《网络层(2.网际协议IP)》

(8)生存时间

        占8位,表示这是数据报在网络中的寿命

        目的是防止无法交付的数据报无限制的在互联网中兜圈子。

        由发出数据报的源点设置这个字段。

        最初设计以秒为单位,每经过一个路由器,就会减去这段时间。若减为0,就丢弃这个数据报。

        随着技术革新,将它的功能改为“跳数限制”,每次经过路由器转发都会减1,减为0则丢弃,不再转发。

        因为占8位,所以最多经过路由器数量为255,若是将值设为1,则只能在局域网内转发

(9)协议

        占8位,协议字段表示此数据字段携带的数据是使用何种协议

   常用协议和对应的协议字段值:

协议名ICMPIGMPIPTCPEGPIGPUDPIPv6ESPOSPF
协议字段值12468917415089

(10)首部检验和

        占16位

        只检验数据报的首部,不检验数据部分

        不使用CRC检验码,采用更简单的计算方法:16位二进制反码求和算法

《网络层(2.网际协议IP)》

(11)源地址

        占32位

(12)目的地址

        占32位 

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

        这部分是一个可选项,用来支持排错、测量以及安全等措施。基本不使用。

        新的IPv6 直接把IP数据报的首部长度固定了。

六、IP层转发分组的流程

假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
        可以想像,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
        但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化。

《网络层(2.网际协议IP)》

根据目的网络地址就能确定下一跳路由器,这样做的结果是:

        IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
        只有到达最后一个路由器时,才试图向目的主机进行直接交付

特定主机路由:

        虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
        采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

默认路由:

        路由器还可采用默认路由减少路由表所占用的空间和搜索路由表所用的时间
        这种转发方式在一个网络只有很少的对外连接时是很有用的。
        默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
        如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。

《网络层(2.网际协议IP)》 

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”。
当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件
网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器。

路由器分组转发算法:

(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N

(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)  报告转发分组出错。


推荐阅读
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 如何使用 CleanMyMac X 2023 激活码解锁完整功能
    本文详细介绍了如何使用 CleanMyMac X 2023 激活码解锁软件的全部功能,并提供了一些优化和清理 Mac 系统的专业建议。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 如何使用Ping命令来测试网络连接?当网卡安装和有关参数配置完成后,可以使用ping命令来测试一下网络是否连接成功。以winXP为例1、打开XP下DOS窗口具体操作是点击“开始”菜 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • TP-Link无线路由器WPS安全配置指南
    本文详细介绍了如何在TP-Link无线路由器上进行WPS的安全设置,包括关闭不必要的服务、同步主路由器的无线设置等步骤。 ... [详细]
author-avatar
夜笙_ciel
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有