IP协议(Internet protocol)
ip地址与ip协议的关系
ip协议不单只是路由协议也是一个标准集合,ip地址是被包含在其中的一点。
为什么需要IP地址不直接使用MAC地址通信
mac地址都是唯一的,没有划分层次,如果在一个存在大量终端处于同一广播域的环境内,假设两台终端之间通信时产生arp广播数据包,其他终端都会被动接收,从而造成资源浪费
(1)IP协议简介
- ip协议位于网络层,有承上启下的作用,主要向传输层(TCP层)提供统一的包,即将不同类型的MAC帧转为统一的IP包并将MAC帧的物理地址转为全网统一的IP地址。
- ip协议提供一种无连接不可靠的通信方式,节点路由器网络中通过IP包的包头IP地址进行寻址,同一主机的IP包可能会经过不同路径到达目的主机(负载均衡)
- 提高网络可扩展性,实现大规模、异构网络的互联互通
(2)IP协议的功能
- 被路由协议(Routed protocol_))即ip 协议,负责网络编址、数据包封装。[动作的承受着,数据包被路由协议传播]
- 路由器:同时运行以上两种协议,使用路由表,为ip数据包查找、选择转发路径,将数据包从源1网络逐跳转发到目的网络,简称路由转发。
- 路由协议(Routing protocol): rip,ospf,bgp,静态路由等,负责学习网络路径建立路由表。[动作的发起者,载体]
(3)IP和子网掩码
- IP地址的组成:网络位+主机位,由32个二进制数组成,通常以点分十进制表示
- 路由器不会转发广播地址
- IP网络号与广播地址不能被分配
- 子网掩码用于确定IP地址的网络位(用1表示)与主机位(用0表示)
- IP与子网掩码必须同时分配
- 子网掩码是一个32bit的二进制数,从最左边开始,由若干位连续的1组成,其他部分为0
(4)IP编址原则
- 同一路由器中每个接口的网络号必须是全网唯一的
- 同一个ip 网段内,所有主机的ip网络号必须是相同的,主机地址必须是唯一的
- 同一个ip网络内的所有主机可以直接通信,简称ip网络直连通信,是不需要配置网关的;
- 不同的ip网络之间的通信,简称非直连通信。对于非直连通信,每一个ip网络中必须部署至少1台ip网关设备,每一个ip网络的主机必须配置网关地址,借助于本地网络的网关设备(例如路由器),才能够实现本网络与其他ip网络的通信
(5)IP地址的类别
类别 | 通信形式 | 第一个字节 | 二进制 | 自然掩码 | 主机位 | 可用主机 |
A | 单播 | 1~126 | 0开头 | /8 | 24 | 16,777,214 |
B | 单播 | 128~191 | 10开头 | /16 | 16 | 65,534 |
C | 单播 | 192~223 | 110开头 | /24 | 8 | 254 |
D | 组播 | 224~239 | ||||
E/保留 | 240~ 255 |
- 特殊的IP地址:
网络位不变主机位全为0 | 网络地址 |
网络不变,主机位全为1 | 子网广播地址 |
网络和主机位全为0 | 默认路由、缺省路由(0.0.0.0) |
网络和主机位全为1 | 全网广播地址(255.255.255.255) |
网络位为127 | 主机位任意,环回地址(回环测试) |
- 私有地址:
类别 | 地址范围 |
A | 10.0.0.0~ 10.255. 255.255 |
B | 172. 16. 0.0~ 172.31.255.255 |
C | 192. 168.0. 0~ 192. 168.255.255 |
- 公有地址
类别 | 地址范围 | |
A | 1.0.0.0-9.255.255.255 | 11.0.0.0-126.255.255.255 |
B | 128.0.0.0-172.15.255.255 | 172.32.0.0-191.255.255.255 |
C | 192.0.0.0-192.167.255.255 | 192.169.0.0-223.255.255.255 |
(6)IP子网划分和VLSM
使用IP主类网络号进行网络编址的缺点
由于IP主类网络号的数量有限,限制了网络的规模和扩展性
对于A类、B类地址,存在着巨大的主机地址浪费
所有IP子网都需要人工规划和计算
通过延长主类网络的掩码长度(即增加网络位,减少主机位),能够将一个主类网络号,衍生为多个更小的网络号,这些小的网络号,称为该主类网络的子网。
子网划分公式
- 计算子网包含多少IP地址:2^n(n为主机位bit数量)
- 计算子网包含多少有效IP地址:2^n-2(n为主机位bit数量,减2代表去掉主机位全0的网络地址和全1的广播地址)
- 子网数量计算:2^m(m代表借主机位数量)
- 256-2^m(m为最后一段非0掩码bit数量)=地址块可用ip小于256才适用
- 当前的子网的IP地址值,整除的整数*地址块的值等于那么当前的子网就是多少。
- 下一个子网的IP地址值,整除的整数+1之后的和*地址块的值等于那么下一个子网网络号。
- 当前的子网的广播地址=【下一个子网的IP地址值,整除的整数+1之后的和*地址块的值等于那么下一个子网网络号】-1
- 刚刚整除时候就是网络号
- 不能整除有可能是可用的IP地址或者广播地址。
VLSM(可变长子网掩码)
- 将一个指定的主类网络根据需要的主机地址数量划分成若干个网络范围大小不相同的小网络(网络号变长),VLSM编址能够最大限度减少IP地址浪费,让整个网络的地址呈现结构化层次化,为路由汇总做好准备从而实现路由优化
- 路由汇总要求整个网络必须是VLSM编址,路由汇总讲多个连续的子网合并为大的网络前缀。
CIDR (无类域间路由) :实现网络汇聚(网络号变短)
(7)IP数据包结构
*注:以上三张图表示是差不多的,可以结合看下,搞三张图主要是为了表示的完整点又不想自己画一个图
*IP数据报的格式分为报头区和数据区两大部分,报头的最小长度为 20 字节
1) 版本(version)
占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。
2) 首部长度(网际报头长度IHL)
占4位,其单位是4B。所以首部长度必须是4B的整数倍。如首部长度字段的4个二进制位分别是1111(对应十进制是15),则IP协议首部的长度是15 × 4B = 60B(字节)。由于IP数据报首部的固定部分长度固定是20,所以首部字段最小从0101开始。
3) 区分服务(tos ,Differentiated Services/DS)
占8位,一般情况下不使用该字段。只有使用区分服务时,这个字段才起作用,如要求当前的数据报设置高优先级优先发送。
4) 总长度(totlen)
占16位,表示首部和数据部分长度之和,单位是字节。数据报的最大长度为 2^16-1=65535 字节
5) 标识(identification)
用来标识数据报,占 16 位。IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报的长度超过网络的 MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被重组成原来的数据报。
6) 标志(flag)
占 3 位。第一位未使用,其值为 0。第二位称为 DF(不分片),表示是否允许分片。取值为 0 时,表示允许分片;取值为 1 时,表示不允许分片。第三位称为 MF(更多分片),表示是否还有分片正在传输,设置为 0 时,表示没有更多分片需要发送,或数据报没有分片。
7) 片偏移(offsetfrag)
占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。
8) 生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。
9) 上层协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
10) 首部检验和(checksum)
用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。
11) 源地址
表示数据报的源 IP 地址,占 32 位。
12) 目的地址
表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。
13) 可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。
14) 填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。
15) 数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。
注意区分几个字段的单位
(1) 首部长度:单位是4B,表示数据报的首部的长度。
(2) 总长度:单位是B,标识整个数据报的长度。
(3) 片偏移量:单位是8B,表示某一分片相对于用户数据字段的起点。