0%

网络层之IP协议

网络层的协议:网际协议IP,首先需要了解网络主要的设计思路与实现的服务:

  1. 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据传输服务。
  2. 发送分组时不需要先建立连接。每一个分组独立发送,与其前后的分组无关(不进行编号)。
  3. 网络层不提供可靠传输,使得路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
  4. 主机中的进程通信的可靠性由运输层的TCP协议来负责

采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能移适应多种应用。

IP网际协议

IP协议提供了一种不可靠、无连接的数据传输服务,作用于主机:

1、不可靠:不能保证IP数据报能成功到达目的地;发生错误会直接丢弃该数据报,然后发送ICMP消息给信源端;

2、无连接:传送IP数据报(分组)前不需要要建立连接,每一个分组独立发送,与其前后的分组无关(不进行编号)

IP数据报格式

IP数据报格式

  • 版本号(4): IPV4 就是 4,IPV6 就是 6

  • 首部长度(4):记录IP数据报首部的长度,首部最小长度为20字节,最大为60字节

    • 以4 个字节为单位:每行32bit,即4个字节(首部长度不是4字节的整数倍,必须在填充字段加以填充)

    • 最小值为 5:仅有固定部分,可变部分为0,固定部分有5行,即1001。

    • 最大值为 15:首部长度为4bit,而2^4是16,所以它的取值范围是0-15,即1111

    • 所以最小长度=54= 20 个字节,最大=15*4= 60个字节。

  • 服务类型(8): Qos 用,目前不怎么使用。(8)

  • 总长度(16):首部+数据部分的长度,以字节为单位。 最多可以传送 2^16^-1=165535 字节的 IP 数据包

    【为什么 IP 首部中要有总长度字段】
    因为一些数据链路(以太网)有MTU最大传输单元】限制,小于最小MTU需要填充一些数据以达到最小长度,大于最大MTU需要对数据报进行分片处理,所以需要总长度来确定 IP 数据部分的内容。

  • 标识字段(8):唯一标识主机发送的每一份数据报,具有相同标识的数据报片属于同一个数据报

  • 标志 (3):R、DF、MF三位。目前只有后两位有效

    • DF位:为1表示不分片,为0表示分片
    • MF:为1表示“更多的片”,为0表示这是最后一片
  • 片偏移(13bit):标识被分片的每一个报片相对于原始数据的位置,第一个分片对应的值为0。

    【分片处理举例】

    IP数据包数据部分长度为3200位,首部为160位,MTU为1200,则发送数据报必须分片

    因为首部为160,所以分片后传输的数据部分长度最大为1040

    数据报总长度标识MFDF片偏移
    原始数据报3200+160123000
    数据报片11040+160=1200123100
    数据报片21040+160=1200123101040/8=130
    数据报片31040+160=1200123101040/8+130=260
    数据报片480+160=2401230080/8+260=270
  • 生存时间 TTL(8):经过一个路由器减一。 字段为 0 时,数据报被丢弃,并且发送 ICMP 报文通知源主机。目的是防止数据报在选路时无休止地在网络中流动

  • 协议(8):区分上层协议( 目标端根据协议把收到的IP数据报送到TCP或UDP等处理此报文的上层协议)

    常用的协议

  • 首部校验和(16):仅对首部进行校验

    【首部校验和计算方法】

    1. 先把校验和字段置 0。
    2. 对首部中每组 16 位比特多多组进行二进制反码求和。
    3. 结果存在检验和字段中。
    4. 接收端 收到一份 IP 数据包后,同样对首部中每个 16bit 二进制反码求和。
    5. 最后结果全为 1,表示正确,否则表示错误。
    6. 如果是错误的,IP 就丢弃该数据报,但是不生成差错报文,由上层去处理。

    【对比: ICMP,IGMP,TCP,UDP:对首部和数据进行校验】

    共同点:用到的算法都是一样的。

    区别:IP 计算的时候没有将数据包括在内,ICMP,IGMP,TCP,UDP 同时对首部和数据进行检验

  • 源地址(32):发送端IP地址

  • 目的地址(32):接收端IP地址

