https://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

IP协议作用

1.寻址规约(conventions) 2.数据报(分组)格式 3.分组处理规约
规定网络地址的协议,叫做IP协议。它所定义的地址,就被称为IP地址。
目前,广泛采用的是IP协议第四版,简称IPv4。这个版本规定,网络地址由32个二进制位组成。
互联网上的每一台计算机,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。
但是,问题在于单单从IP地址,我们无法判断网络部分。还是以172.16.254.1为例,它的网络部分,到底是前24位,还是前16位,甚至前28位,从IP地址上是看不出来的。
那么,怎样才能从IP地址,判断两台计算机是否属于同一个子网络呢?这就要用到另一个参数”子网掩码”(subnet mask)。
所谓”子网掩码”,就是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
知道”子网掩码”,我们就能判断,任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。
比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,结果都是172.16.254.0,因此它们在同一个子网络。
总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

IP首部格式

image.png

  • 版本号字段占4位:IP协议的版本号 E.g. 4→IPv4,6 → IPv6
  • 首部长度字段占4位:IP分组首部长度 以4字节为单位 E.g. 5→IP首部长度为20(5×4)字节
  • 服务类型(TOS)字段占8位:指示期望获得哪种类型的服务 1998 年这个字段改名为区分服务 只有在网络提供区分服务(DiffServ)时使用 一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
  • 总长度字段占16位:IP分组的总字节数(首部+数据) 最大IP分组的总长度:65535B 最小的IP分组首部:20B

IP分组可以封装的最大数据:65535-20=65515B

  • 标识字段占16位:标识一个IP分组 IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组 的标识
  • 标志位字段占3位

image.png

  • 片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量 片偏移字段以8字节为单位
  • 生存时间(TTL)字段占8位:IP分组在网络中可以通过的 路由器数(或跳步数) 路由器转发一次分组,TTL减1 如果TTL=0,路由器则丢弃该IP分组
  • 协议字段占8位:指示IP分组封装的是哪个协议的数据包 实现复用/分解 E.g. 6为TCP,表示封装的为TCP段;17为UDP,表示封装的是 UDP数据报
  • 首部校验和字段占16位:实现对IP分组首部的差错检测 1.计算校验和时,该字段置全0 2.采用反码算数运算求和,和的反码作为首部校验和字段 3.逐跳计算、逐跳校验
  • 源IP地址、目的IP地址字段各占32位:分别标识发送分组 的源主机/路由器(网络接口)和接收分组的目的主机/路由器 (网络接口)的IP地址
  • 选项字段占长度可变,范围在1~40B之间:携带安全、源 选路径、时间戳和路由记录等内容
  • 填充字段占长度可变,范围在0~3B之间:目的是补齐整个 首部,符合32位对齐,即保证首部长度是4字节的倍数

IP分片与重组

每段数据链路使用不同协议、不同长度。 image.png

大IP分组向较小MTU(最大传输单元)链 路转发时,可以被“分 片” (fragmented)

  • 1个IP分组分为多片IP分 组
  • IP分片到达目的主机后进 行 “ 重组 ”

例子
一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。
偏移量计算
image.png

IP地址概念

IP分组:源地址(SA)-从哪儿来 目的地址(DA)-到哪儿去
接口(interface): 主机/路 由器与物理链路的连接

  • 实现网络层功能
  • 路由器通常有多个接口
  • 主机通常只有一个或两个 接口 (e.g.,有线的以太网 接口,无线的802.11接口)
  • IP地址与每个接口关联

image.png

IP子网

image.pngimage.png
例如 223.1.1.1 和 223.1.1.2 在同一个子网中 最后一位是主机号
image.png
特殊IP地址
image.png
私有bai地址(Private
address)属于非注册du地址,专门为组zhi织机构内部使用。
image.png

子网划分(含变长子网)

