Skip to content

IP ​


网际协议(Internet Protocol,缩写:IP)
IP是一种无连接的协议
IP报文尽最大努力交付,可能存在丢包或乱序
IP网络分为IPv4和IPv6

IP地址 ​

当设备连接网络,设备将被分配一个IP地址,用作标识
通过IP地址,设备可以互相通讯
IP地址有两个主要功能:标识设备网络和寻址

IPv4 ​

Internet Protocol version 4,互联网通信协议第四版

IPv4报文结构 ​

ipv4-hdr

字段长度说明
版本4bitIP协议版本,IPv4默认是4
头部长度4bit头部数据长度,以4字节为单位。范围[5-15],即[20-60]字节
服务类型6bitPPP:前3位,定义包的优先级,取值越大数据越重要
---000 普通(Routine)
---001 优先的(Priority)
---010 立即的发送(Immediate)
---011 闪电式的(Flash)
---100 比闪电还闪电式的(Flash Override)
---101 CRI / TIC / ECP(找不到这个词的翻译)
---110 网间控制(Internetwork Control)
---111 网络控制(Network Control)
DTRCO:后 5 位
---D 时延:0:普通,1:延迟尽量小
---T 吞吐量:0:普通,1:流量尽量大
---R 可靠性:0:普通,1:可靠性尽量大
---M 传输成本:0:普通,1:成本尽量小
---0 最后一位被保留,恒定为 0
总长度16bit头部和数据的总长度。
理论范围[20-65535]
实际范围根据以太网帧的MTU而定。一般是[46-1500]
标识符16bit一个整数,用于识别当前数据报。
每产生一个数据报,计数器加1,并赋值给此字段。
当数据报分段时,标识字段的值被复制到所有的分段之中
标志3bit第15bit:保留,必须为0;
第14bit:禁止分片(Don’t Fragment,DF),当DF=0时才允许分片
第13bit:更多分片(More Fragment,MF),MF=1代表后面还有分片,MF=0 代表已经是最后一个分片。
分段偏移13bit每个分片相对于原始报文开头的偏移量,以1字节作单位。
存活时间1Byte报文转发最大次数,
每转发一次,减一。减到0则丢弃。
协议1Byte负载数据协议类型,例如:
1--ICMP
2--IGMP
6--TCP
17--UDP
41--ENCAP
89--OSPF
132--SCTP
头部校验和2ByteIP头部完整性校验。
计算过程是先将校验和字段置为0,然后将整个头部每16位划分为一部分,将个部分相加,再将计算结果取反码,插入到校验和字段中
源地址4Byte源主机IP地址
目的地址4Byte目标主机IP地址
可选头部[0-40]Byte长度必须是4字节的整数倍,如果不是,需要补0x00

IPv4地址 ​

IP地址是4字节,常用点分是十进制标识,例如:192.168.1.1
IP地址分为两部分,网络地址+主机地址

分类网络 ​

类别网络标志位(最高位)IP地址范围可用IP地址范围
A类00.0.0.0~127.255.255.2551.0.0.1~127.255.255.254
B类10128.0.0.0~191.255.255.255128.0.0.1~191.255.255.254
C类110192.0.0.0~223.255.255.255192.0.0.1~223.255.255.254
D类1110224.0.0.0~239.255.255.255
E类11110240.0.0.0~247.255.255.255

无类别域间路由 ​

无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。
使用可变长子网掩码(VLSM)来分配任意长度的网络前缀
1993年,CIDR正式取代分类网络

子网 ​

主机地址为0的地址,表示一个网段。
例如:192.168.1.0/24

CIDR地址划分 ​

