一个IP分组由首部和数据两部分组成。首部的前一部分是固定长度的, 共20B, 是所有IP分组必须具有的。在首部固定部分后面是一些可选字段, 其长度是可变的。 IP数据报的格式如下图所示:

IP首部的字段含义如下:
4字节(32bit)为单位, 即报头的最大长度可以为15*4B=60B, 除去固定部分的长度20字节, 可变部分的长度最大为40字节。bit 0~2: 优先级bit 3: 延迟, 0 = Normal Delay, 1 = Low Delaybit 4: 吞吐量, 0 = Normal Throughput, 1 = High Throughputbit 5: 可靠性, 0 = Normal Relibility, 1 = High Relibilitybit 6~7: Reserved for Future Use. 6: 开销(路由代价); 7: 仍为保留MTU(最大传输单元)时, 必须分片, 此时这个标识字段的值被复制到所有数据分片的标识字段中, 以便这些分片在达到最终目的地时可以重新组合起来。R(Reserved)、DF(Don't Fragment)、MF(More Fragment), 目前只有后两位有效, DF=1表示不分片, DF=0表示分片; MF=1表示后面还有分片,MF=0表示这是最后一片。8B为偏移单位, 所以一个分片的长度一定是8B(64bit)的整数倍
MTU=1500时, 一个大小为3000字节的数据经过该接口, 会被分为3段, 第一段分组总长度为1480+20, 第二段也为1480, 第三段为40, 那么第一段的分段偏移为0, 第二段分段偏移为1480/8=185, 第三段为185+185=370TTL减1, 为0时则丢弃该分组。推荐的初始值由分配数字RFC指定, 当前值为64, 发送ICMP回显应答时经常把TTL设为最大值255ICMP)IGMP)TCP)UDP)IDRP)RSVP)GRE)NHRP)IGRP)OSPF)现在的IP网络使用32位地址表示, 以点分十进制表示. IP地址由网络号和主机号两部分组成, 根据网络号的不同分为A类地址、B类地址、C类地址、D类地址和E类地址5种类型, 如下图:

202.98.174.0202.98.174.255127.0.0.0网络保留作为环路自检地址0.0.0.0表示本网络上的本主机255.255.255.255表示整个TCP/IP网络的广播地址, 由于路由器对广播域的隔离, 所以等效为本网络的广播地址NAT网络地址转换(NAT)通过将专用地址转换为公用地址, 隐藏了内部网络结构, 节省了IP地址消耗. 私有IP必须经过NAT转换成公网IP才可用于互联网. NAT路由器使用NAT转换表(存放着私有IP:端口到全球IP:端口的映射)可以把多个私有IP都映射到同一个公网IP上.
私有IP地址网段如下:
10.0.0.0 ~ 10.255.255.255172.16.0.0 ~ 172.31.255.255192.168.0.0 ~ 192.168.255.255注意: 普通路由器转发IP数据报时不改变源和目的IP地址, 而NAT路由转发时一定会改变其IP地址, 而且需要查看传输层的端口.
子网号字段, 两级IP地址变成三级, 即三级IP地址由网络号, 子网号和主机号三部分组成。主机号这部分进行再划分, 不会改变原来的网络号, 从IP数据报中无法判断源或目的主机是否进行了子网划分子网掩码是跟IP地址相对应的32位二进制串, 1对应网络号及子网号, 0对应主机号。子网掩码与IP地址按位相与(AND)即可得到相应子网的网络地址。 如果一个网络没有划分子网, 那就使用默认子网掩码, A、B、C类地址默认的子网掩码分别为255.0.0.0, 255.255.0.0和255.255.255.0
子网掩码是一个网络中的重要属性, 路由之间交换信息时, 必须把自己所在网络的子网掩码告诉对方。在使用子网掩码的情况下:
目的网络地址, 子网掩码, 下一跳地址CIDRCIDR(Classless Inter-Domain Routing)消除了传统的A、B、C类地址以及划分子网的概念, 更加有效地分配IPv4的地址空间, 提高了IP地址空间利用率, 减小路由表大小, 提高路由转发能力。 它有如下特点:
CIDR使用“斜线记法”(又称为CIDR记法), 即IP地址/网络前缀位数, 如128.14.32.5/20表示掩码为前20位全1和后12位全0, 即网络前缀为128.14.32.0CIDR地址块, 一个CIDR地址块可以包括多个ABC类地址最长前缀匹配原则, 选取最长的网络前缀匹配