本文照下图对每个字段依次做简单介绍:(此图来自TCP/IP详解卷一)
图中前20字节(有的IP数据报有特殊选项另算字节数)被称作IP数据报首部,TCP/IP数据报首部均使用big endian字节序传输,本文将对这20个字节进行介绍:
1、4位版本字段:目前版本IPv4,故版本号为4;
2、4位首部长度字段:指IP数据报首部长度(以字为单位),例如无选项字段,则取20;
3、8位服务类型字段(TOS):从左至右依次是 3bit优先权字段(现已被舍弃) 1bit最小延时 1bit最大吞吐量 1bit最高可靠性 1bit最小费用 1bit未用(置0)
中间这4个位只能选其一或者都不选,不选意味着是一般服务;
4、16位总长度字段(字节数):IP数据报长度,也就是数据报首部和数据内容的字节数,利用首部长度字段和总长度字段就可以知道IP数据报重数据内容的起始位置和长度;
5、16位标识字段:通常没发送一份报文加1;
6、标识和偏移字段:在讨论分片是使用;
7、8位生存时间字段(Time to life):由源主机设置(通常为32或者64),一旦经过一个处理它的路由器就减一,若减到零数据报丢弃;
8、8位协议字段:根据他可以知道是哪个协议向它传递数据,当目的主机收到以太网数据帧是,数据就开始从协议栈中由底向上升,
同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接受数据的上层协议。这个过程叫做分用。
9、16位首部校验和:在我的上一篇博客《IP校验和原理》一文中进行了详细讲解;
10、32位的源、目的地址:IP地址而已;