IP(Internrt Protocol)网际协议
主要有三大功能:
寻址和路由
传递服务
- 不可靠,尽最大努力交付。可靠性由上层协议提供
- 无连接,即发送前不用建立会话。
数据报分段和重组
IP数据报格式
固定部分为20字节(一行4字节,5行);
可变部分最大为40字节;
则首部最大60字节。
下图为真实抓包所得结果:
Version对应版本
占4bit,指IP协议的版本。
如果为IPV6则版本号为6,即0110。
Header Length对应首部长度
占4bit,可表示的最大数值是15个单位(一个单位为4字节,eg:如图为0101,转换为十进制为5个单位,因为每一单位为4字节,则5*4=20字节),因此首部长度最大为 60字节。
Differentiated Services Filed为差分服务字段,对应服务类型
服务类型是早期的设计,现在叫差分服务;
占8bit,最后一位没有用,但必须为0。前七位分两部分:
1.优先级部分
3bit,范围为0~7。表示数据报的优先级。数值越大优先级越高。
eg:网络传输中文字包与图片包的优先级就不一定一样。
2.服务类型部分D T R C(TOS)
保证传输过程差异化处理。
eg:网络中有的数据包要求最小延时,即响应速度快,而有的数据包非常大,不要求高速而要求网络有较大吞吐量,即网络一次可传输较多数据。这些都由DTRC决定。
D:delay,为1表示数据包要求低延时。
T:throughput,为1表示数据包要求高吞吐量。
R:reliability,为1表示数据包要求高可靠性。
C:cost,为1表示数据包要求最小代价。
DTRC同时只能有一位为1
如图为实际抓包
当前使用的不是服务类型,而是差分服务
最后一行的后两位为00,没有使用。前6位已经使用。
前6位有3种分类:(定义了64种不同的服务)
1.最低位为0,表示IP数据报内容为因特网指定的区分的服务(抛弃优先级、DTRC之说)。
2.低两位为11,表示由本地指定。
3.低两位为01,表示为一个临时的、实验性的数据包。
Total Length对应总长度
占16bit,指首部和数据之和的长度,单位为字节,因此数据报最大长度为2的16次方减去1即65535字节(FFFF转换为十进制为65535)。
总长度必须不超过最大传送单元MTU。
Identification对应标识
占16bit,是一个计数器,用来产生数据报的标识。
较大的数据报若一次不能传输,进行分片发送,每个分片标识位相等。到达目的端后分片重新组装。
Flags对应标志
占3bit,从16bit到18bit分别为:16bit保留位为0,17bit命名为D(Don’t Fragment)位,18bit命名为MF(More Fragement)位。D位为0表示允许分片 ,M位为1表示此数据报曾被拆分,还有同伙。M位为0表示最后一个分片。
Fragment offset对应片偏移
13bit,较长的分组数据报在分片后某片在原分组中的相对位置,方便组装。以8个字节为偏移单位。
片偏移计算如下:
Time to live对应生存时间
8bit,限制数据报在网络中的生存时间。每经过一台路由,生存时间的值减一,单位为跳数,当为0时丢弃报文。防止出错时数据报在网络中迟迟不去交付占用带宽。
Protocol对应协议
8bit,指出此数据报携带的数据使用何种协议,以便目的主机的IP层数将数据部分上交给哪个处理过程。
Header checksum对应首部校验和
16bit,只检验数据报的首部,不包括数据部分。
这里不采用CRC检验码而采用简单的计算方法。
Source对应源地址
4字节。
Destination对应目的地址
4字节。
可变部分
如抓包图就没有可变部分。