【计算机网络】(5)ping的过程分析+icmp协议

目录

一、ping

        1.1 过程分析

        1.2 ICMP协议

        1.2.1 iptables简要介绍

        1.2.2 路由追踪

        1.3 常用选项

        1.4 ping一台服务器ping不通的原因和解决方法

        1.5 ping命令的使用

        1.5.1 /etc/resolv.conf

二、5个路由器的静态路由实验

三、三层交换机

        3.1 实验

        3.1.1 实验图

        3.1.2 部分步骤详细操作

四、动态路由介绍

        4.1 IGP

        4.1.1 RIP

        4.1.2 ospf

        4.2 EGP

        4.2.1 BGP


一、ping

        1.1 过程分析

【1.电脑里】

        网络层:icmp协议(ip协议)

        数据链路层:帧封装(src ip;dest ip;src mac;dest mac)得到目的mac:查看路由表判断走哪个路由,查看arp缓存表,没查到就发送请求包

【2.交换机里】

        只看帧:不修改帧,只转发

        查看mac地址表:学习,转发

【3.路由器】

        会修改帧

        查看帧,解封装,再查看ip包,获取目的ip,查看路由表判断是否可达,如果不可达就丢弃,可达则判断走哪个路由,得到下一跳地址,查看arp缓存表,没查到就发送请求包

        会重新封装帧src会变为路由器本次发送口的地址,dest会变为下一跳的地址

【注】ping的时候,给对方发了多少数据多少个包,对方就要回复等量的数据和包==》如果ping包的数据太大,对方可能不会回复(因为对方设置了最大值,为了自身的网络安全)。

        1.2 ICMP协议

属于网络层协议

ping命令采用icmp协议,但icmp头部里没有封装源地址和目的地址,所以他会把自己的头部当作数据,再嵌套一个ip包头

定义:互联网控制报文协议(Internet Control Messages Protocol)它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

作用:是一个“错误侦测与回馈机制”,是通过IP数据包封装的,用来发送错误和控制消息。==》用来探测网络是否通畅,主机是否可达,路由是否可用。(探路)

数据包类型

        1. echo request 请求包 ==》类型 8

         2. echo reply 响应包 ==》类型0

ICMP头部包括:类型,数据……

         这个数据是随机产生的,只是为了探路

        1.2.1 iptables简要介绍

iptables 是一个防火墙工具

iptables -A INPUT -p icmp --icmp-type 8 -j DROP 可以使别人ping不通:将输入的icmp请求包全部丢掉

iptables -A INPUT -s 192.168.0.237 -p icmp --icmp-type 8 -j ACCEPT 允许192.168.0.237pint通

iptables -L 显示当前使用的iptables规则

iptables -F 清除规则

        1.2.2 路由追踪

路由追踪命令:

        Linux:tracepath

        WIndows:tracert

 【图片解释】tracepath默认会测30跳,此图中第6跳已经到了目标ip,所以后续都是no reply。

原理:利用了ttl的机制(ttl:每经过一个路由器时,就会-1,当=0时,收到数据的主机就会返回信息,告诉发送主机,数据包被丢弃)当对方给我们送来数据时,她的ip地址就暴露了。我们第一次发送数据将ttl设为1,第二次ttl=2,依次类推就可以知道路径上所有的IP地址

        1.3 常用选项

-s 可指定发送的数据大小 size

[root@localhost ~]# ping www.baidu.com -s 1223
PING www.a.shifen.com (183.232.231.172) 1223(1251) bytes of data.
1231 bytes from localhost (183.232.231.172): icmp_seq=1 ttl=128 time=25.4 ms
1231 bytes from localhost (183.232.231.172): icmp_seq=2 ttl=128 time=24.4 ms
1231 bytes from localhost (183.232.231.172): icmp_seq=3 ttl=128 time=26.5 ms
1231 bytes from localhost (183.232.231.172): icmp_seq=4 ttl=128 time=27.5 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3012ms
rtt min/avg/max/mdev = 24.472/25.988/27.534/1.152 ms

        1223(1251) bytes of data 为什么是1223字节?==》因为ICMP头部为8个字节      

        测试网络质量时,会加大数据的大小,ping很长时间(一天),最终网络质量通过丢包率和平均时间来判断。

-c 指定发送数据包的数量

-i 指定ping的间隔时间 0.1表示间隔0.1秒

[root@localhost ~]# time ping -c 4 -i 0.1 www.baidu.com
PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data.
64 bytes from localhost (183.232.231.174): icmp_seq=1 ttl=128 time=25.6 ms
64 bytes from localhost (183.232.231.174): icmp_seq=2 ttl=128 time=25.8 ms
64 bytes from localhost (183.232.231.174): icmp_seq=3 ttl=128 time=31.1 ms
64 bytes from localhost (183.232.231.174): icmp_seq=4 ttl=128 time=26.1 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 315ms
rtt min/avg/max/mdev = 25.660/27.235/31.195/2.299 ms

real	0m0.351s
user	0m0.000s
sys	0m0.005s

-w 期限 deadline

        指定ping不通时,最多等待的时长(最小可指定1秒)

[root@localhost ~]# time ping -c 1 192.168.0.99
PING 192.168.0.99 (192.168.0.99) 56(84) bytes of data.

--- 192.168.0.99 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms


