IP数据包格式与ICMP,ARP协议

107 阅读7分钟

IP数据包格式

数据包处于7层原理中的网络层。
网络层的功能:
定义了基于IP协议的逻辑地址,就是ip地址
连接不同的媒介类型
选择数据通过网络的最佳路径,完成逻辑地址寻址
数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP

数据封装的时候在网络层会封装ip地址的头部,形成ip数据包
IP数据包格式(分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分

image.png
版本号(4bit):指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100 十进制 是4
首部长度(4):IP数据包的包头长度(不包括数据)
优先级与服务类型(8):该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,服务类型定义了如何处理数据一般没有使用
总长度(16):IP数据包的总长度,最长为 65535 字节,包括包头和数据
标识符(16):该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片数据分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包
标志(3):和标识符一起传递,指示不可以被分片或者最后一个分片是否发出(完整)
段偏移量(13):一个数据包需要分片,指明这个分片举例原始数据开始的位置,作用重组数据
TTL(time to live)生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器 -1,当TTL的值为0时,该数据包将被丢弃 0-255
协议号(8):封装的上层哪个协议,ICMP:1 TCP:6 UDP:17
首部校验和(16):这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)
源地址(32):源ip地址,表示发送端的IP地址
目标地址(32):目标ip地址,表示接收端的IP地址
可选项:选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据
根据实际情况可变长,例如创建时间等 image.png
上图来自网络翻译版
另外可以通过TTL(生命周期)来确定自己的系统:
windows系统 128 左右
Linux系统 64左右

ICMP协议

Internet控制消息协议ICMP (Internet Control Message Protocol)是IP协议的辅助协议 ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
icmp作用
检测网络的双向联通性
icmp常用命令有两个
tracert : 追踪分析数据包在网络中传输时经过的路径,并输出到目标地址的延迟情况和节点信息。
ping : 测试双向是否联通

ping 空格 IP地址 [选项]
-l 指定数据包的 大小
-t 长ping
-& 后台运行
-w 超时等待
-n 指定ping次数
tracert:
-d:表示不让 tracert 根据节点主机名查找路由的 IP 地址,直接进行路由跟踪。当路由器不支持ICMP/UDP/ICMPv6 数据包时,建议使用该选项。
-h maximum_hops:指定最多经过多少个节点进行路由跟踪,默认值为 30。使用该选项可以更改该值。
-j host-list:枚举一个节点列表,并在路由跟踪过程中只走该列表中的节点。
-w timeout:设置等待每个回复消息的超时时间,默认值为 4000 毫秒。使用该选项可以更改该值。
-R:指示 tracert 跟踪路由时,使用“参考路由”而不是“严格源路由”。如果启用了该选项,则可以跨越某些无法到达的能够到达目标的路由器。
-S srcaddr:指定源地址。如果在单个计算机上安装了多个网络适配器,则使用该选项可以指定从哪个适配器发出路由跟踪请求。
-4:强制使用 IPv4 进行路由跟踪。
-6:强制使用 IPv6 进行路由跟踪。
target_name:表示要查询的目标 IP 地址或主机名。

ARP协议

什么是ARP
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存。
简单来说就是在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址
ARP工作过程

假设PC1和2在同一个网段,PC1要向PC2发送信息,具体的地址解析过程如下:
1.当PC1想发送数据给PC2,首先在自己的本地ARP缓存表中检查主机PC2的MAC地址是否存在。如果找到了对应的MAC地址,则PC1直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给PC2。
2.如果PC1在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为PC1的IP地址和MAC地址,目标IP地址和目标MAC地址为PC2的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即PC2)会对该请求进行处理。 如果发现请求中IP地址与自己IP不匹配,则丢弃ARP请求。
3.PC2比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即PC1)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给PC1,其中包含了自己的MAC地址。
4.PC1收到PC2发的ARP回复消息,将PC2的IP和MAC地址添加至自己ARP缓存表中,本机缓存是有生存期的,默认ARP缓存表有效期120s。当超过该有效期后,则将重复上面过程。PC2的MAC地址一旦确定,PC1就能向PC2发送IP信息以单播方式与PC2通信。