一、IP协议报文
IP协议报文结构如下图所示:
IP报文中包含
:
(1)
4位版本号
,如果是IPv4,版本号就是4。
(2)
4位首部长度
,用于确定报头长度,假如是“1111”,则报头长度为4×15=60。
(3)
8位服务类型
,其中4位TOS字段类型:最小延迟,最大吞吐量,最高可靠性,最小成本(4种只能选其一)。
(4)
16位总长度
,报文长度,结合首部长度获得的报头长度可将报文和报文分离。
(5)
16位标识
,如tcp中的序号,区分各个报文,确定是那个报文,保证唯一性。
(6)
3位标志
,第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文,第三位表示更多分片,1标识后续还有报文 ,0标识没有报文,后面没有分片了。
(7)
13位片偏移
,是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了)。
(7)
16位校验和
,校验数据是否有错。
(8)
32位源地址和目的IP
,确定从哪来到哪去。
(9)
8位生存时间
,经过一个节点生存时间–,减完丢弃。
(10)
8位协议
,上层协议种类。
(11)
选项
。
(12)
数据
。
二、分片问题
1,为什么要分片?
mac帧规定最大的有效载荷为MTU,最大字节1500,超过MTU就需要进行分片。
2,如何进行分片和组装?
通过16位标识,13位片偏移和3位标志分片进行分片和组装,如下图所示:
一个报文分片之后,每片的标识都相同,在接收端就可以把标识相同的报文收集,收到标志位0的片就说明这是最后一片,后续根据片偏移排序组合。
3,丢包怎么识别?
(1)如果没有收到片偏移为0的片,说明头丢了。(2)根据片偏移排序,中间连不起来,说明中间丢了。(3)没有收到标志为0的片,说明尾丢了。
三、网段划分
1,IP地址怎么组成?
IP地址 = 网络号 + 主机号
2,网络号和主机号怎么分开?
根据
CIDR规则
,通过额外子网掩码来区分网络号和主机号,IP号和子网掩码相与,得到的就是网络号,属于的就是主机号,具体操作如:假设我们的IP为140.252.20.68,子网掩码为255.255.255.0,那么IP号与子网掩码就得到网络号140.252.20.0,那么主机号就是68.。
3,一个网段中的主机号是怎么分配的?
通过路由器自带的DHCP功能,对子网内的主机自动分配主机号,避免手动管理IP的不便。
四、特殊IP地址
1,将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
2,将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
3,127.的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
五、IP地址不足问题
IP地址一共2^32个,如果不够有如下解决方案:1,动态地址分配,连网设备分配IP,不连网就不分配。2,NAT技术。3,使用IPv6
六、IP数据包如何传输
当IP数据包, 到达路由器时, 路由器会先查看目的IP,路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;依次反复, 一直到达目标IP地。