IP是TCP/IP协议族中最为核心的协议,TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。IP主要功能是寻址与路由和分片与重组。
对于主机来说,IP路由选择是非常简单的。如果目的主机与源主机直接相连或都在一个共享网络上,那么IP数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制,IP是不可靠的数据报传送服务,不能保证IP数据报能成功地到达目的地。
当路由器从一个大MTU值的网络上接收数据,并将数据报转发到具有较小MTU值的网络上时,就需要对数据报进行分片处理,并在最终的目的地进行重组。IP是无连接的数据报传送服务,每个数据报的处理都是相互独立的,IP数据报可以不按发送顺序接收。
IP首部格式
/* IP头部长度 */
#define IP_HLEN 20
/* 协议类型 */
#define IP_PROTO_ICMP 1
#define IP_PROTO_UDP 17
#define IP_PROTO_UDPLITE 136
#define IP_PROTO_TCP 6
struct ip_hdr {
PACK_STRUCT_FIELD(u16_t _v