程序员应该掌握的常用网络问题定位工具

标签: 程序员 网络 问题 | 发表时间:2021-05-06 18:08 | 作者:玻璃樽
出处:http://weekly.dockone.io

项目日常运维的过程中,经常会遇到各种奇奇怪怪的网络问题。那么排查网络问题,就成为一个合格的程序员必备技能。这里列举出一些常用的指令,用于日常工作中快速定位网络问题。

ping

这个是大家经常用到的一个小工具,用于检查两台服务器之间是否能够成功交换数据包。 ping指令向对方主机发送 ICMP报文。当能成功 ping通时表示两台主机之间的网络链路是畅通的。如果 ping不通,首先需要确认对方是否关停了 ping服务,如果没有关停,就需要检查双方的网络链接问题了。

telnet

该指令主要用于检查到对方端口的网络联通性,如果 telnet能通,一般证明 TCP三次握手已经建立成功,也就是网络层是畅通的。如果 telnet不通,需要确认对方是否已经启动相应服务端口,如果已启动,那么就要检查双方的防火墙策略等问题。

ifconfig

ifconfig 指令除了可以查看网卡信息外,还可以修改网络配置。比如查看网卡信息 ifconfig -a ;启动网卡 ifconfig eth0 up ;关停网卡 ifconfig eth0 down等操作。

除了使用 ifconfig 查看及配置网卡信息外,还可以通过 ip link show 查看网卡信息,启动网卡信息 ip link set down eth0; 关停网卡 ip link set up eth1 等操作。


注意:启动关停网卡在 SSH链接的情况下,尽量不要操作。

route

route 指令一般用于查看和配置服务器路由信息。比如查看路由信息 route -n 或者 route -nee 添加或者删除路由信息 route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME} 等等。

同样,除了使用 route指令外也可以使用 ip route show 查看路由信息;和 route -n 是等效的。这里更推荐使用 ip route 命令。

traceroute

该指令用于查看从源地址到目的地址的路由路径。比如 traceroute www.baidu.com 用于判断你和目标地址之间经过了哪些网络设备。 windows下是 tracert

netstat

这个指令比较强大,也是程序员日常用的比较多的一个指令。该指令可以显示服务器的网络状态,比如,显示服务器当前所有 socket链接 netstat -a; 显示 UDP/TCP端口的使用情况 netstat -apu/netstat -apt; 显示网络统计信息 netstat -s; 查看 8080端口的状态 netstat -anp|grep 8080

netstat等价的指令是 ss指令。 ss -l 列出所有本机已经打开的端口。 ss -t/u -a 显示所有 tcp/udp链接。查看某个链接属于哪个进程 ss -tp。查看本地的端口状态 ss -t src ip:8080。这里更推荐使用 ss指令。

tcpdump

网络抓包工具,当遇到奇怪的网络问题时,通过 tcpdump进行网络抓包,然后进行分析定位问题。根据源IP进行抓包 tcpdump -i eth2 src 192.168.199.100 即只抓取通过 eth2这块网卡的且源地址为 192.168.199.100的网络包。当然也可以指定端口抓包,比如 tcpdump src port 8088。总之该命令非常强大,这里不做更多的详细介绍,感兴趣的可以自行了解。

nmap

这是一个网络嗅探和扫描工具,做网络安全的小伙伴会比较熟悉。经常用来检查对方主机开放了哪些端口。比如查看对方主机开放了哪些端口 nmap -PS 192.168.199.100,还可以探测目标IP的操作系统 nmap -O 192.168.199.100。总之该命令做网络安全的会用的比较多,程序员使用的会比较少一些,感兴趣的可以深入研究,该指令及其强大。

总结

上面提到的小工具,对于有些问题的定位,可以通过两个不同的指令达到同样的效果。比如 ifconfig -aip link showroute -nip route show;以及 netstatss。出现这样的情况是因为, ifconfignetstat等命令来自于 net-tools工具包,而 ip linkss 等指令来自 iproute2工具包。 net-tools已经停止开发了,在很多新版的操作系统里面已经不是默认自带的工具包了,如果想使用需要单独安装。 iproute2是用来替换 net-tools的,很多新版 linux都是默认安装的。而且 iproute2包中的很多指令在功能和性能上都要比 net-tools包中提供的指令更强大。我这里从网上找了一张图片用来说明俩个工具包的指令对比。


原文链接: https://mp.weixin.qq.com/s/zj4yBgi7QkWunD4mrG4p5A,关注基础编程,注重经验分享及个人成长。

相关 [程序员 网络 问题] 推荐:

程序员应该掌握的常用网络问题定位工具

