ip包头分析与静态路由

ip包头分析:

1 版本

(1)长度:4bit。

(2)功能:说明是Ipv4还是Ipv6。

(3)例子:0100(ipv4)、0110(ipv6)。

2 首部长度

(1)长度:4bit。(10进制中的每个1代表4个字节)

(2)功能:用于标识IP包头的长度,以字节为单位。由于IP包头部长度可变,因此需要定义。

(3)例子:首部长度最小二进制为“0101”,IP数据包长度20字节;首部长度最大二进制为“1111”,IP数据包长度60字节

3.优先级与服务类型

(1)长度:8bit。

(2)定义:前三个bit代表优先级(QOS),中间四个bit表示服务类型(TOS),最后一个bit暂未启用。若字母表示如下:PPPDTRC0.

(3)PPP:定义包的优先级,取值越大数据越重要。

PPP 优先级

000 普通 (Routine)

001 优先的 (Priority)

010 立即的发送 (Immediate)

011 闪电式的 (Flash)

100 比闪电还闪电式的 (Flash Override)

101 CRI/TIC/ECP

110 网间控制 (Internetwork Control)

111 网络控制 (Network Control)

(4)DTRC:各自代表一个服务类型。

DTRC

服务类型

取值含义

D

时延

0:普通 1:延迟尽量小

T

吞吐量

0:普通 1:流量尽量大

R

可靠性

0:普通 1:可靠性尽量大

C

传输成本

0:普通 1:成本尽量小

4 总长度

(1)长度:16bit

(2)功能:IP包的长度 (包括IP包头和上两层数据),以字节为单位。在当总长度大IP包最大长度65535字节。

(3)分片:总长度表示的是一个IP包的总长度,包括上三层数据总和。假如一个5层数据为4000个字节,IP包头为20个字节,TCP/UDP也为20字节,那么总长度为4040个字节。但是由于每个数据帧MTU最大值为1500,因此组成帧结构时需要先进行分片。

tips:

IP分片一般是在IP层完成的,也可以让应用层的软件来完成。

5 标识符

(1)长度:16bit。

(2)功能:用于判断IP分片是否属于同一个IP包。唯一的标识主机发送的每3一份数据报,由发送端主机生成,具有唯一性。同一数据包的不同分片之间标识符相同,不同数据包之间标识符不同。

6 标志

(1)长度:3bit

(2)功能:第1个bit保留(永远为0,代表未启用);第2个bit代表数据包是否分片(0分片,1未分片);第3个bit代表是否为最后一个分片(0是,1不是)。方便数据重组时,判断是否已经重组完成。

标志 含义

010 数据包不分片

000 表示该IP分片分片了,且是IP包的最后一片

001 表示该IP分片了,且不是IP包的最后一片,还有后续

7 段(片)偏移量

(1)长度:13bit。

(2)功能:在重组数据包时决定分片的先后顺序。表示分片时,每一个分片的数据字段偏移原始数据报开始处的位置。当IP包头的首部长度为20字节时,段偏移量一般为0或1480的整数倍

(3)泪滴攻击(TearDrop):指的是向目标机器发送损坏的IP包,诸如重叠的包或过大的包载荷。借由这些手段,该攻击可以通过TCP/IP协议栈中分片重组代码中的bug来瘫痪各种不同的操作系统。

eg:假如伪造3个帧,三个分片的标志分别为001、001、000;段偏移量分别为0、500、;这样,第二个分片就会偏移500,有一段数据与第一分片重叠,导致数据重组失败,计算机一直重组,导致计算机死机了。即使制定策略——重组失败就扔掉,但是还是可以一直伪造数据帧,把计算机的内存都占完。

(4)防御泪滴攻击:在服务器前加防火墙,过滤不安全的包。该方式能阻止不安全的包到达服务器,但是防火墙负荷大,当防火墙过载时,需要请求网络供应商提供流量清洗服务。

8 生命周期TTL(time to live)

修改 /etc/nginx/nginx.conf

(1)长度:8bit。

(2)功能:设定生命周期,防止数据包在网络上永久得循环下去,形成不必要的垃圾。若网络搭建成了一个环路,不设置TTL,数据包会一直循环下去。

(3)解释:在发送端发包时,会设定一个初始值,(Windows常大于100,linus常小于100),每当IP包经过一个路由器时,TTL值减少1,当如果TTL减少为0,则该IP包会被丢弃。

(4)应用场景:tracert跟踪,跳了多少跳;Ping 返回的TTL值是最终TTL值。

在这里插入图片描述

tips:

1)别看世界那么大,其实跳过的路由器没那么多。

2)TTL最大值为255.

9 协议号

(1)长度:8bit。

(2)功能:识别上层协议。

(3)常用协议号:

协议号

协议号二进制

协议

1

00000001

ICMP

2

00000010

IGMP

6

00000110

TCP

17

00010001

UDP

88

01011000

IGRP

89

01011001

OSPF

10 首部校验和

(1)长度:16bit。

(2)功能:用来校验IP包头的正确性,但不包含数据部分。 因为每个路由器要改变TTL的值,所以路由器会为每个通过的数据包重新计算这个值。

11 源IP地址

(1)长度:32bit。

(2)功能:标识了这个IP包的源IP地址。要注意除非使用NAT,否则整个传输的过程中,这个地址不会改变。

12 目标IP地址

(1)长度:32bit。

(2)功能:标识了这个IP包的目标地址。要注意除非使用NAT,否则整个传输的过程中,这个地址不会改变。

13 可选项

(1)长度:可变,最长320bit。

(2)功能:主要用于测试,由起源设备根据需要改写。

(3)可选项目包含以下内容:

1)松散源路由(Loose source routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,但是允许在相继的两个IP地址之间跳过多个路由器。

2)严格源路由(Strict source routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,如果下一跳不在IP地址表中则表示发生错误。

3)路由记录(Record route):当IP包离开每个路由器的时候记录路由器的出站接口的IP地址。

4)时间戳(Timestamps):当IP包离开每个路由器的时候记录时间。

5)填充,IP包头总体长度需要是32bit的整数倍,对可选项不足32bit整数倍的部分进行填充。

静态路由:

conf t

ip route 目标网段 子网掩码 下一跳ip

如:

ip route 70.1.1.1 255.255.255.255 192.168.1.1

默认路由:

conf t

ip route 0.0.0.0 0.0.0.0 下一跳ip

(在边路由使用默认路由即可)

浮动路由:

在静态或默认路由后加空格+数字(必须为正整数)

do sh ip route---------查看路由表

路由器原理:

当一个正常的五层帧进入路由器,先判断目标mac地址是不是自己的mac地址;如果不是则直接丢弃,如果是则解封装,ip进入路由内部,路由开始检查目标ip并检测路由表,如果路由表中没有则丢弃,并向源ip返回一个错误信息。如果有则按照路由表路由到出接口,然后准备封装帧头,源mac地址为出接口mac地址,目标mac地址检查自己的arp缓存表,查看有没有下一跳的ip mac地址,如果有则直接封装,如果没有则向下一跳发送arp广播请求,收到应答之后把下一跳的mac作为目标mac地址

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

claydemo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值