简介

        本文介绍常用的网络命令,包括:ping/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

选项

-t             Ping 指定的主机,直到停止。

               若要查看统计信息并继续操作 - 请键入 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返回一个超时的信息。

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/tracert

tracepath,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;   // 设置默认网关

tftp

uboot下​:

作用:用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:a           scii传送模式

rexmt:            设置包传输的超时时间

timeout:         设置重传的超时时间

help:              帮助信息

?:                    帮助信息

示例​:

tftp 193.169.3.42

tftp>connect

tftp>get demon.txt

tftp>status

tftp>quit

其他网址

ping命令全解析(语法、过程、结果分析、网络故障诊断) - 枫芸志