IP报文格式学习笔记

来源:互联网 发布:特种设备考试软件 编辑:程序博客网 时间:2024/04/28 21:19

由于记性不好的原因, 一直对报文格式的字段记的不是很牢固, 故花了一天时间学习IP报文格式, 第二天来总结. 过两天再继续学习TCP和UDP.


IP报文格式如下图所示(图片来源—百度百科):

 

版本(Version, 4bit):为4代表ipv4, 为6代表ipv6

报头长度(Header Length, 4bit):一般为5, 代表IP首部一共占用20个字节. (4*5)

服务类别(Type Of Service, 8bit):

报文长度(Length, 16bit):  IP首部+数据部分的总长度, 一般再加上以太头长度即为数据包的长度.

标识(Identification, 16bit): 用于在IP层对数据包进行分段的时候,标识数据包.

标志(IP Flags, 3bit): 0x80---保留字段, 0x40---不分段, 0x20---还有更多的分段

分段偏移(Fragment Offset, 13bit): 本数据包的数据在分段中的偏移(需要再乘以8).

生存时间(Time To Live, 8bit): 本数据包的TTL.

用户协议(Protocol, 8bit): 1---icmp, 2---igmp, 6---tcp, 17---udp, 89---ospf.

报头校验和(Header Checksum, 16bit): IP首部的校验和.

源IP地址(Source IP, 32bit): 源IP地址.

目的IP地址(Destination IP, 32bit): 目的IP地址.

 

 

问题点:

1.   IP层的分片和重组分别发生在什么时候?

IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层。

 

2.   IP分片和TCP分段有什么区别?

IP分片的原因是MTU, TCP分段的原因是MSS.


3.      IP协议对分片进行重组的时候, 是不是也要像TCP协议一样, 启动一个定时器, 等到3片都到齐?

启用定时器.但只是一个针对分片重组的定时器。如果定时器超时还没有收到完整的数据包,则直接将数据包丢弃.

注: 关于这个问题, 今天专门去分析了协议栈的源代码. lwIP中并没有在ip层启动定时器, 只是简单的回收最旧的ip分片组. linux内核(2.6.18)的协议栈中确实有在ip层对分片做了定时器处理. 注册了一个timer, 当过期的时候, 回调函数会调用从而收受内存. 在linux内核协议栈中, ip分片的默认超时时间为600秒. (ipfragment.c中有源代码ip4_frags.secret_interval = 10 * 60 * HZ;)

最近刚好在关注TI5, secret站队很强大. 不知道内核源代码开发者为什么要用secret_interval 这样的名字~~


4.   IP层会不会对错误的数据包进行重传?

IP层不会对丢弃或者错误的数据包进行重传,但是上层协议可能会提供重传机制(tcp).

 

5.    为什么要避免IP分片

IP层是没有超时重传机制,一旦分片中有一个数据包丢失就只能由上层协议重传整个数据包,效率低下

使用UDP开发的时候,我们需要在应用层去限制每个包的大小,一般不要超过1472字节(即以太网MTU—UDP首部—IP首部),来避免IP层的分片。TCP程序由于有MSS, TCP协议本身会避免IP分片,则不用考虑这些.

 

6.   TOS的作用是什么?

RFC 791中定义了TOS位的前三位为IP Precedence,划分成了8个优先级,即:IP优先级字段。可以应用于流分类,数值越大表示优先级越高。IP优先权与CoS相同,有8种服务(07)可以标记。在网络中实际部署的时候8个优先级是远远不够的,于是在RFC 2474中又对TOS进行了重新的定义。把前六位定义成DSCP差分服务代码点(Differentiated Services Code Point),后两位保留。(总结:该字段比较复杂,以后可以做为专题再研究).

 

分片攻击

  这种攻击的原理是:在IP的分片包中,所有的分片包用一个分片偏移字段标志分片包的顺序,但是,只有第一个分片包含有TCP端口号的信息。当IP分片包通过分组过滤防火墙时,防火墙只根据第一个分片包的Tcp信息判断是否允许通过,而其他后续的分片不作防火墙检测,直接让它们通过。

这样,攻击者就可以通过先发送第一个合法的IP分片,骗过防火墙的检测,接着封装了恶意数据的后续分片包就可以直接穿透防火墙,直接到达内部网络主机,从而威胁网络和主机的安全。

 

 

下面这张图对IP报文格式描述的更加清晰:


0 0
原创粉丝点击