IPv4数据报格式
- IPv4是IP协议的第四个版本(版本1-3和版本5都未曾使用过)
- IP地址不能反映任何有关主机位置的地理信息
- 以前还有个逆地址解析协议RAPR(Reverse APR),它的作用是使只知道自己MAC地址的主机能通过RAPR找到其IP地址,而现在的DHCP(Dynamic Host Configuration Protocol)协议已经包含了RARP的功能,所以RARP已淘汰不用了
- 在Internet中,允许一台主机有两个或两个以上IP地址,这两个IP地址的网络号必然不同。如果一台主机有两个或两个以上IP地址,说明这个主机属于两个或两个以上的逻辑网络。同一时刻一个合法的内网IP地址只能分配给一台主机,否则会引起IP地址冲突
IP数据报的格式
当IP数据报每经过一个路由器,生存时间TTL就减1,并重新计算首部检验和
- 版本:占4位,IP协议的版本
- 首部长度:占4位,以4字节为单位,0101就代表5个4字节,即20字节(不使用可选字段)
- 区分服务:占8位,一般情况不使用这个字段
- 总长度:占16位,指首部和数据之和的长度,以字节为单位,因此数据报最大长度为65535B。以太帧的最大传送单元为1500B,因此当一个IP数据报封装成帧时,总长度超过了1500B,就要分片(一片就是一个帧的数据部分)(每一片都有首部,并且都是20字节)
- 标识(identification):占16位,是一个计数器。每产生一个数据报就+1,并赋值给标识字段,但它并不是“序号”(因为IP是无连接服务),同属一个数据报的数据报片用相同的标识,以便最后重装成原来的数据报。(目的主机根据IP首部中的标识、标志、片偏移字段来完成对片的重组)
- 标志(flag):占3位,目前只有两位有意义。最低位是MF(more fragment),MF=1表示后面还有分片,MF=0表示最后一个分片,中间一位是DF(don't fragment),DF=0时才允许分片
- 片偏移:占13位,指出较长的分组在分片后,某片在原分组的相对位置(相对于数据报的数据字段的起点),以8个字节为偏移单位,除了最后一个分片外,每个分片的长度一定是8B的整数倍
- 生存时间(Time To Live,TTL):占8位,是数据报在网络中可通过的路由器数量的最大值(跳数限制),路由器在转发分组前,把TTL减1,若TTL被减为0,则该分组必须丢弃
- 协议:占8位,指出分组携带的数据部分使用何种协议,即分组数据应上交给哪个协议处理。值为6表示TCP,为17表示UDP,1表示ICMP,89表示OSPF
- 首部检验和:占16位,只检验分组首部(不是CRC检验码,是反码求和运算),不检验分组数据部分
- 源地址字段:占4B,标识发送方的IP地址
- 目的地址字段:占4B,标识接收方的IP地址
- 选项字段:动态增加IP数据报功能,但实际上很少被使用,因此IPv6的IP数据报的首部长度(指的是基本首部)就做成固定的了
- 填充:当IP分组首部长度不是4字节整数倍时,用填充字段填充
路由器转发分组的过程
网络利用率并非越高越好。根据排队论,网络利用率增大时,所引起的时延也会迅速增加
转发表里的两种特殊路由
主机路由的子网掩码是255.255.255.255
默认路由的子网掩码是0.0.0.0