标签:
恰好学到了网络数据包,写下来加深一下个人理解,仅此而已。
定义:TCP/IP协议定义了在INTERNET(网络层)上传输的包,称为数据包;
IP数据包(IP DataGram)组成:首部,数据部分;
首部:分为固定部分和可变部分,固定部分(4字节*5)20个字节,可变部分长度可变。
下面解释固定部分各字段含义:
1.版本:占4位,指IP协议的版本。目前广泛使用的IP协议版本号为4(IPV4)。
2.首部长度:占4位, 最小长度为5(0101)即5个字长20字节,最大长度为15(1111)即60字节。IP数据包数据部分永远在4字节整数倍开始,当IP分组首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
3.区分服务:占8位,用来获得更好的服务。旧标准中叫服务类型。
4.总长度:占16位,指首部和数据之和的长度,单位为字节。最大长度为pow(2,16)-1=65535;
5.标识(identification):占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器加1,并将此值赋给标识字段。但这个“标识”不是序号,因为IP是无连接服务,数据报不存在按序接受问题。当数据报长度超过网络MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。相同的标识字段的值使分片后的各数据报能正确的重装成为原来的数据报。
6.标志(flag):占3位,目前只有两位有意义。
1.标志字段中的最低位记为MF(More Fragment)。MF=1,表示后面"还有分片"的数据报。MF=0表示这是若干数据报片最后一个。
2.标志字段中间一位记为DF(Don`t Fragment)。意思是不能分片。只有当DF=0时才允许分片。
7.片偏移:占13位。片偏移指出:较长的分组在分片后,某片在原分组的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为单位。也就是说,除了最后一个分片,每个分片的长度一定是8字节的整数倍。
8.生存时间(Time To Live):占8位,表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制的在英特网中兜圈子,因而白白消耗网络资源。最初设计是以秒为单位。每经过一个路由时,就把TTL减去数据报在路由器消耗掉的一段时间,当TTL为0时,丢弃此数据报。后把TTL字段功能改为“跳数限制”。路由器在转发数据报之前就把TTL值减1,若TTL值减少到0,就丢弃这个数据报,不再转发。
9.协议 :占8位,协议字段指出此数据报携带的数据是使用哪种协议,以便于目的主机的IP层知道应将数据部分上交给哪个处理过程。
10.首部检验和 :占16位。这个字段只检验数据报的首部,不包括数据部分(减少计算工作量)。
11.源地址:占32位
12.目的地址 :占32位
IP数据报首部的可变部分:这是一个可选字段。选项字段用来支持排错、测量以及安全等措施,内容丰富。此字段长度可变,1个字节到40个字节不等,取决于所选择的项目。
目前任选定义如下:
1.安全和处理限制
2.记录路径
3.时间戳
4.宽松的源站路由
5.严格的源站路由
IP数据报看起来内容蛮多的,其实理解了它的组成字段就容易多了,也为后续的学习打牢基础。
标签:
原文地址:http://blog.csdn.net/wind14/article/details/51322555