Linux--网络命令/常用命令--ping/netstat/ifconfig/iptables/arp/tracepath/traceroute/tracert/route/nbstat/tftp(
博观而约取,厚积而薄发。这篇文章主要讲述Linux--网络命令/常用命令--ping/netstat/ifconfig/iptables/arp/tracepath/traceroute/tracert/route/nbstat/tftp(相关的知识,希望能为你提供帮助。
?
简介本文介绍常用的网络命令,包括:ping/netstat/ifconfig/iptables/arp/tracepath/traceroute/tracert/route/nbstat/tftp
ping用法
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
[-r count] [-s count] [[-j host-list] | [-k host-list]]
[-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
选项
-tPing 指定的主机,直到停止。
若要查看统计信息并继续操作 - 请键入 Control-Break;
若要停止 - 请键入 Control-C。
-a将地址解析成主机名。
-n count要发送的回显请求数。
-l size发送缓冲区大小。
-f在数据包中设置“不分段”标志(仅适用于 IPv4)。
-i TTL生存时间。
-v TOS服务类型(仅适用于 IPv4。该设置已不赞成使用,且
对 IP 标头中的服务字段类型没有任何影响)。
-r count记录计数跃点的路由(仅适用于 IPv4)。
-s count计数跃点的时间戳(仅适用于 IPv4)。
-j host-list与主机列表一起的松散源路由(仅适用于 IPv4)。
-k host-list与主机列表一起的严格源路由(仅适用于 IPv4)。
-w timeout等待每次回复的超时时间(毫秒)。
-R同样使用路由标头测试反向路由(仅适用于 IPv6)。
-S srcaddr要使用的源地址。
-4强制使用 IPv4。
-6强制使用 IPv6。
示例
ping 192.168.1.1
ping命令原理
源主机(输ping命令的主机)向目标主机发送一个ICMP协议(处于网络层)中的echo包;如目标主机存活,就向源主机返回一个ICMP协议的echo-reply包。
ping幕后过程
我们以下面一个网络为例:有A、B、C、D四台机子(其中A、B的IP分别为192.168.0.4-192.168.0.5,子网掩码均为255.255.255.0;C、D的IP分别为192.168.1.3-192.168.1.4,子网掩码均为255.255.255.0),一台路由RA连接以上两个子网。
1) 在同一网段内
在主机A上运行“Ping 192.168.0.5”后,都发生了些什么呢? 首先,ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同地址“192.168.0.5”一起交给IP层协议(和 ICMP一样,实际上是一组后台运行的进程),IP层协议将以地址“192.168.0.5”作为目的地址,本机IP地址作为源地址,加上一些其他的控制信息,构建一个IP数据包,并想办法得到192.168.0.5的MAC地址(物理地址,这是数据链路层协议构建数据链路层的传输单元——帧所必需的),以便交给数据链路层构建一个数据帧。关键就在这里,IP层协议通过对比机器B的IP地址、自己的IP地址和自己的子网掩码,发现它跟自己属同一网络,就直接在本网络内查找这台机器的MAC。如果以前两机有过通信,在A机的ARP缓存表应该有B机IP与其MAC的映射关系;如果没有,就发一个ARP请求广播,得到B机的MAC, 一并交给数据链路层。后者构建一个数据帧,目的地址是IP层传过来的物理地址,源地址则是本机的物理地址,还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到这个数据帧后,先检查它的目的地址,并和本机的物理地址对比,如符合,则接收;否则丢弃。接收后检查该数据帧,将IP数据包从帧中提取出来,交给本机的IP层协议。同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。
2) 不在同一网段内
在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。
netstat其他网址
?
选项 | 描述 |
-a或--all | 显示所有连线中的Socket;默认不显示LISTEN相关。 |
-A< 网络类型> 或--< 网络类型> 【Linux--网络命令/常用命令--ping/netstat/ifconfig/iptables/arp/tracepath/traceroute/tracert/route/nbstat/tftp(】 | 列出该网络类型连线中的相关地址; |
-c或--continuous | 持续列出网络状态; |
-C或--cache | 显示路由器配置的快取信息; |
-e或--extend | 显示网络其他相关信息; |
-F或--fib | 显示FIB; |
-g或--groups | 显示多重广播功能群组组员名单; |
-h或--help | 在线帮助; |
-i或--interfaces | 显示网络界面信息表单; |
-l或--listening | 显示监听中的服务器的Socket; |
-M或--masquerade | 显示伪装的网络连线; |
-n或--numeric | 直接使用ip地址,而不通过域名服务器; |
-N或--netlink或--symbolic | 显示网络硬件外围设备的符号连接名称; |
-o或--timers | 显示计时器; |
-p或--programs | 显示正在使用Socket的程序识别码和程序名称; |
-r或--route | 显示RoutingTable; |
-s或--statistice | 显示网络工作信息统计表; |
-t或--tcp | 显示TCP传输协议的连线状况; |
-u或--udp | 显示UDP传输协议的连线状况; |
-v或--verbose | 显示指令执行过程; |
-V或--version | 显示版本信息; |
-w或--raw | 显示RAW传输协议的连线状况; |
-x或--unix | 此参数的效果和指定"-Aunix"参数相同; |
--ip或--inet | 此参数的效果和指定"-Ainet"参数相同。 |
- 列出所有端口信息(包括监听和未监听的)
- netstat -ano
- 列出所有端口信息(包括监听和未监听的)
- netstat -a
- 列出所有的tcp协议的端口
- netstat -at
- 显示每个协议的统计信息
- netstat -s
- 显示核心路由信息
- netstat -r
- 持续输出 netstat 信息。netstat -c将每隔一秒输出网络信息
- netstat -c
- 找出程序运行的端口。并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息
- netstat -anp
- 显示多播组信息
- netstat -g
- 显示接口信息
- netstat -i
- 禁止域名解析
- netstat -nltp
以netstat -a为例
hadoop@master:~$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local AddressForeign AddressState
tcp00 localhost:domain0.0.0.0:*LISTEN
tcp00 0.0.0.0:ssh0.0.0.0:*LISTEN
tcp00 localhost:ipp0.0.0.0:*LISTEN
tcp00 localhost:mysql0.0.0.0:*LISTEN
tcp600 [::]:ssh[::]:*LISTEN
tcp600 ip6-localhost:ipp[::]:*LISTEN
udp00 localhost:domain0.0.0.0:*
udp00 0.0.0.0:454650.0.0.0:*
udp00 0.0.0.0:ipp0.0.0.0:*
udp00 0.0.0.0:mdns0.0.0.0:*
udp600 [::]:56383[::]:*
udp600 [::]:mdns[::]:*
raw600 [::]:ipv6-icmp[::]:*7
Active UNIX domain sockets (servers and established)
Proto RefCnt FlagsTypeStateI-NodePath
unix2[ ACC ]STREAMLISTENING40098@/tmp/.ICE-unix/2304
unix2[ ]DGRAM37416/run/user/1001/systemd/notify
1、Active Internet connections 有源TCP连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
列名解释:
- Proto:显示连接使用的协议。
- RefCnt:表示连接到本套接口上的进程号。
- Types:显示套接口的类型。
- State:显示套接口当前的状态。
- Path:表示连接到套接口的其它进程使用的路径名。
ESTABLISHED:已建立连接的状态
LISTEN :侦听来自远方的TCP端口的连接请求
SYN_SENT:发出主动连接(SYN)的数据包
SYN_RECV :接收到一个要求连接的主动连接数据包
FIN_WAIT1 :该套接字服务已中断,该连接正在断线中
FIN_WAIT2:该连接已挂断,正在等待对方主机响应断线确认的数据包
TIME_WAIT :连接已挂断,但socket还在网络上等待结束
CLOSE_WAIT:等待从本地用户发来的连接中断请求
三次握手:
文章图片
四次挥手:
文章图片
ifconfig作用
显示或配置网络设备
示例
作用 | 命令 |
配置mac地址 | ifconfig eth0 hw ether 11:22:33:44:55:66; //注意:最好配置为电脑的mac。(在电脑mac基础上修改一点点) //配置mac地址需要在配置ip地址之前进行。 |
配置ip地址和子网掩码 | ifconfig eth0 192.168.0.100 netmask 255.255.255.0;
|
关闭网络 | ifconfig eth0 down;
|
启动网络 | ifconfig eth0 up;
|
iptables -F; ifconfig eth0 hw ether 11:22:33:44:55:66; ifconfig eth0 192.168.1.193 netmask 255.255.255.0; route add default gw 192.168.1.254
iptables作用:控制防火墙
参数
-A/--APPEND
指定规则应该添加到的 chain 的名称。
例:使用 INPUT 将会把规则添加到默认的 INPUT(入站)链的末尾,而使用 OUTPUT 则会将规则添加到出站链的末尾。
用法:iptables -A chain firewall-rule
-D/–DELETE
从 chain 中删除与指定规则匹配,或指定编号的条目。
用法:
iptables -D chain firewall-rule// 从 chain 中删除对应规则 firewall-rule 的那一条目
iptables -D chain rulenum// 删除 chain 中编号为 rulenum 的那条规则。1 表示第一条。
-I/–INSERT
iptables -I chain [rulenum] firewall-rule
//将 firewall-rule 添加为 chain 中的第 rulenum 条规则,原先的第 rulenum 条及以后各条的需要顺次 +1。
-R/–REPLACE
iptables -R chain [rulenum] firewall-rule
// 将 chain 中原来的第 rulenum 条规则替换为 firewall-rule。如果没有指定 rulenum,则替换该 chain 中第一条。
-L/–LIST
iptables -L [chain [rulenum]]
//列出 chain 或者所有 chain(当未指定 chain 名称时)中的 第 rulenum 条规则或者所有规则(当未指定 rulenum 时)。
//要注意,如果未指定 chain 则不能带 rulenum 参数。
如果在 -L 后再加上 --line-numbers,则表示在每条规则前面显示序号。
-S/–LIST-RULES
iptables -S [chain [rulenum]]
//打印出 chain 或者所有 chain(当未指定 chain 名称时)中的 第 rulenum 条规则或者所有规则(当未指定 rulenum 时)。//注意,如果未指定 chain 则不能带 rulenum 参数。
-F/–FLUSH
iptables -F [chain]
//清空 chain 或所有 chain (当未指定 chain 名称时)中的规则。
-Z/–ZERO
iptables -Z [chain [rulenum]]
//把 chain 或者所有 chain(当未指定 chain 名称时)的包及字节的计数器清空。
-N/–NEW
--new -N chain
//创建一个名称为 chain 的新链。
-X/–DELETE-CHAIN
iptables -X [chain]
// 删除用户自定义 chain 或者所有用户自定义 chain(当未指定 chain 名称时)。该指令不影响预设规则(如 INPUT、
//OUTPUT、FORWARD 等)。
-P/–POLICY
iptables -P chain target
// 改变 chain 的策略为 target。
-E/–RENAME-CHAIN
iptables -E old-chain new-chain
// 将 old-chain 名称更改为 new-chain。这样做可以使所有引用 old-chain 的规则失效。
arp简介
本命令在windows下用法相同
作用:显示或修改arp(ip和mac对应关系)
参数:
-a [inet_addr] [-N if_addr] [-v]
显示与当前设备网络相连接的所有设备的ip与mac对应关系。
若指定inet_addr,只显示其映射。例如:arp -a 192.168.1.100// 注意:不能显示本机的
-v
在详细模式下显示当前 ARP 项。所有无效项和环回接口上的项都将显示。
-d inet_addr [if_addr]
删除 inet_addr 指定的主机。inet_addr 可以是通配符 *,以删除所有主机。
-s inet_addr eth_addr [if_addr]
添加主机并且将 Internet 地址 inet_addr与物理地址 eth_addr 相关联。物理地址是用 连字符分隔的 6 个十六进制字节。该项是永久的。
示例:
arp -a
tracepath/traceroute/tracerttracepath,traceroute:Linux下的命令。tracert:windows下的命令。
tracepath命令和traceroute命令功能类似,但不需要root权限。并且Ubuntu预装了这个命令,traceroute命令没有预装的。tracepath追踪出到指定的目的地址的网络路径,并给出在路径上的每一跳(hop)。如果你的网络有问题或是慢了,tracepath可以查出网络在哪里断了或是慢了。
作用
查看数据包在提交到远程系统或者网站时候所经过的路由器的 IP 地址、跳数和响应时间。必须链接到互联网才能使用。
格式
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout][-R] [-S srcaddr] [-4] [-6] target_name
选项
-d不要将地址解析为主机名。
-h maximum_hops搜寻目标所用的最大跃点数目。
-j host-list松散的主机列表来源路由 (仅 IPv4)。
-w timeout每个回复的等候逾时 (毫秒)。
-R追踪来回路径 (仅 IPv6)。
-S srcaddr要使用的来源地址 (仅 IPv6)。
-4强制使用 IPv4。
-6强制使用 IPv6。
举例:tracert baidu.com
其他命令nbtstat全称:Net-Bios of Tcp/ip statistics
作用:查看计算机名、ip地址、mac地址。提供关于关于NETBIOS的统计数据
参数:
NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [interval] ]
-a (适配器状态)列出指定名称的远程机器的名称表
-A (适配器状态)列出指定 IP 地址的远程机器的名称表。// 用-a也可以
-c (缓存)列出远程[计算机]名称及其 IP 地址的 NBT 缓存
-n (名称)列出本地 NetBIOS 名称。
-r (已解析)列出通过广播和经由 WINS 解析的名称
-R (重新加载)清除和重新加载远程缓存名称表
-S (会话)列出具有目标 IP 地址的会话表
-s (会话)列出将目标 IP 地址转换成计算机 NETBIOS 名称的会话表。
-RR (释放刷新)将名称释放包发送到 WINS,然后启动刷新
RemoteName 远程主机计算机名。
IP address 用点分隔的十进制表示的 IP 地址。
interval 重新显示选定的统计、每次显示之间暂停的间隔秒数。
按 Ctrl+C 停止重新显示统计。
示例:
nbtstat -a PC-name
route作用:查看或设置路由表
参数:
示例:
route//查看路由表
route -n//快速查看路由表。(不解析名字)
route add default gw 192.168.0.254; // 设置默认网关
tftpuboot下:
作用:用tftp协议传输数据
参数:
示例:
事先要做的:
1.开启tftp服务(用tftp32或者mobaxterm的tftp服务)
2.设置环境变量
setenv ipaddr xxx;
setenv serverip yyy;
tftp 0x30000000 uImage;
执行完本条命令后,就会从serverip下载uImage到内存0x30000000处,
然后就可以用bootm 0x30000000来启动了
Linux下:
格式:tftp [option] ... host [port]
选项:
-g表示下载文件 (get)
-p表示上传文件 (put)
-l表示本地文件名 (local file)
-r表示远程主机的文件名 (remote file)
示例:
1.从服务器下载文件
tftp -gr test.txt 192.168.1.101或者 tftp -g -r test.txt 192.168.1.101
把tftp服务端目录下的test.txt文件下载到tftp客户端, 其中的192.168.1.101是服务端ip。
tftp -g -r test.txt-l /mytest.txt 192.168.1.101
把tftp服务端目录下的test.txt文件下载到tftp客户端,保存到根目录下,文件名为mytest.txt
2.把tftp客户端文件上传到tftp服务器
tftp -pl test.txt 192.168.1.101
该命令可以把tftp客户端目录下的test.txt文件上传到tftp服务端, 其中的192.168.1.101是服务端ip。
可以用此命令从嵌入式设备中取出文件, 放到windows上进行分析
Linux下交互使用方法:
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
示例:
tftp 193.169.3.42
tftp> connect
tftp> get demon.txt
tftp> status
tftp> quit
其他网址?
推荐阅读
- Centos 系统符号和正则符号总结
- Web宝塔面板网站默认80端口被占用完美解决!
- 常用的文本文件编辑命令(续)
- ansible hosts资产文件
- Linux排查哪个进程和IP在占用网速
- linux之grep使用技巧
- 目录和文件管理
- Linux--命令大全/常用命令--管理类--内存/磁盘/进程--top/free/du/df/ps/pstree/kill/killall
- PowerShell安装(副本)额外域控制器