网络相关的一些基本的命令的使用(ping、ifconfig、route、netstat)---Linux学习笔记
ping命令的使用:
介绍:
通常我们使用它检测网络是否联通,他使用ICMP。但是有时会出现这样的情况,我们可以用浏览器查看一个网页,但是却无法ping通,这是因为一些网站处于完全考虑安装了防火墙。
Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应情况,这样我们就可以根据它输出的信息来确定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。
linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。
功能:
ping命令用于:确定网络和各外部主机的状态;跟踪和隔离硬件和软件问题;测试、评估和管理网络。如果主机正在运行并连在网上,它就对回送信号进行响应。每个回送信号请求包含一个网际协议(IP)和 ICMP 头,后面紧跟一个 tim 结构,以及来填写这个信息包的足够的字节。缺省情况是连续发送回送信号请求直到接收到中断信号(Ctrl-C)。
ping 命令每秒发送一个数据报并且为每个接收到的响应打印一行输出。ping 命令计算信号往返时间和(信息)包丢失情况的统计信息,并且在完成之后显示一个简要总结。ping 命令在程序超时或当接收到 SIGINT 信号时结束。Host 参数或者是一个有效的主机名或者是因特网地址。
格式:
ping[选项][host|ip]
常用选项说明:
-d #使用Socket的SO_DEBUG功能。
-c<count>:#设置完成要求回应的次数。
-f #极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n #只输出数值。
-q #不显示任何传送封包的信息,只显示最后的结果。
-r #忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R #记录路由过程。
-v #详细显示指令的执行过程。
<p>-c 数目: #在发送指定数目的包后停止。
-i 秒数:#设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:#使用指定的网络界面送出数据包。
-l 前置载入:#设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:#设置填满数据包的范本样式。
-s 字节数:#指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
-t 存活数值:#设置存活数值TTL的大小。
使用示例:
1.简单的ping一个ip地址
说明:默认是发送56字节的数据,还有8字节的ICMP报文的头部,所以这里每次发送64字节的数据。
可以看到ping命令最后会打印一个简要的信号往返时间和(信息)包丢失情况的统计信息。这里发送了8个ICMP数据报,接收到8个,丢包率为0,总耗时7003ms。
2.ping一个公网的站点(www.baidu.com)
说明:其实可以发现百度的真实域名是www.a.shifen.com,百度服务器的其中一个IP地址是112.80.248.73。
3.指定发送固定字节的数据(1000字节)
说明:这里发送的1008字节的数据中,1000字节是自己设定的,8字节是的ICMP头。
4.指定发送的次数和时间间隔(10次,间隔0.5s)
说明:之前都是我手动按ctrl+c来结束命令的,这里发送了10次就自动结束了。
默认是每隔1s发送一个数据报,这里我设定的是每隔0.5s。
ifconfig命令
介绍:
ifconfig是一个用来查看、配置和开关网络接口的常用工具。我们可以利用它临时性的配置网卡的IP地址、子网掩码、广播地址、网关等。也可以把它写入/etc/rc.d/rc.local文件中,在系统引导时为网卡设置IP地址。
具体说明:
eth0 表示第一块网卡, 其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是 00:0c:29:6b:6d:2f
lo表示主机的回环地址。这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把httpd服务器的地址指定为回环地址,在浏览器上输入127.0.0.1就能看到你说假设的web网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 192.168.120.204,广播地址, Bcast:00:0c:29:6b:6d:2f,掩码地址Mask:255.255.255.0
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)
第二行:网卡的IP地址、子网、掩码
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节
第四、五行:接收、发送数据包情况统计
第七行:接收、发送数据字节数统计信息。
上图中的“ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1”说明:
UP #这个标志指出这个接口是开放的,可以发送和接收数据。
DOWN #这个标志指出这个接口是关闭的,也就是说,此时不能为主机发送和转发包。
NOTRAILERS #指出了一个报文尾不包括以太帧的尾部。报文尾是在Berkerley Unix系统中使用的把信息头加到包尾的一种方式。
RUNNING #该接口已经被系统识别
MULTICAST #接口支持多路传送地址
BROADCAST #接口支持广播地址
RX和TX:它们表示这块网卡从启动到现在的封包收发情况,RX是收,TX是发。packets就代表包数。其他的各代表一种错误,数值应该越少越好,0是最好的。
命令格式:
ifconfig [网络设备] [参数]
命令功能:
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
常用参数的说明:
up #启动指定网络设备/网卡。
down #关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp #设置指定网卡是否支持ARP协议。
-promisc #设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti #设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a #显示全部接口信息
-s #显示摘要信息(类似于 netstat -i)
add #给指定网卡配置IPv6地址
del #删除指定网卡的IPv6地址
<硬件地址> #配置网卡最大的传输单元
mtu<字节数> #设置网卡的最大传输单元 (bytes)
netmask<子网掩码> #设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel #建立隧道
dstaddr #设定一个远端地址,建立点对点通信
-broadcast<地址> #为指定网卡设置广播协议
-pointtopoint<地址> #为网卡设置点对点通讯协议
multicast #为网卡设置组播标志
address #为网卡设置IPv4地址
txqueuelen<长度> #为网卡设置传输列队的长度
使用示例:
1.设置最大传输单元(1480)
说明:默认的最大传输单元是1500,其实1500字节就是最大的传输单元了,只能设置小于等于1500的值。
2.配置IP地址(将原先的192.168.1.105改为192.168.1.123)
注意:我这里是在主机上配置的,如果ssh客户端中配置的话,就会遗失该会话。
说明:
1.ifconfig eth0 192.168.120.56
给eth0网卡配置IP地:192.168.120.56
2.ifconfig eth0 192.168.120.56 netmask 255.255.255.0
给eth0网卡配置IP地址:192.168.120.56 ,并加上子掩码:255.255.255.0
3.ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255
给eth0网卡配置IP地址:192.168.120.56,加上子掩码:255.255.255.0,加上个广播地址: 192.168.120.255
最后说明:ifconfig为网卡指定的IP地址只是用来调试网络用的,并不会更改系统关于网卡的配置文件。意思就是说,重新启动了linux系统,那么刚才的这些配置是不会存在的。如果想将上述的配置信息永远存在电脑中,那就要修改网卡的配置文件了。
route命令
介绍:
route命令用于查询和设置路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
Destiantion、Genmask共同组合成了一个完整的子网。
GateWay定义从哪个geteway连接出去。如果是0.0.0.0表示该路由是直接由本机传送;如果显示有IP的话,表示该路由需要得到路由器的帮忙才能够传送出去。
Flags可能出现的标志以及意义如下:
- U(route is up) :该路由是启动的。
- H(target is a host):目标是一部主机(IP)而非网域
- G(use gateway):需要透过外部的主机(gateway)来通信
- R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息的标志
- D(dynamically installed by daemon or redirect):已经由服务或转port功能设定为动态路由
- M(modified from routing daemon or redirect):路由已经被修改了
!(reject route):这条路由将不会被接受(用来抵挡不安全的网域!)
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到。
metric:设置路由跳数,范围是0~9999。这个相当于是路由的权重,决定路由的优先级,数值越小优先级就越高。
Ref:路由引用计数。这个值恒为0,因为在Linux系统中就没有实现它。
Use:该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。
iface:数据传递出去的硬件接口
命令格式:
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
命令功能:
Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用”add”或者”del”参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。
常用参数的说明:
-c 显示更多信息
-n 不解析名字
-v 显示详细的处理信息
-F 显示发送信息
-C 显示路由缓存
-f 清除所有网关入口的路由表。
-p 与 add 命令一起使用时使路由具有永久性。
add:添加一条新路由。
del:删除一条路由。
-net:目标地址是一个网络。
-host:目标地址是一个主机。
netmask:当添加一个网络路由时,需要使用网络掩码。
gw:路由数据包通过网关。注意,你指定的网关必须能够达到。
metric:设置路由跳数。
Command 指定您想运行的命令 (Add/Change/Delete/Print)。
Destination 指定该路由的网络目标。
mask Netmask 指定与网络目标相关的网络掩码(也被称作子网掩码)。
Gateway 指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点 IP 地址。
metric Metric 为路由指定一个整数成本值标(从 1 至 9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。
if Interface 为可以访问目标的接口指定接口索引。若要获得一个接口列表和它们相应的接口索引,使用 route print 命令的显示功能。可以使用十进制或十六进制值进行接口索引。
使用示例:
查看不解析名字路由表(-n)
注意:路由的排序顺序是从小网域(192.168.1.1),逐步到大网域(169.254.0.0)最后到默认网域(0.0.0.0)。当我们要判断某个数据包应该如何传送的时候,可经过这个路由过程来判断。
netstat命令
介绍:
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
套接口类型:
-t :TCP
-u :UDP
-raw :RAW类型
--unix :UNIX域类型
--ax25 :AX25类型
--ipx :ipx类型
--netrom :netrom类型
状态说明:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
命令格式:
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
命令功能:
netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
常用参数说明:
-a或–all 显示所有连线中的Socket。
-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-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 显示Routing Table。
-s或–statistice 显示网络工作信息统计表。
-t或–tcp 显示TCP传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
-v或–verbose 显示指令执行过程。
-V或–version 显示版本信息。
-w或–raw 显示RAW传输协议的连线状况。
-x或–unix 此参数的效果和指定”-A unix”参数相同。
–ip或–inet 此参数的效果和指定”-A inet”参数相同。
使用示例:
1.显示TCP传输协议的连线状况
2.显示网卡列表
3.显示网络统计信息
说明:按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。
4.显示监听的套接字
5.显示关于以太网的统计数据
说明:用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)
6.显示关于路由表的信息
7.列出所有tcp端口
8.找出程序运行的端口
9.在 netstat 输出中显示 PID 和进程名称
说明:
netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。
更多推荐
所有评论(0)