image.png
计算子网地址
子网掩码的作用:它是用来划分IP地址中哪一部分是网络号,哪一部分是机器号 用来确认具体的子网地址(网络地址)
与运算:都是1就为1,否则就是0
image.png
先看一张网络的划分
image.png
image.png

  • 一个IPV4地址(145.13.0.0) 可以使用子网掩码划分成不同的子网地址 如图上的 145.13.3.0 145.13.7.0
  • 从这个子网地址开始可以把IP地址分配给不同的主机 例如145.13.3.10 1245.13.3.11
  • 子网号确定了不同的子网 主机号确认了不同的主机
  • 知道一个主机的IP地址可以根据求子网地址的方式求出子网地址(主机号全为0)
  • 求广播地址 主机号全为1

首先先说子网划分涉及到的一些计算与概念

image.png
第一类题目

已知ipv4地址和子网掩码求子网网络地址

第二类

求广播地址和子网地址,先把主机号全部变成0,求出改主机ip所在的子网网络地址,再把主机号全部变成1,得到的ip地址就是网络地址

第三类

求ip地址的范围 子网地址-广播地址

第四类 已知IP地址,划分相同大小的子网,求子网掩码

1.计算最大网络需求 确定子网号和主机号的位数 根据需要划分的子网数量确认子网号 例如需要8个子网 就是3位的子网号 如果还对每个子网的容纳数有要求就要先算出主机需要的位数,减去就是子网号 2.把需要增加的子网号加上算出子网掩码 3.根据分配数来分配IP

image.png
image.png
第一步,先算出原来IP的网络号是多少
11111111.11111111.11111111.100000000 把子网划为二进制,0的个数就是主机数,上面有7个0所以就是2的7次方,得出的数就是128。
0~127 算一个网段(总共的IP为128,因为0也算一个,第1个就是网络号
而最后一个就是广播号)
128~255 (在这可得出128就是这个网段的网络号)
为什么要算出原来的网络号呢?
那是因为现在要划分的4个子掩,是在这一个网段里再进行划分的。
因为要划分4个子网,所以就等于2的2次方,之后 让25+2=27就等于新的子网掩码,注:2就是次方得来的,25就是原来的子网掩码
所以得出的27的子网掩码就是:255.255.255.224(27就是
11111111.11111111.11111111.11100000这是二进制,换算成十进制就是
255.255.255.224)
之后就是算后面0的个数(0的个数就决定每个子网中主机数是多少),从上面来看就是有5个0,所以就是是2的5次方,得出的数就是32。
刚才也说了,现在开头的IP就是从128算起
所以得出128~159算第一个网络,因为要可用主机数的IP,所以去头和去尾,得出的就是是129~158
以下就是得出的
可用IP为:
202.113.10.129—202.113.10.158
202.113.10.161—202.113.10.190
202.113.10.193—202.113.10.222
202.113.10.225—202.113.10.254
第五类 已知ip地址划分能容纳主机数不同的子网

  1. 计算最大网络需求
  2. 选择可变长子网掩码
  3. 确定子网IP地址空间

例:某单位有5个部门,需建立5个子网,其中部门1、2有60台主机,部门3有25台主机,部门4、5分别有10台主机 现有一个内部C类地址:192.168.1.0.请为该单位进行IP地址划分。
image.png
image.png
image.png

CIDR与超网

CIDR

image.png把网络号和子网号又拼了起来
image.png
超网
将多个子网聚合为一个较大的子网 构造超网(supernetting)
就是向前找到两个ip地址前面相同的位
最长前缀匹配
image.png

路由转发分组原则

路由器在收到IP数据报告后执行的分组转发步骤如下:
1) 提取IP数据报告首部中的目的IP地址
2)判断目的IP地址所在的网络是否与本路由器直接相连。如果是,就直接交付给目的网洛:如果不是执行3)
3)检查路由器表中是否有目的IP地址的特定主机路由。如果有,按特定主机路由转发:如果没有,执行4)
4)逐条检查路由表。若找到匹配路由,则按照路由表进行转发:若所有路由均不匹配,则执行5)
5)若路由表中设置有默认路由,则按照默认路由表转发:否则,执行6)
6)向源主机报错。