
如果网络延迟抖动大,其实不一定会丢包,一般网络拥塞时才会丢包
只要网络是通的,TCP有重传机制,肯定会将没传送成功的数据重新发送网络问题往往都是比较复杂的,并且通常定位问题后也无能为力,只能推动相关运营商解决;
常见网络丢包的原因:
ICMP是一个网络层的协议,用来测试网络的连通性,因为ICMP非传输层,所以不需要端口号, ping 、 traceroute 、 mtr 都使用的是ICMP协议, 这也是 ping 命令不能指定端口号的原因;ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6;
ICMP协议可以用来:
ICMP协议的实现,是内嵌在IP包里的,IP包头部有固定的20个字节,如果IP包头里面协议字段设置为ICMP,则IP包的包体里是ICMP包体;
ICMP包体可以简单理解为 type 加 content , 有2个字节用于标识是什么类型的ICMP包,剩下的字节存储内容;ICMP的具体使用,举例如下:
ping命令会先发送一个 ICMP Echo Request给对端,对端接收到之后, 会返回一个ICMP Echo Reply,若没有返回,就是超时了,会认为指定的网络地址不存在。
ping能验证网络的连通性,并会统计响应时间和TTL(IP包中的Time To Live,生存周期),也可以用于查看网络丢包率;
traceroute也是基于ICMP协议实现的。可用于打印执行主机到目标主机之前经历多少路由器。
mtr 命令实际是集成了 traceroute 、 ping 的功能;
mtr 底层首先利用 traceroute 计算出所有的路由器节点,然后针对每个路由器节点发送 ping 命令,最后对数据做了汇总和展示;
如何分析MTR报告
tcpdump本身是排查tcp/ip 网络问题的大杀器;
tcpdump可以单独使用,但结合 wiresharkapp 等可视化软件来使用会更加直观;
tcpdump使用本身较为复杂,可以参考相关官方文档;
这里举例说明如何使用tcpdump抓取ICMP包:
ICMP协议
网络丢包分析
网络排查工具mtr使用会不会是网卡出问题或者经过的路由器有问题呢?
192168202 已经是内网做配置用。。。
如果去到公网发现丢包可能会是网卡线路或者去到目的地经过的路由器出现问题??
自己先换网卡,同样问题联系机房管理员和专线宽带运营商啊。首先你要知道TCP是可靠传输的,并不会造成丢包,缺少数据一般是系统设计的问题。
你可以把程序关键部分的代码贴出来,个人猜测,您可能使用了BufferedOutputStream之类的缓冲流对原始socket流进行了包装,因此,write的内容并不会立即发送到端系统,直接在原始流上进行write *** 作即可。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)