IP地址

IP地址的网络号及主机号字段

IP地址由[网络号,主机号]组成,在网络号字段前会有1~3的类别位

IP地址的指派范围:

网络类别网络号范围最大可指派的网络数最大主机数
A 类地址1.0.0.1~~126.255.255.2542^7^-2(保留地址全0+127环回)=1262^24^-2=16777214
B 类地址128.0.0.1~~191.255.255.2542^14^-1(128.0.0.0)=163832^16^-2=65534
C 类地址192.0.0.1~~223.255.255.2542^21^-1(192.0.0.0)=20971512^8^-2=254
D 类地址224.0.0.1~~239.255.255.254主机数-2:全0的本主机,全1的所有主机
E 类地址240.0.0.1~~254.255.255.254

IP地址的特点:

(1) 每个IP地址由网络号与主机组成(分等级的地址结构),好处是:①网络号由IP管理机构管理,而主机号由得到该网络号的单位自行分配;②路由器仅根据目的主机所连接的网络号转发分组,减小路由表的存储空间以及查找路由表的时间

(2) 一个网络是具有相同网络号的主机的集合,因此,用转发器或网桥连接的若干个局域网仍是一个网络,具有不同网络号的局域网必须使用路由器进行互连

(3) IP地址实际上是标志一个主机(或路由器)和一条链路的接口,如果一个主机同时连接到两个网络,那么主机必须有两个ip地址,这种主机就是多归属主机。由于路由器至少连接两个不同的网络,因此一个路由器至少有两个不同的IP地址

直接交付与间接交付:

直接交付与间接交付图示

当源主机向目的主机发送数据报时,先要检查目的主机是否与源主机连接在同一个网络上:

如果是,就将数据报直接交付给目的主机B而不需要通过路由器;

如果不是,则应该将数据报发送给本网络上的某个路由器,由该路由器进行转发,这叫做间接交付。

主机和路由器本质区别
主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。

IP 路由选择

IP路由选择其实是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。

特性
(1) IP 路由选择是逐跳进行的。IP 路由表并不知道到达目的的完整路径,只提供下一跳地址。
(2) 为一个网络指定一个路由器,而不是为每个主机指定一个路由器。这样可以缩小路由表规模。

过程(简单版):根据最长匹配原则,找到条目,发送到指定的路由器或主机。如果不能找到,返回一个“主机不可达”或“网络不可达”的错误。

IP 搜索路由表的步骤(详细版)

  1. 从IP数据报首部提取目的IP地址
  2. 根据最长匹配原则,首先搜索匹配的网络地址,如果找到则直接将数据报交付给条目中所对应的的网络接口
  3. 如果找不到,则搜索匹配的网络号,如果找到,则间接交付给条目中对应的下一站路由器,由该路由器进行分组转发
  4. 如果还找不到,就搜索默认选项,由默认选项中的下一站路由器进行分组转发
  5. 如果路由表中没有默认项,而又没有找到匹配项,则结果取决于该 IP 数据报是由主机产生的还是被转发的
    • 如果数据报是由本机产生的,那么就给发送该数据报的应用程序返回一个“主机不可达差错”或者是“网络不可达差错”的差错报文。
    • 如果是被转发的数据报,就给源主机发送一份“主机不可达”的差错报文。

附加补充:

路由选路原则:

先进行最长匹配原则,满足后进行管理距离最小优先,依旧满足进行度量值最小优先

A: 最长匹配原则:最长匹配原则是CISCO IOS路由器默认的路由查找方式。当路由器收到一个IP数据包时,会将数据包的目的IP地址与自己本地路由表中的表项进行bit by bit的逐位查找,直到找到匹配度最长的条目,这叫最长匹配原则。

B: 管理距离AD最小优先:可以是多种路由协议的比较;也可以是同种路由协议的比较,比如双线出口所配置的两条默认浮动路由比较

C:度量值metric最小优先:路由协议不同则度量值不能做比较,比如rip度量值为跳数;ospf度量值为带宽;eigrp度量值为带宽+延迟等。所以在不同种协议之间先比较管理距离