三层转发原理:
IPV4 头部:
长度(20B~60B)
##【头部结构】:
第一行(32bit):版本 (4bit) 首部长度(4bit) TOS(8bit)总长度(16bit)
第二行(32bit):标识(16bit) 标志(3bit)偏移地址(13bit)
第三行(32bit):TTL(8bit)协议标识(8bit)校验和(16bit)
第四行(32bit):源IP
第五行(32bit):目的IP
//标准的头部是包含前5行,每一行4个字节,共20个字节
第六行(32bit):填充字段 (40B) 填充时需要按照4的倍数填充
***************************************************************
如果把首部长度全部填充为1的话,
是15,表示15行,IP头部长度是15*4=60B;
一般情况下是5,标准头部,表示5行,IP头部长度是5*4=20B;
TOS:服务质量:给IP包打标签,通过这个字段给IP包进行分级,
通过不同的分级,可以标识IP包的优先性,针对不同的级别执行优先转发。
**************************************************************************
偏移地址:分片
************************************************************************
TTL:生存时间:1.防止三层的环路问题,(不是路由的环路是ip包的 环路) 2.可以限制IP包的转发距离
二层为什么会有广播风暴会有环?
因为在二层的帧头里面是没有防环机制的,需要加协议,比如生成树来防止环路。
TTL值是8个比特,25
5环,减到0,IP包会被丢掉
TTL值减到0,IP包会被丢掉,对还是不对?不对
TRACE的原理:
可以做一个追踪,首先将TTL设为1,然后设为2,设为3,这样把网络上经过转发的所有设备的IP地址拿过来。
*PC1->1:(类比快递)
1.发送TTL=1报文,校验IP包的完整性checksum,TTL-1=0;
2.TTL=0,需要判断一下目标IP地址是不是本地的IP?;
3.如果不是本地的IP,需要说明 这个IP包是需要转发的,但是TTL=0,需要被丢弃;
4.丢弃以后会告诉发送源什么原因造成丢包的,会回送ICMP超时应答,丢弃的原因:TTL超时应答。
通过应答,
可以获取到这台设备的IP地址;
//trace/ping 这两个是工具,不是协议
PING-ICMP
TRACE:
tracert(ICMP)
traceroute(UDP)
可以 通过tracert可以把其他设备的IP给捞过来:通过TTL值。
//看书:6-ICMP
TTL超时 代码:110
*PC1->2
TTL=2
*PC1->3
TTL=3,IP包不需要转发,接收。
3可能会给源PC1回送ICMP端口不可达的报文-tracerout(IP的上层 封装的是UDP的协议,UDP端口号大于30000,UDP进程下没有开这个 端口号,会回送端口不可达的报文)代码:33
3可能会给源PC1回送reply信息-tracert;代码:00
ping返回TTL值:靠ICMP的Reply:看对端的TTL值信息。
ping网关:255
ping百度:55
时间:有一个定时器
*****************************************************************************
协议标识
是为了标识上层的协议:[1=icmp 6=tcp 17=udp 88=eigrp 89=ospf
47=GRE]
*****************************************************************************
校验和
只针对包头做校验,而不包括所传递的数据
*****************************************************************************
分片
为什么会有分片?
要传递的数据大于MTU值最大传输单元1500B;
MTU标识接口一次发送的IP数据包 的长度可以到达多少个字节;
IP 3000,按MTU的大小值来进行分片;
标识字段-用来标识同一个IP包,到目的可以进行重组;
标志位(3bit)
DF = 0:IP包可以被分片; 1:IP包不能被分片;默认是0
MF = 3745
************************************************************************
##
实验:
???
【关于DF分片的实验】
1.实验现象:
Packet sent with the DF bit set
MMMMMM
ping 3.3.3.3 size 1500 df-bit re100
df-bit不能被分片
2.实验过程:
3.实验分析:
R2收到以后需要转发,IP包的长度需要大于出接口的MTU值,需要分片。但是IP包里面IP包置位了
(ping 3.3.3.3 255.255.255.255 siza 1500 df-bit),说明IP包不能被分片,丢包。
这时,丢弃者就会像发送源回送一个ICMP差错应答,原因就是IP包不能被分片,同时回送的IP包里面还包括这台设备出接口的MTU值
。 代码:34
是否分片只看出接口的MTU值,和入接口是没有关系的,入方向收包是不检查MTU的,只在出方向转发的时候才会检查MTU,
所以,R3回复的时候,fa0/0没有改变MTU,3返回的包没有问题。
4.实验结论:不能被分片造成丢包的
5.抓包分析:
在R2的f0/0上抓包分析
看Request里面,DF位,置1
注意:在校园网里面就,保证MTU的一致性
实际上,在IPv4里面
PPPOE MTU值改成1492,为什么?
标准的IP头【IP+上层协议+数据】,因为后续需要增加一些头部,PPPOE需要增加PPOE的头部和PP的头部,占了8个字节,如果按1500来添的话就会造成分片。
MPLS往里插标签,IPsec里添加ESP 都会造成分片;
丢了一片就会造成不通或者时通时不通,所以要保证整个网络MTU的一致性。
MTU一致性的测试方法:PMTUD(Path MTU Discovery,路径MTU发现)
方法:发个1500B或2000B报文,将DF比特位置位,经过一台设备如果出接口MTU值小于1500B会丢包;
丢包会回送一个ICMP的差错应答,告诉你因为什么原因丢包,同时这个报文里面会携带丢弃者的MTU值,可以通过这种方法获得整个转发路径上面的最小设备的MTU值。
1->2
获取1300,用1300发
1->3
获取1000,用1000发
1->4
获取最小MTU,用最小MTU去封装数据报文
这也是校园网的一种排查思路。
************************************************************************
偏移地址:用来标识分片的起始位置,通过起始位置知道哪片是第一片,哪片是第二片,然后做一个重组
//看书:分片-在UDP章,TCP不会被分片,因为TCP有MSS,可以自动分段,避免分片
如果用UDP封装数据的话,很多时候会限制填充的数据长度,这个数据长度是512B
rip 里的response报文可以传送多少条路由?
跳数的话:最大15跳,16不可达;
25条路由:rip每条路由的长度是20个字节,20*25=500B
rip通过UDP承载的,UDP头部长度:8B rip头部长度:4B
500+8=4=512B;
为什么rip的每个response报文最多只能传送25条路由?
是因为它已经限定了UDP报文的长度,用UDP传送数据的话,很多协议会将最大填充数值固定在512B,不能太大,太大就会造成IP分片;为了避免分片
***************************************************************************
ARP:地址解析协议
用于解析MAC地址,实际上,在LAN网中才有ARP,在WAN中是没有ARP的,因为不需要,WAN网中没有MAC
1.ARP的报文类型:
两种:request reply
2.ARP的报文长度:
28B
3.ARP的报文结构:
硬件类型
协议类型
硬件长度
协议长度
OP字段[1=request 2=reply]
发送方
MAC
发送方IP
目的方MAC
目的方IP
4.ARP是靠什么协议来承载的?
ARP算是2.5层协议,不算2层,也不算3层(ARP没有IP头部)
5.ARP报文长度是28B,它满足最小MTU值吗?
最小MTU是46B,ARP需要填充0来满足最小MTU的长度
6.ARP和RARP有什么区别?
ARP:将IP解析成MAC
RARP:将MAC解析成IP(无盘工作站:只有服务器才有硬盘,PC没有硬盘,使用网卡启动加载系统:网卡会发送一个RARP广播报文,通告自己的MAC地址,服务器收到后会给你回送一个IP,PC获取IP后可以从服务器加载系统,对服务器,网络性能要求比较高)
所有的request报文都是广播;
reply报文都是单播;
7.ARP的类型:
普通ARP(获取MAC地址)、
代理ARP、
免费ARP(1.IP地址冲突检查 2.通告MAC地址)
(自己发自己一个ARP请求,如果收到一个ARP应答,表示网络 中有跟我一样的IP地址,就会报错;
免费ARP也会去刷新MAC地址);
8.收到一个ARP请求后,在本地会 生成ARP的映射表
show arp
arp -a 看到绑定关系
在思科路由器里面ARP表项的老化时间是多长?
4个小时
【实验验证】接收到下面哪个报文会刷新ARP的4个小时的老化时间?
1、ARP request ?
2、免费ARP ?
只有免费ARP才会刷新ARP的time out这个定时器
来自为知笔记(Wiz)