- - DockOne.io
项目日常运维的过程中,经常会遇到各种奇奇怪怪的网络问题. 那么排查网络问题,就成为一个合格的程序员必备技能. 这里列举出一些常用的指令,用于日常工作中快速定位网络问题. 这个是大家经常用到的一个小工具,用于检查两台服务器之间是否能够成功交换数据包. ping指令向对方主机发送 ICMP报文. 当能成功 ping通时表示两台主机之间的网络链路是畅通的.

招聘 JavaScript 程序员时应该问什么问题

- rex - 一名开发
有使用过服务端 JavaScript 框架吗?. ECMAScript 和 JavaScript 的区别是什么?. 有用过 JavaScript 代码校验工具吗?. 有读过或推荐的 JavaScirpt 书籍吗?. 会为你的 JavaScript 代码写单元测试吗?. 为什么基本上所有对象都有 toString 方法?.

10个我最喜欢问程序员的面试问题

- - 博客园_新闻
英文原文: 10 Programmer Interview Questions I’d like to be asked . 最近我拜读很多文章,都是介绍面试问题的,我真心不理解,面试官代表公司想要聘用的是最优秀的程序员,那就意味着需要想出一些有意义的面试问题. 如果你就提一些毫无用处的垃圾问题,那么很容易遗漏很多能干的程序员.

[随笔]看看今年程序员们解决问题的顺序

- 李斌 - C++博客-首页原创精华区
    技术上的问题多去google,wikipedia上看看绝对没错,想看性用品广告就多上上Baidu.     找同事帮忙,如果你的同事热心肠而且技术不错,而且遇到过类似的问题,他的建议就会很显得非常宝贵,也许就能一针见效.     去编程互助网站搜索下答案,不行就上去发帖提提问,热心人还是蛮多的,但是感觉这个网站上的Java/.Net的问题比较多.

程序员写代码时应该反复问自己的10个问题

- - 外刊IT评论
你想成为一名优秀的程序员吗. 那么,现在是时候放下《24小时学会xxx语言v8.3》超级骗子书,相反,你应当 养成每天反问自己以下10个问题的习惯. 找寻模式中的可行与不可行将发现其中看似无关的想法或基本原则. 要对工作达到深入的理解,你必须养成反问自己“是否有一种模式存在. 是否有适应各类型商业变化的模式吗.

[转]迈向高阶:优秀Android程序员必知必会的网络基础

- - $firecat的代码足迹$
网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用的工具类,到后来Google开源的比较完善丰富的Volley,再到如今比较流行的 Okhttp、 Retrofit.

我的面试程序员的经验:一个能一网打尽的技术问题

- - 外刊IT评论
我之前的主要工作是参与招聘并进行技术面试,招聘的总过程如下:. HR所进行的面试:判断候选人是不是一个连环杀手或精神病. 技术专家进行的面试:判断候选人是不是一个优秀的程序员. 大老板进行的面试:判断候选人愿意接受多少报酬. 我面试过两种类型的人:实习生和准员工. 实习生只需要经历以上第二条步骤即可,其他人则需要经历所有的步骤.

北美亚洲网络遭遇严重问题

- - Solidot
根据互联网流量报告,北美和亚洲的网络遭遇到严重问题:北美网络平均丢包率达到32%,亚洲网络平均丢包率33%,欧洲大洋洲和南美洲网络正常. 网络问题导致Google App Engine、Tumblr和Dropbox等服务下线. 目前不清楚故障原因,但云服务商Akami报告网络攻击流量比平常高出50%.

网络身份安全中的数据策略问题

- - 技术改变世界 创新驱动中国 - 《程序员》官网
讲到破解对抗问题,要从攻防两方面所拥有的资源说起. 之前我们基于一台普通的戴尔笔记本进行了一个小测试:在笔记本里装了一个虚拟机进行相应的Hash次数计算,发现这么普通设备里的虚拟系统,大概每秒钟可以完成50万次以上的标准MD5散列计算,这个结果得益于摩尔定律. 我们要注意,这既是散列计算的速度,也是破解所需的数据资源生成的速度.

苹果发布 iOS 6.1.1,修复 iPhone 4S 网络连接问题

- - 果迷网
针对近来果迷们反馈升级到 iOS 6.1 固件后遇上的各种 bug,苹果已经发布 iOS 6.1.1 固件进行修复性更新,而此次更新仅针对一款设备——iPhone 4S. 苹果公司称,iOS 6.1.1 固件解决了此前备受关注的 iPhone 4S 蜂窝移动数据网络的性能问题. 而此前重点优化日本地区地图应用的 iOS 6.1.1 首个测试版(beta 1)的更新内容并没有出现在此次的 iOS 6.1.1 中,苹果公司称将会在发布正式版更新时使用新的版本号,同时修复此次发布的 iOS 6.1.1 中发现的问题.