IP协议

首先IP协议是一种不可靠的协议,它提供的不可靠的通信服务称为数据包服务。主要负责对数据分组的寻址和路由。

IP协议

IP协议的核心是IP地址,在IP网络中为每一个主机都分配了一个IP地址。准确的说IP地址不是分配给主机的,而是分配给主机的网络接口卡(即网卡)。也就是说如果一个电脑有多个网卡,并且为每个网卡分配一个唯一的IP,这台主机就有多个IP地址。网络接口卡是主机与底层物理通信信道的连接,因此IP协议的数据传输过程如下:

IP分组

图1-IP分组在网络中的传输过程

IP地址是一个32位二进制数,分为网络号和主机号两部分。网络号很重要,路由器在转发分组时主要根据目的主机IP地址中的网络号进行转发。网路号的长度不定,一般有子网掩码来决定网络号的长度。子网掩码是一个有若干个连续的1和若干个连续的0组成的32为二进制数。路由器通过将分组中目的IP地址与子网掩码做逻辑与运算来获得目的网络号。不同网络之间的通信必须经过路由器。

IP分组

一个IP分组由首部和数据两部分组成。首部的前一部分长度是固定的20字节,固定部分的后面是一些可选字段,其长度是可变的,但是首部长度必须为4字节的整数倍,如果不满4字节的着整数倍需要进行填充。

IPv4数据报格式

接下来对IP数据报格式中的各个字段进行详解。

字段 长度 取值 描述 备注
版本 4bit 0100 表示IPv4  
首部长度 4bit 最大15 首部长度最大为60字节  
服务类型 8bit   区分服务  
总长度 16bit 最大65535 IP数据报最大长度为65535字节(首部+数据)  
标识 16bit   当数据包需要分片时,标识标记属于同一数据包的所有分片。  
标志 3bit   目前只有两位使用,
第一位MF,
MF=1,表示后面还有数据分片,MF=0,表示最后一个数据分片。
第二位DF,
DF=1,数据不能分片,
DF=0,数据可以分片。
 
片位移 13bit   某片数据相对用户数据起始字段的相对位置,以8个字节为单位,即每个分片的数据长度都是8字节的整数倍。  
生存时间 8bit 32/64,scapy默认64 TTL,数据报在网络中的寿命。以秒为单位。每经过一个路由器就减去在路由器所花费的时间,不足1秒,当1秒计算。当TTL减为0,丢弃数据报。  
协议 8bit 6-TCP,
17-UDP
由上层协议填充。  
首部检验和 16bit   只检查首部,不检查数据部分  
源地址 32bit   IP地址  
目的地址 32bit   IP地址  
选项部分 可变(0~40字节)   基本用不到  
数据部分 可变(0~65515字节)   用户自定义  
原文地址:https://www.cnblogs.com/wanhuan/p/5424231.html