CIDR地址块描述参考资料
0.0.0.0/8本网络(仅作为源地址时合法)RFC 6890
10.0.0.0/8专用网络RFC 1918
100.64.0.0/10电信级NATRFC 6598
127.0.0.0/8环回RFC 5735
169.254.0.0/16链路本地RFC 3927
172.16.0.0/12专用网络RFC 1918
192.0.0.0/24保留(IANA)RFC 5735
192.0.2.0/24TEST-NET-1,文档和示例RFC 5735
192.88.99.0/246to4中继RFC 3068
192.168.0.0/16专用网络RFC 1918
198.18.0.0/15网络基准测试RFC 2544
198.51.100.0/24TEST-NET-2,文档和示例RFC 5737
203.0.113.0/24TEST-NET-3,文档和示例RFC 5737
224.0.0.0/4多播(之前的D类网络)RFC 3171
240.0.0.0/4保留(之前的E类网络)RFC 1700
255.255.255.255/32受限广播RFC 919
网络号主机号作为源地址作为目的地址描述
全为0全为0允许禁止表示本网主机
全为0Host ID允许禁止表示特定主机
全为1全为1禁止允许定向广播地址
127任意合法的值允许允许迂回地址,用于本地测试
255.255.255.255全为1禁止允许直接广播地址
127.0.0.1环回地址

私有地址 ​

接入互联网设备越来越多,IPv4地址短缺严重,为了解决这个问题,专门划分出一段局域网内部使用的IP
私有地址不能与公网直接通信
私有可以通过NAT转换与公网地址通信

CIDR地址块地址范围数量类别
10.0.0.0/810.0.0.0–10.255.255.25516,777,216一个A类
172.16.0.0/12172.16.0.0–172.31.255.2551,048,576连续的16个B类
192.168.0.0/16192.168.0.0–192.168.255.25565,536连续的256个C类

IPv6 ​

网际协议第6版(英语:Internet Protocol version 6,缩写:IPv6)是网际协议的最新版本。
用它来取代IPv4主要是为了解决IPv4地址枯竭问题
同时它也在其他方面对于IPv4有许多改进。

IPv6地址 ​

IPv6采用128位表示,采用16进制以16bit为一组,共8组,组间用:隔开
例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344
或者用.隔开每位,例如:2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4

省略前导0 ​

2001:0db8:02de:0000:0000:0000:0000:0e13
2001:db8:2de:0000:0000:0000:0000:e13
2001:db8:2de:000:000:000:000:e13
2001:db8:2de:00:00:00:00:e13
2001:db8:2de:0:0:0:0:e13

::省略连续0 ​

2001:db8:2de:0:0:0:0:e13
2001:db8:2de::e13 一个IP内不允许出现两次::

IPv4转IPv6 ​

192.168.89.9-->::ffff:c0a8:5909
或192.168.89.9-->::ffff:192.168.89.9

单播 ​

一对一通信

组播 ​

一对多通信,收发双方需要位于同一个组播组。

多播 ​

多播地址由皆为一的字节起始,亦即:它们的前置为FF00::/8。其第二个字节的最后四个比特用以标明"范畴"。 一般有node-local(0x1)、link-local(0x2)、site-local(0x5)、organization-local(0x8)和global(0xE)。多播地址中的最低112位会组成多播组群标识符,不过因为传统方法是从MAC地址产生,故只有组群标识符中的最低32位有使用。定义过的组群标识符有用于所有节点的多播地址0x1和用于所有路由器的0x2。 另一个多播组群的地址为"solicited-node多播地址",是由前置FF02::1:FF00:0/104和剩余的组群标识符(最低24位)所组成。这些地址允许经由邻居发现协议(NDP,Neighbor Discovery Protocol)来解译链接层地址,因而不用干扰到在区网内的所有节点。

特殊地址 ​

稍后补充。。。

头部 ​

稍后补充。。。

路由 ​

路由负责将IP分组在IP子网间转发。

路由表 ​

  • 目的网络地址(Network ID)
  • 子网掩码(subnet mask),用来判断IP所属网络
  • 下一跳地址/接口(Next hop / interface),报文转发的物理出口

默认网关 ​

路由表的一项,指向默认出口。
例如:当转发查表失败,则报文经过默认出口转发出去。

路由匹配 ​

根据最长前缀匹配,即从子网掩码最大的开始匹配
如果匹配到,则转发
如果匹配不到,则使用默认路由转发

参考 ​

wiki-CIDR0
wik-路由
Internet路由之路由表查找算法概述-哈希/LC-Trie树/256-way-mtrie树