互联网控制消息协议ICMP
- 为什么需要ICMP
- IP分组传送不可靠,可能遭遇各种问题(丢包,可能发生拥塞,产生很大的延迟、抖动等)
为了解决这些问题设计了IP协议的姊妹协议ICMP,它可以向源报告拥塞、超时、目标不可达等问题,也可以用来测试网络(ping、tracert)
ICMP消息格式
ICMP被封装到IP分组的数据域中,这个时候IP报头的协议字段值为1,ICMP数据报分为ICMP头标和数据,头里包括类型,代码和校验和。
ICMP的应用
- ping
- ping时,源机向母的站点发送一个icmp回声请求报文。目的站点接收到后,必须向源站点发挥一个ICMP回声应答报文,源站点收到应答报文且其数据和发出的数据相同,则目的可达。
** ping可以做的事情**
测试TCP/IP是否正常工作 | ping 127.0.0.1 |
---|---|
网络设备是否正常 | ping 本机IP地址 |
检查对外连接的路由器 | ping 默认网关 IP |
检查与某台设备的畅通情况 | ping IP |
检查DNS设置 | ping www.scut.edu.cn |
DNS 反向查询 | ping -a ip地址 |
- 当ping不同时,如果想知道是哪一个环节出现故障,则可以使用tracert,tracert可以通过ICMP超时报文来得到一张途径的路由器列表(相对稳定的网络tracert才有意义)
- 路径MTU(PMTU):动态发现互联网上任意一条路径的最大传输单元的技术(以太网的MTU=1500字节),当超过一个网络的MTU,网络将无法承载这个数据,这个时候需要进行分片,但是分片不安全,所以最好源机一开始就知道网络中的最小MTU。而PMTU算法就可以通过使用ICMP协议来发现网络中的最小MTU。
地址解析协议ARP
如果发放只知道对方的IP地址,而不知道对方的MAC地址怎么办?
- 这时候就需要地址解析协议ARP(Address Resolution Protocol),运行在局域网中,他将目标机的IP地址映射到MAC地址上。当主机A向同一个局域网内的主机E发送消息,而不知道他的MAC地址时,会发送ARP请求,同一局域网内的所有主机都会收到这个请求,但只有主机E会应答,那并告知对方自己的MAC地址。
ARP请求帧的格式:在这个帧中目的地址是48个1,广播地址
ARP应答帧:目的地址有明确的地址,即是单播回请求机,
- 为了让ARP工作的更高效,可以采用一些优化措施:1). 见一个ARP表缓存ARP的结果,2). 用ARP请求中的源信息来更新ARP表 3). 每一台主机在启动的时候回广播自己的IP地址与MAC地址映射对,这时候ARP请求帧的目标ip是他自己ip。
- ARP是一个二层协议,当目标机是一个远程机时,怎么办?
- Host1 想跟Host4 进行通信的时候,首先发现他们不在同一个局域网内,这时候Host1将通过默认网关(在上网时配置好的,或主机通过DHCP协议自动获取的),对外进行通信,这时候默认网关收到ARP请求后会将自己的mac地址发送给Host1,host1 将吧这个Mac地址封装到帧中,Host1将数据法向默认网关,默认网关将数据发向host4所在的网络,在最后一个网段通过MAC寻址定位到了host4。 **数据在途径每一个路由器或默认网关的时候头中的源IP地址和目的IP地址都不会发生改变,而MAC地址一直在发生改变。
- 为了减少ARP请求,每个设备都有自己的ARP表包括路由器,这个ARP表是自动建立、更新 和维护的。
- 通过广播ARP请求中的源设备信息添加和更新表
- 利用自己的ARP请求之瘾大信息添加和更新表
- 删除超过一定时限的信息
- ARP表的动态维护,减少了人工操作和ARP请求的次数,但是同时也带来了安全隐患,局域网中经常出现ARP病毒,要彻底消除ARP病毒,只需要静态绑定IP地址和MAC地址即可
拥塞控制
当一个网或子网的一部分出现太多分组的时候,网络的性能开始急剧下降,这就是拥塞。网络出现拥塞的时候,分组被丢弃、重传,导致网络吞吐量急剧下降,甚至无法传输分组。
拥塞控制的两类措施
- 开环
开环是试图通过良好的设计来避免拥塞的发生,它的本质是从一开始就保证问题不会发生,开环决定不考虑网络的当前状态,他是提前考虑;但网络变换太快,很难准确估计需求,即使超前的设计,随着时间的推移,也会越来越力不从心。所以更多的时使用闭环控制。
- 闭环
闭环控制是建立在反馈环路上,分为三步:1). 监视系统,发现网络在何时何地发送拥塞;2). 传递拥塞信号:将拥塞信号传递到可以解决问题的地方;3). 调整运行,控制拥塞
- 如何知道何时何地发生拥塞?可以通过查看一些参数:比如,拥塞度量:因为缺乏缓存空间而丢弃的分组百分比;平均队列长度;超时和重传的分组数;平均分组延迟;分组延迟的标准方差。
- 检测到拥塞后怎么办? 拥塞信息传播
- 检测到拥塞的路由器发送一个警告分组给流量源,但是这个消息可能无法到达源
- 其他方法:每个分组可以保留一位或一个域,当拥塞度量超过阈值时候,路由器填充该位域,以此警告他的邻居。
- 其他方法:主机或路由器周期性的向外发送探寻分组,显示的询问有关拥塞的情况,然后,再有问题的区域利用回收的信息来路由流量
怎么解决拥塞问题
拥塞根源:负载>资源措施就分为两大类
- 降低负载
- 拒绝为某些用户提供服务
- 给某些服务降低等级
- 绕开拥塞点
- 增加资源
- 某些点之间增加通道,增加带宽
- 启用空闲的光纤,路由器
- 数据报子网中的流量限制方法
- 每台路由器监视它的输出线路和其他资源的使用情况
2)每条线路和一个实变量u关联在一起,其值位于(0.0-1.0)之间
3)无论何时,只要u超出了阈值,对应的线路就进入到警告状态
4)每个新到达的分组都将被检查,看他的输出线路是否处于“警告状态”,处于“警告状态”可以采取抑制分组的措施
- 负载脱落 (分组丢弃)
1)随机丢弃
2)丢弃新到达的分组(葡萄酒策略,适合文件传输类)
3)丢弃早到达的分组(牛奶策略,适合多媒体类)
4)丢弃不太重要的分组
随机早期检测(RED):在情况恶劣之前,早早的开始丢弃分组,
注:主要参考袁华老师课程