ping命令
1)介绍:是win,unix,linux系统下的命令,也属于一个网络协议
2)使用:使用ping检查连通性,主要有6个步骤
a.使用ipconf / all 来观察本地TCP/IP协议有没有设置好
b.ping 本机ip地址,检查是否本机的ip地址设置有误
c.ping本网网关或者ip,这样检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常
d.ping远程ip,检查本网与外网连接是否正常,如ping www.baidu.com
Linux和win的ping差不多,但是注意一点Linux的ping的数据包是64bytes,win的数据包是32bytes,win下默认发送4次之后主动结束,Linux下的ping程序不停的发送数据包,直到用户手动结束
tcpdump
1)介绍:可以将网络中传送的数据包的头完全截获,它支持对协议,主机,网络或者端口的过滤,并提供and,or,not等逻辑语句来帮助去掉无用的信息 ,它存在于基本的FreeBSD系统,由于需要将网络界面设置成混杂模式,普通用户不能执行,它不会危害本机,但是会对网络上的其它计算机产生安全性威胁
2)使用:
tcpdump [-adeflnNOpqStvx] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名 ] [ -s sanplen ] [ -T 类型 ] [ -w 文件名 ] [ 表达式 ]
tcpdump -i 指定要监听的网络界面
tcpdump -c 指定要监听的数据包的数量
tcpdump -w 指定将监听到的数据包写入文件保存
确定类型的关键字:host port net
tcpdump host 192.168.15.130 指定主机
tcpdump net 200.0.0.0 指定网络地址
tcpdump port 23 指定端口
确定传输方向的关键字:src , dst , dst or src 等
tcpdump src 192.168.15.130 表明要截获源地址是192.168.15.130的
协议的关键字:fddi,ip,arp,rarp,tcp,udp
fddi指明是在FDDI(分布式网络光纤数据接口)上的特定的网络协议,实际上是ether的别名
如果没有任何信息指定,tcpdump将会监听所有的数据包
eg:
1)tcpdump host 210.27.48.1 要截获 210.27.48.1 的主机收到和发出的所有数据包
2)想要截获 210.27.48.1 和 210.27.48.2 或者 210.27.48.3 主机的通信:
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3\)使用括号时一定加\
3)想要截获210.27.48.1除了和210.27.48.2之外的所有主机的通信:
tcpdump host 210.27.48.1 and !210.27.48.2
4)想要截获 210.27.48.1接收或者发出的telnet包
tcpdump tcp port 23 host 210.27.48.1
5)想要截获某个端口相关的包 tcpdump port 23
6)想要截获某个网卡的包,比如 eth1:tcpdump -ieth1
netstat:
1)介绍:用于显示与IP,TCP,UDP和ICMP协议相关的统计数据,一般用于本机各端口的网络连接状况,从整体来看netstat的输出可以分为2个部分:
a.Active Internet connections称为有源TCP连接,其中Recv-Q Send-Q分别表示接收队列和发送队列,一般是0,如果不是则表示请求包和回包正在队列大量堆积
b.Active UNIX domain sockets称为有源unix域套接口,和网络套接字一样,只能和本机通信,性能可以提高一倍
Proto:表示协议
RefCnt:表示连接到本套接口的进程号
Type:显示套接字的类型
State:显示套接口当前的状态
Path:表示连接到套接口的其它进程使用的路径名
常见参数说明
-a (all)显示所有选项,默认不显示listen相关
-t (tcp)仅显示TCP相关
-u (udp)仅显示UDP相关
-n 拒绝显示别名
-l 仅列出有在listen(监听)状态的
-p 显示建立相关连接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,如uid等
-s 按照各个协议进行统计
-c 每隔一定固定时间,执行该netstat命令
注意 listen 和 listening状态,只有在-a 或者 -l 时才可以看到
使用示例:
netstat -a 列出所有端口的=
netstat -at 列出所有TCP端口
netstat -at 列出所有UDP端口
netstat -l 列出所有处于监听状态的socket
netstat -lu 列出所有监听UDP的socket
netstat -lt 列出所有监听TCP的socket
netstat -lx 列出所有监听UXIX的socket
netstat -p 在输出中显示PID和进程名称
netstat -n 不让显示主机 端口和用户名信息,会用数字代替
netstat -c 持续显示netstat信息
netstat -ap | grep ssh 找出程序正在运行的端口
netstat -an | grep "80" 找出运行在指定端口的进程
netstat -i 显示网络接口列表
查看链接某个服务端口最多的ip地址:
netstat -nat | grep "192.168.15.130:22" | awk -F: '{print $1}' | sort | uniq -c | sort -nr | head -20
TCP各自状态列表:
netstat -nat | awk -F: '{print $6}'
先把TCP状态提取,然后用uniq -c统计,之后再排序:
netstat -nat | awk -F: '{print $6}' | sort | uniq -c
lsof:(list open file)列出当前系统打开文件的工具
lsof | more 每行显示一个进程打开的文件,若不指定,默认打开所有
各信息的意义:
1)command 进程名称
2)PID进程标识符
3)USER进程所有者
4)FD文件描述符
5)TYPE文件类型,如DIR REG等
6)DEVICE指定磁盘的名称
7)SIZE文件的大小
8)NODE索引节点
9)NAME打开文件的确切名称
语法:lsof [options] filename
常用的参数列表:
lsof filename 显示打开指定文件的所有进程
lsof -a 表示2个参数都必须满足时才显示
lsof -c string 显示command列中包含指定字符串的进程所打开的文件
lsof -u username 显示所属user所打开的进程
lsof -g gid 显示归属gid的进程的情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,相对时间较长
lsof -d FD 显示文件描述符的进程
lsof -n 不将IP转换为hostname
lsof -i 用以显示符合条件的进程情况
4)常用举例:
1) 查看6666端口现在的运行状况 lsof -i :6666
2) 查看root用户进程打开的文件,文件类型为txt lsof -a -u root -d txt
3) 监控打开的文件和设备,查看 /dev/tty1被哪些进程占用 lsof /dev/tty1
4) 监控程序,如 查看指定程序server打开的文件 lsof -c server
5) 监控用户,如 查看指定用户nj打开的文件 lsof -u nj