IP协议
IP协议是TCP/IP协议族中最核心的协议。所有的TCP、UDP、ICMP、IGMP数据都以IP数据报的格式传输。
IP协议是不可靠、无连接的:
- 不可靠表示IP协议不能保证IP数据报能成功的到达目的地。IP仅提供传输服务,任何可靠性的要求都必须由上层来提供(如TCP)。如果传输过程发生错误,IP协议简单的丢弃该数据报,然后发送ICMP消息给发送端。
- 无连接表示IP协议不维护任何关于后续数据报的状态信息,每个数据报都是相互独立的。这也说明,IP数据报可能不是按照发送顺序被接收到的,很有可能后发送的数据被先收到。
一、IP首部
IP数据报的格式如图:
- 4位版本:标识目前采用的IP协议的版本号。IPv4为0100, IPv6为0110
- 4位首部长度:用于标识首部的长度,单位为4字节,所以首部的最大长度为15*4字节=60字节。
- 8位服务类型:包括3bit的优先权字段(已被忽略),4bit的TOS字段,1bit的始终为0的未使用位。
- 16位总长度(字节数):整个IP数据报的长度。数据报中数据内容的长度=总长度 - 首部长度
- 16位标识:唯一地标识主机发送的每一份数据报。IP数据报的最大长度可达65535字节,但大多数链路层都会对它进行分片。由于TCP本身会把用户数据分成若干片,因此这个字段一般来说不会影响到TCP。
- 3位标志:用于IP数据报分片。该字段第1bit不使用;第2bit是DF(Don’t
Fragment)位,DF位设为1时表明IP不对该数据包分片。第3bit是MF(More
Fragments)位,当对数据包分片时,除了最后一片外,其他每个组成数据报的片都要把此位设为1。 - 13位偏移:用于IP数据报分片。单位为8字节。表示该片相对于原始数据报开始处的位置,能表示的最大偏移为2132^{13}2 13
*8=65536字节。
另外,数据报被分片之后,每个片的总长度要更改为该片的长度值。IP层分片是透明的,但是即使只丢失一片数据也要重传整个数据报,因为IP层本身没有超时重传的机制。
- 8位生存时间(TTL):设置数据报可以经过的最多路由器数量,每经过一个路由器,该值就减去1。当该值为0时,数据报就被丢弃。通常初始值为32或64.
- 8位协议:表示上层传输层所用的协议类型。1表示ICMP协议,2表示IGMP协议,6表示TCP协议,17表示UDP协议。
- 16位首部校验和:用于对IP首部的正确性进行校验,但不包括数据部分,这点不同于TCP和UDP的首部校验和。
- 32位源IP地址:发送端的32bit的IP地址。
- 32位目的IP地址:接收端的32bit的IP地址。
- 选项:可变长度的可选信息。如果首部不含“选项字段”,则IP首部长度为20字节。
二进制转十进制
- 网络地址:代表这个网络的地址以0结尾;
- 广播地址:代表这个网络内的所有地址,都能和这个广播地址通信通过,这个广播地址发送信息所有人都能收到,以255结尾;
特殊地址: - 127.0.0.0-127.255.255.255—用于测试的网段
- 0.0.0.0—表示任意网段
- 255.255.255.255—表示广播地址
- 127.0.0.1—是换回地址,用于诊断网络是否正常
所对应的子网掩码类型
子网掩码
- 定义:子网掩码是一种用来指明一个IP地址所标示的主机处于哪个子网中。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码的作用,就是将某个IP地址划分成网络地址和主机地址两部分。
255.255.255.0=24 —C类IP(国内使用)
255.255.0.0=16 —B类IP
255.0.0.0=8—A类IP
255部分代表网络地址部分;0代表主机地址部分;
如何确认子网掩码:
IP地址的网络地址相同我们一般称为一个网段,相同网段构成的局域网可以互相通信,不同网段直接无特殊情况不能直接通信;
1)将主机数目转化为二进制来表示,总位数是N;
2)将掩码地址全部置1,然后从后向前的将N位全部置为 0,即为子网掩码值。
如欲将B类IP地址168.195.0.0划分成若干子网,每个子网内有主机700台:
1)700=1010111100,该二进制为十位数,N = 10
2)将子网掩码255.255.255.255从后向前的10位全部置0,即为:
11111111.11111111.11111100.00000000,也即255.255.252.0。
255.255.252.0就是168.195.0.0的700台主机的子网掩码了。
例3 如何理解172.20.1.0/26
上文中的26代表主机ID的掩码地址长度,从前往后有26位,即子网掩码的地址是255.255.255.192。
如何使用子网掩码划分子网