real	0m10.006s
user	0m0.000s
sys	0m0.004s
[root@localhost ~]# time ping -c 1 -w 1 192.168.0.99
PING 192.168.0.99 (192.168.0.99) 56(84) bytes of data.

--- 192.168.0.99 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms


real	0m1.005s
user	0m0.000s
sys	0m0.003s

-W 超时 timeout

        只影响ping不同的情况

        1.4 ping一台服务器ping不通的原因和解决方法

【原因】

  1. 服务器挂了
  2. 对方开启了防火墙:(iptables -A INPUT -p icmp --icmp-type 8 -j DROP)
  3. 运营商:中间线路断了

【方法】

  1. 分段排查:按照路线一个一个ping
  2. 替换大法:ping另一个地址,或换一个主机ping
  3. 先硬件后软件:先检查网络是否联通 ==》检查ip地址 ==》dns ==》网关是否配对

        1.5 ping命令的使用

1. ping通

[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.
64 bytes from localhost (183.232.231.172): icmp_seq=2 ttl=128 time=33.9 ms
64 bytes from localhost (183.232.231.172): icmp_seq=3 ttl=128 time=32.0 ms
64 bytes from localhost (183.232.231.172): icmp_seq=4 ttl=128 time=36.0 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3004ms
rtt min/avg/max/mdev = 32.033/33.996/36.056/1.650 ms

2. ping不通

        (1)请求超时:对方开启了防火墙,不允许icmp协议包通过;

                                或是中间路由器丢弃了我们的ping包

[root@localhost ~]# ping www.google.com
PING www.google.com (208.43.237.140) 56(84) bytes of data.
^C^C
--- www.google.com ping statistics ---
13 packets transmitted, 0 received, 100% packet loss, time 12003ms

        (2)目的主机不可达:一般是ip地址没人使用

[root@localhost ~]# ping 192.168.255.111
PING 192.168.255.111 (192.168.255.111) 56(84) bytes of data.
From 192.168.255.132 icmp_seq=1 Destination Host Unreachable
From 192.168.255.132 icmp_seq=2 Destination Host Unreachable
From 192.168.255.132 icmp_seq=3 Destination Host Unreachable
From 192.168.255.132 icmp_seq=4 Destination Host Unreachable
^C
--- 192.168.255.111 ping statistics ---
6 packets transmitted, 0 received, +4 errors, 100% packet loss, time 5002ms
pipe 4

(3)网络不可达:没有填写默认网关或网关填写错误(ip route 查看网关)

(4)未知的名称或服务:没有填写dns服务地址

        1.5.1 /etc/resolv.conf

存放dns服务器ip地址的,真正我们进行域名查询的时候,就到文件里找dns服务器地址

####/etc/resolv.conf文件内容
#####
# Generated by NetworkManager
nameserver 114.114.114.114
nameserver 192.168.255.2
search localdomain
####/etc/sysconfig/network-scripts/ifcfg-ens33文件内容
####
BOOTPROTO="none"
NAME="ens33"
UUID="53b58e1e-92a7-48c8-a480-8eb13ed58ba2"
DEVICE="ens33"
ONBOOT=yes
IPADDR=192.168.255.132
NERMASK=255.255.255.0
GATEWAY=192.168.255.2
DNS1=114.114.114.114
DNS2=192.168.255.2

当我们激活新的配置时,NetworkManager服务会读取ifcfg-ens33里的DNS1这个配置写到/etc/resolv.conf

ifcfg-ens33里的DNS1 决定了/etc/resolv.conf文件里的nameserver的值

但是真正有效的是resolv.conf文件,nameserver最多可以3个

二、5个路由器的静态路由实验

静态路由适合网络规模小的网络,如果网络规模大就要用动态路由

三、三层交换机

vlan之间通信需要路由器完成

只有第一次经过的时候会查路由表,后续的数据包都通过交换机直接送过去,所以就会比传统的路由器速度更快。

在三层交换机启用路由功能:ip routing

配置虚接口的IP:interface vlan vlan-id ip address ip address netmask no shutdown

配置路由接口:no switchport

        3.1 实验

        3.1.1 实验图

        3.1.2 部分步骤详细操作

二层交换机FastEthernet0/4启用trunk

 开启路由功能

 让交换机的接口成为路由口

 配置接口和路由

 配置完命令行查看效果

 给vlan配置ip地址

 在三层交换机上添加一条静态路由

 配置完成后,共有4条直连路由,一条静态路由

Switch#
%SYS-5-CONFIG_I: Configured from console by console

Switch#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, Vlan1
C    192.168.2.0/24 is directly connected, Vlan2
C    192.168.3.0/24 is directly connected, Vlan3
S    192.168.5.0/24 [1/0] via 192.168.6.2
C    192.168.6.0/24 is directly connected, FastEthernet0/1

四、动态路由介绍

        4.1 IGP

inner geteway protocol 内部网关协议

用在一个自治系统內部

        4.1.1 RIP

只适合规模比较小的网络

最多15跳

基于跳数来衡量一条路由的质量好坏:单纯认为跳数越少越好

        4.1.2 ospf

适合大型网络

找最短路,会计算开销、代价,衡量标准更加复杂

        4.2 EGP

Exterior Gateway Protocol 外部网关协议

        4.2.1 BGP

Border Gateway Protocol 边界网关协议

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值