IP协议报文

  • Post author:
  • Post category:其他




一、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地。



版权声明:本文为a15980352273原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。