IP协议
IP协议
IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
IP主要包含三方面内容:
- 数据报格式
- 分组处理的约定
- 地址约定
IP 数据报格式:
IP 分片和重组:
由于不同的网络链路有不同的MTU (最大传输单元),所以很多时候没办法直接将整个IP分组向下传输,大的IP数据报就需要在网络上被分片形成独立的分组(目标主机会启动定时器,如果规定时间之外任一一个分片没到就只能全部丢弃),并在最终的目标主机根据ID以及偏移量进行重组。
一个数据报被分割成若干个小的数据报:
- 相同的ID
- 不同的偏移量
- 最后一个分片fragflag标记为0
例子:
胖分组:
分片分组:
IP编址:
32位标示,对主机或者路由器的接口编址;路由器通常拥有多个接口,主机也有可能有多个接口,IP地址和每一个接口关联。
IP地址是由网络地址与主机地址两部分所组成。
- 网络地址:网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。
- 主机地址:主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。
什么是子网:
- 一个子网内的节点(主机或者路由器)它们的IP地址的高位部分相同,这些节点构成的网络的一部分叫做子网
- 无需路由器介入,子网内各主机可以在物理上相互直接到达
地址分类:
类别 | 最大网络数 | IP地址范围 | 单个网段最大主机数 | 私有IP地址范围 |
---|---|---|---|---|
A | 126(2^7-2) | 1.0.0.1-127.255.255.254 | 16777214 | 10.0.0.0-10.255.255.255 |
B | 16384(2^14) | 128.0.0.1-191.255.255.254 | 65534 | 172.16.0.0-172.31.255.255 |
C | 2097152(2^21) | 192.0.0.1-223.255.255.254 | 254 | 192.168.0.0-192.168.255.255 |
非常用地址:
- D类地址:前四位是1110,用于多播(multicast),即一对多通信;
- E类地址:前四位是1111,保留为以后使用。
特殊IP地址:
127.0.0.1:回送地址
255.255.255.255:广播地址,用于服务寻找IP
127.0.0.1:本机地址,用于回路检测
0.0.0.0:任一IP,表示不清楚的主机和目的网络
无类域间路由:
CIDR: Classless InterDomain Routing,子网部分可以在任意的位置(通过子网掩码来区分),地址格式: a.b.c.d/x, 其中x 是地址中子网号的长度。
子网掩码:
用来区分子网部分和主机部分:
- 1: bit位置表示子网部分
- 0:bit位置表示主机部分
原始的A、B、C类网络的子网掩码分别是:
- A:255.0.0.0 :11111111 00000000 0000000 00000000
- B:255.255.0.0:11111111 11111111 0000000 00000000
- C:255.255.255.0:11111111 11111111 11111111 00000000
转发表和转发算法
转发表:
首先获得IP数据报的目标地址,再根据Mask子网掩码获得网络地址,然后拿网络地址与转发表进行比对:
- 如果找到了,就按照表项的对应接口转发该报文
- 没有找到,则使用默认表项转发数据报
IPv6
由于32-bit地址空间将会被很快用完,所以IPv6由此诞生。并且拥有固定的40 字节头部,在数据报传输过程中,不允许分片,而是让主机自己进行处理,减轻了路由器的压力。
数据报格式:
- Priority:标示流中数据报的优先级
- Flow Label:标示数据报在一个“flow”
- Next header:标示上层协议
和IPv4的其它变化:
- Checksum:被移除掉,降低在每一段中的处理速度
- Options:允许,但是在头部之外, 被“Next Header” 字段标示
- ICMPv6:ICMP的新版本
平滑升级:由于主机太多了,只能平滑的升级,IPv6只能通过隧道(即将IPv6的报文封装成IPv4的报文进行通信)在IPv4的环境下进行相互通信。