精华内容
下载资源
问答
  • Linux下网络监控工具总结

    万次阅读 2016-10-17 23:23:15
    GitHub Linux下网络监控工具总结 AderXCoding/system/tools/network_monitor本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处 对任何规模的业务来说, 网络监控工具都...
    CSDN GitHub
    Linux下网络监控工具总结 AderXCoding/system/tools/network_monitor


    知识共享许可协议本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处

    对任何规模的业务来说, 网络监控工具都是一个重要的功能.

    网络监控的目标可能千差万别. 比如, 监控活动的目标可以是保证长期的网络服务、安全保护、对性能进行排查、网络使用统计等. 由于它的目标不同, 网络监控器使用很多不同的方式来完成任务. 比如对包层面的嗅探, 对数据流层面的统计数据, 向网络中注入探测的流量, 分析服务器日志等.

    尽管有许多专用的网络监控系统可以365天24小时监控, 但您依旧可以在特定的情况下使用命令行式的网络监控器, 某些命令行式的网络监控器在某方面很有用. 如果您是系统管理员, 那您就应该有亲身使用一些知名的命令行式网络监控器的经历. 这里有一份Linux上流行且实用的网络监控器列表.

    1 包层面的嗅探器


    在这个类别下, 监控工具在链路上捕捉独立的包, 分析它们的内容, 展示解码后的内容或者包层面的统计数据. 这些工具在最底层对网络进行监控、管理, 同样的也能进行最细粒度的监控, 其代价是影响网络I/O和分析的过程.

    编号 工具 描述
    1 dhcpdump 一个命令行式的DHCP流量嗅探工具, 捕捉DHCP的请求/回复流量, 并以用户友好的方式显示解码的DHCP协议消息. 这是一款排查DHCP相关故障的实用工具.
    2 dsniff 一个基于命令行的嗅探、伪造和劫持的工具合集,被设计用于网络审查和渗透测试. 它可以嗅探多种信息, 比如密码、NSF流量(LCTT 译注:此处疑为 NFS 流量)、email消息、网络地址等
    3 httpry 一个HTTP报文嗅探器, 用于捕获、解码HTTP请求和回复报文, 并以用户友好的方式显示这些信息. (LCTT 译注:延伸阅读.)
    4 IPTraf 基于命令行的网络统计数据查看器. 它实时显示包层面、连接层面、接口层面、协议层面的报文/字节数. 抓包过程由协议过滤器控制, 且操作过程全部是菜单驱动的. (LCTT 译注:延伸阅读.)
    5 mysql-sniffer 一个用于抓取、解码MySQL请求相关的数据包的工具。它以可读的方式显示最频繁或全部的请求
    6 ngrep 在网络报文中执行grep。它能实时抓取报文,并用正则表达式或十六进制表达式的方式匹配(过滤)报文。它是一个可以对异常流量进行检测、存储或者对实时流中特定模式报文进行抓取的实用工具
    7 p0f 一个被动的基于包嗅探的指纹采集工具,可以可靠地识别操作系统、NAT或者代理设置、网络链路类型以及许多其它与活动的TCP连接相关的属性
    8 pktstat 一个命令行式的工具, 通过实时分析报文, 显示连接带宽使用情况以及相关的协议(例如,HTTP GET/POST、FTP、X11)等描述信息
    9 Snort 一个入侵检测和预防工具,通过规则驱动的协议分析和内容匹配,来检测/预防活跃流量中各种各样的后门、僵尸网络、网络钓鱼、间谍软件攻击
    10 tcpdump 一个命令行的嗅探工具, 可以基于过滤表达式抓取网络中的报文, 分析报文, 并且在包层面输出报文内容以便于包层面的分析. 他在许多网络相关的错误排查、网络程序debug、或安全监测方面应用广泛
    11 tshark 一个与Wireshark窗口程序一起使用的命令行式的嗅探工具. 它能捕捉、解码网络上的实时报文, 并能以用户友好的方式显示其内容.

    2 流/进程/接口层面的监控


    在这个分类中, 网络监控器通过把流量按照流、相关进程或接口分类, 收集每个流、每个进程、每个接口的统计数据. 其信息的来源可以是libpcap抓包库或者sysfs内核虚拟文件系统. 这些工具的监控成本很低, 但是缺乏包层面的检视能力.

    编号 工具 描述
    1 bmon 一个基于命令行的带宽监测工具, 可以显示各种接口相关的信息, 不但包括接收/发送的总量/平均值统计数据, 而且拥有历史带宽使用视图
    2 iftop 一个带宽使用监测工具,可以实时显示某个网络连接的带宽使用情况。它对所有带宽使用情况排序并通过ncurses的接口来进行可视化。他可以方便的监控哪个连接消耗了最多的带宽. (LCTT 译注:延伸阅读)
    3 nethogs 一个基于ncurses显示的进程监控工具,提供进程相关的实时的上行/下行带宽使用信息。它对检测占用大量带宽的进程很有用. (LCTT 译注:延伸阅读.)
    4 netstat 一个显示许多TCP/UDP的网络堆栈的统计信息的工具。诸如打开的TCP/UDP连接书、网络接口发送/接收、路由表、协议/套接字的统计信息和属性. 当您诊断与网络堆栈相关的性能、资源使用时它很有用
    5 speedometer 一个可视化某个接口发送/接收的带宽使用的历史趋势,并且基于ncurses的条状图进行显示的终端工具
    6 sysdig 一个可以通过统一的界面对各个Linux子系统进行系统级综合性调试的工具。它的网络监控模块可以监控在线或离线、许多进程/主机相关的网络统计数据,例如带宽、连接/请求数等. (LCTT 译注:延伸阅读.)
    7 tcptrack 一个TCP连接监控工具,可以显示活动的TCP连接,包括源/目的IP地址/端口、TCP状态、带宽使用等.
    8 vnStat 一个存储并显示每个接口的历史接收/发送带宽视图(例如,当前、每日、每月)的流量监控器。作为一个后台守护进程,它收集并存储统计数据,包括接口带宽使用率和传输字节总数. (LCTT 译注:延伸阅读.)
    9 nload nload默认分为上下两块, 上半部分是 : Incoming也就是进入网卡的流量, 下半部分是 : Outgoing,也就是从这块网卡出去的流量, 每部分都有当前流量(Curr), 平均流量(Avg), 最小流量(Min), 最大流量(Max)

    3 主动网络监控器


    不同于前面提到的被动的监听工具,这个类别的工具们在监听时会主动的“注入”探测内容到网络中,并且会收集相应的反应。监听目标包括路由路径、可供使用的带宽、丢包率、延时、抖动(jitter)、系统设置或者缺陷等。

    编号 工具 描述
    1 dnsyo 一个DNS检测工具, 能够管理跨越多达1500个不同网络的开放解析器的DNS查询. 它在您检查DNS传播或排查DNS设置的时候很有用
    2 iperf 一个TCP/UDP带宽测量工具,能够测量两个端点间最大可用带宽。它通过在两个主机间单向或双向的输出TCP/UDP探测流量来测量可用的带宽. 它在监测网络容量、调谐网络协议栈参数时很有用. 一个叫做netperf的变种拥有更多的功能及更好的统计数据.
    3 netcat/socat 通用的网络调试工具,可以对TCP/UDP套接字进行读、写或监听。 它通常和其他的程序或脚本结合起来在后端对网络传输或端口进行监听. (LCTT 译注:延伸阅读.)
    4 nmap 一个命令行的端口扫描和网络发现工具。它依赖于若干基于TCP/UDP的扫描技术来查找开放的端口、活动的主机或者在本地网络存在的操作系统。它在你审查本地主机漏洞或者建立维护所用的主机映射时很有用. zmap是一个类似的替代品,是一个用于互联网范围的扫描工具. (LCTT 译注:延伸阅读.)
    5 ping 一个常用的网络测试工具。通过交换ICMP的echo和reply报文来实现其功能。它在测量路由的RTT、丢包率以及检测远端系统防火墙规则时很有用。ping的变种有更漂亮的界面(例如,noping)、多协议支持(例如,hping)或者并行探测能力(例如,fping). (LCTT 译注:延伸阅读.)
    6 sprobe 一个启发式推断本地主机和任意远端IP地址之间的网络带宽瓶颈的命令行工具. 它使用TCP三次握手机制来评估带宽的瓶颈。它在检测大范围网络性能和路由相关的问题时很有用.
    7 traceroute 一个能发现从本地到远端主机的第三层路由/转发路径的网络发现工具. 它发送限制了TTL的探测报文,收集中间路由的ICMP反馈信息. 它在排查低速网络连接或者路由相关的问题时很有用. traceroute的变种有更好的RTT统计功能(例如,mtr).

    4 应用日志解析器


    在这个类别下的网络监测器把特定的服务器应用程序作为目标(例如,web服务器或者数据库服务器). 由服务器程序产生或消耗的网络流量通过它的日志被分析和监测。不像前面提到的网络层的监控器,这个类别的工具能够在应用层面分析和监控网络流量.

    编号 工具 描述
    1 GoAccess 一个针对Apache和Nginx服务器流量的交互式查看器。基于对获取到的日志的分析,它能展示包括日访问量、最多请求、客户端操作系统、客户端位置、客户端浏览器等在内的多个实时的统计信息,并以滚动方式显示
    2 mtop 一个面向MySQL/MariaDB服务器的命令行监控器,它可以将成本最大的查询和当前数据库服务器负载以可视化的方式显示出来。它在您优化MySQL服务器性能、调谐服务器参数时很有用.
    3 ngxtop 一个面向Nginx和Apache服务器的流量监测工具,能够以类似top指令的方式可视化的显示Web服务器的流量. 它解析web服务器的查询日志文件并收集某个目的地或请求的流量统计信息

    5 图形界面工具


    编号 工具 描述
    1 Monit Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况.
    2 Ganglia Ganglia是一个跨平台可扩展的,高 性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据存储和可 视化。它利用精心设计的数据结构和算法实现每节点间并发非常低的。它已移植到广泛的操作系统和处理器架构上,目前在世界各地成千上万的集群正在使用。它已 被用来连结大学校园和世界各地,可以处理2000节点的规模.
    3 Munin Munin 是一个非常好用安装和设置方便的监测软件
    4 Cacti Cacti在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结 构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.
    5 Nagios Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等, Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等.
    6 zabbix zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.
    7 Observium Observium是一个可自动发现网络中的思科设备和 Linux系统的网络监控工具,而是包括了主要的网络硬件和操作系统的广泛支持。 Observium发展出来的一种轻松缺乏使用NMSes。其目的是提供一个更加通航接口的健康和你的网络性能。它的设计目标包括收集尽可能就设备多的历 史资料,是完全与很少或无需人工干预的自动发现,并有一个非常直观的界面.
    8 Zenoss Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度。Zenoss Core同时也是开源的网络与系统管理软件.
    9 Collectd collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。比如以RRD 文件形式
    当系统运行和存储信息的时候,Collectd会周期性统计系统的相关统计信息。那些信息可以用来找到当前系统性能瓶颈. (如作为性能分析 performance analysis)和预测系统未来的load(如能力部署capacity planning).如果你需要美观的图形来显示您的数据,并且已经厌烦了内部解决方案,恭喜您,你找到了正确的地方.
    10 Argus Argus是一个网络连接监控器,可以利用它来定制监控网络中符合某种条件的计算机,例如网络空闲、断开等.
    展开全文
  • linux下网络调试工具

    万次阅读 2015-08-11 16:07:30
    linux下网络调试工具,主要包括tcpdump、netstat和lsof工具。 1. tcpdump (dump traffic on a network) tcpdump打印指定网络接口中与布尔表达式匹配的报头信息。 tcpdump的表达式是一个正则表达式,tcpdump利用它...

    linux下网络调试工具,主要包括tcpdump、netstat和lsof工具。

    1.    tcpdump  (dump traffic on a network)

    tcpdump打印指定网络接口中与布尔表达式匹配的报头信息。

    tcpdump的表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将被捕获。如果没有给出任何条件,则网络上的所有的信息包将会被截获。

    表达式中一般有如下几个类型的关键字。

    (1)  关于类型的关键字,主要包括host、net、port,例如:

    host 210.27.48.2          //指明210.27.48.2主机

    net 202.0.0.0               //指明网络地址202.0.0.0

    port 23            //指明端口号为23

    如果没有指定类型,默认的类型是host。

    (2)  确定传输方向的关键字,主要包括src、dst、dst or src、dst and src,

    src 210.27.48.2      //指明IP包源地址为210.27.48.2

    dst net 202.0.0.0          //指明目的网络地址为202.0.0.0

    如果没有指明方向关键字,则默认是src或dst关键字。

    (3)  协议关键字,主要包括fddi、ip、arp、rarp、tcp、udp等类型。指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

    除了这3类型的关键字,重要的关键字还有gateway、broadcast、less、greater。另外还有3中逻辑运算:

    ‘not’或’!’         //非运算

    ‘and’或’&&’           //与

    ‘or’或’||’         //或

    应用示例:

    (1)  想要截获所有210.27.48.1的主机收到和发出的所有数据包

    $tcpdump host  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之外的所有主机通信的ip包

    $tcpdump ip host  210.27.48.1  and  !210.27.28.2

    (4)  如果要获取主机210.27.48.1接受或发出的telnet包,使用如下命令:

    $tcpdump tcp  port  23 host  210.27.48.1

     

    TCP包的输出信息:

    使用tcpdump捕获的tcp包的一般输出信息格式是:

    src.port >  dst.port:  flags data-seqno  ack  window urgent  options

    内容分析如下:

    l  src.port >dst.port:源到目的地,刚好标识一对连接

    l  flags是tcp包中的标志信息:S是SYN标志,F(FIN)、P(PUSH)、R(RST)、“.”(没有标志)。

    l  data-seqno数据包中的数据的顺序号

    l  ack是下一次期望的顺序号

    l  win是接收缓存的窗口大小

    l  urgent表明数据包中是否有紧急指针

    l  options是选项

    tcpdump常用选项:

    l  -a:将网络地址和广播地址转变成名字

    l  -d:将匹配信息包的代码以能够理解的汇编格式给出

    l  -dd:将匹配信息包的代码以C语言程序段的格式给出

    l  -ddd:将匹配信息包的代码以十进制的形式给出

    l  -e:在输出行打印出数据链路层的头部信息

    l  -f:将外部地址以数字的形式打印出来

    l  -l:使标准输出变为缓冲形式

    l  -n:不把网络地址转换成名字

    l  -t:在输出行的每一行不打印时间戳

    l  -v:输出一个稍微详细的信息

    l  -vv:输出详细的报文信息

    l  -c:在收到指定数目的数据包后,tcpdump就会停止

    l  -F:从指定的文件中读取表达式,忽略其他的表达式

    l  -i:指定监听的网络接口

    l  -r:从指定的文件中读取包(这些包一般通过-w选项产生)

    l  -w:直接将包写入文件中,并不分析和打印出来

    l  -T:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc和snmp

     

    tcpdump能抓取网络包,并分析。

    这里,我直接用tcpdump抓到包并保存在文件中(syn.log),找到相应字段的bit区域,通过查tcp/ip协议个字段,反向解包。并与tcpdump的分析结果对比。

    tcp服务器:192.168.0.50:48500

    tcp客户端:192.168.0.100:59684

    IPv4

    先启动服务器,然后打开tcpdump监听,将抓包指定保存到文件syn.log。然后,客户端主动连接上来,这样,最开始抓到的为tcp的三次握手。


    使用od将数据以16进制显示,以一个字节为单位(8bits)。

    除了网络数据包之外,产生的文件中还有些数据是tcpdump文件特用的数据,例如最开始的d4c3 b2a1表示该文件是tcpdump产生的文件,具体tcpdump文件格式,网上搜的到,这里我只圈出三次握手的网络数据包,如图。将上图中的输出,重定向到另外文件中,为了方便阅读,将其重新排列(但不改变字节序)。


          这里,我拿第一个SYN包来反解


    目的MAC:08:90:00:a0:02:10

    源MAC:3c:97:0e:8f:c8:be

    协议类型:0800(IP协议包)


    IP头:

    版本:0x4(IPv4),对于IPv6,该值为6

    首部长度:0x5,这个长度以字为单位。(5*4=20字节)

    服务类型(TOS):0x00

    总长度:0x003c(60)

    标识:0x41bf(16831)

    标志:0x2

    偏移:0

    生存时间:0x40(64)

    协议:0x06(TCP协议包)

    首部校检和:0x7716(30486)

    源IP地址:c0(192).a8(168).00(0).64(100)

    目的IP地址:c0(192).a8(168).00(0).32(50)


    TCP头:

    源端口号:0xe924(59684)

    目的端口号:0xbd74(48500)

    序号:0xcab64ff2(3400945650)

    确认序号:0(第一个SYN,没有需要回应的序号)

    首部长度:0xa(10字)(10*4=40字节,从后面可以看到选项暂用了20字节)

    保留位:0

    URG(0),ACK(0),PSH(0),RST(0),SYN(1),FIN(0)

    窗口大小:0x3908(14600)

    校检和:0x8215

    紧急指针:0

    选项:

          02 04 05 b4:MSS为1460

          04 02:SACK

          08 0a 00 02 0e 4d 00 00 00 00:时间戳 TS val:0x00020e4d(134733),Tsecr:0

          01:nop

          03 03 07:窗口扩大因子wscale:7


    使用tcpdump分析:


    对比,结果一致



     

    2.    netstat工具使用

    netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知哪些网络连接正在工作,及其工作状态。

    $man  netstat

    print  network connections,routing tables, interface statistics, masquerade connections, and multicastmemberships

    该命令一般格式为:

    netstat  [-a]  [-e] [-n]  [-o]  [-p Protocol]  [-r]  [-s] [Interval]


    从整体上看,netstat的输出结果可以分为两个部分:

    一个是Active internet connections,其中Recv-Q和Send-Q指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。

    另一个是Active UNIX domain sockets,(unix域套接字,和网络套接字一样,但只能用于本机通信,性能可以提高一倍)。

    Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其他进程使用的路径名。

     

    常见参数:

    -a (all)显示所有选项,默认不显示Listening相关、udp相关

    -t (tcp)仅仅显示tcp相关选项

    -u (udp)仅仅显示udp相关选,结合-a使用

    -n (numeric)拒绝显示别名,能显示数字的全部转化成数字

    -l (listening)仅仅列出Listening状态的服务

    -p (program)显示套接字所述的进程名及其PID

    -r (route)显示路由信息,路由表

    -e (extend)显示扩展信息,例如uid等

    -s  按各协议进行统计

    -c (continuous)每隔一个固定时间,执行该netstat命令

    LISTEN和LISTENING的状态只有用-a或者-l才能看到

    列出所有端口:(包括监听状态的)

    $netstat –a

    列出所有tcp端口:

    $netstat –at

    列出所有udp端口:

    $netstat –au

    列出所有udp端口,并显示所属进程(仅显示该用户的,要看所有用户需要root):

    $netstat –aup


    只显示监听端口:

    $netstat –l

    显示系统不支持的地址族:

    $netstat  --verbose

    显示内核IP路由表:

    $netstat –r

     

    3.    lsof工具使用

    lsof全名为list opened files,即列出系统中已经被打开的文件。

    查看套接字:

    $lsof –i

     

    展开全文
  • Linux下网络相关结构体 struct addrinfo

    千次阅读 2017-10-18 20:09:13
    Linux下网络相关结构体 struct servent参考书籍:《UNIX环境高级编程》 参考连接: http://www.cnblogs.com/benxintuzi/p/4589819.html一、简介 结构体定义如下:struct addrinfo { int ai_flags; /* Input ...

    参考书籍:《UNIX环境高级编程》
    参考连接:
    http://www.cnblogs.com/benxintuzi/p/4589819.html

    一、简介
    结构体定义如下:

    struct addrinfo
    {
      int ai_flags;                 /* Input flags.  */
      int ai_family;                /* Protocol family for socket.  */
      int ai_socktype;              /* Socket type.  */
      int ai_protocol;              /* Protocol for socket.  */
      socklen_t ai_addrlen;         /* Length of socket address.  */
      struct sockaddr *ai_addr;     /* Socket address for socket.  */
      char *ai_canonname;           /* Canonical name for service location.  */
      struct addrinfo *ai_next;     /* Pointer to next in list.  */
    };

    1.ai_flags
    用来指定如何处理地址和名字,可取得值如下:
    这里写图片描述

    2.ai_family
    地址族,可取的值有AF_INET(IPv4) AF_INET6(IPv6) AF_UNIX(UNIX域) AF_UNSPEC(未指定)
    如下:
    这里写图片描述

    3.ai_socktype
    socket的类型,主要有SOCK_STREA(流)M和SOCK_DGRAM(数据报)两种,其它可选如下:
    这里写图片描述

    4.ai_protocol
    socket协议,参数如下:

    -
    IPPROTO_IP 0 IP协议
    IPPROTO_IPV4 4 IPv4
    IPPROTO_IPV6 41 IPv6
    IPPROTO_TCP 6 TCP
    IPPROTO_UDP 17 UDP

    在《UNIX环境高级编程》中,可以使用hint来过滤上面的结构体,仅使用ai_family、ai_flags、ai_protocol和ai_socktype字段,剩余的整数字段必须设置为零,并且指针字段为空。

    二、代码展示
    1)相关函数

    int getaddrinfo(const char *node, const char *service,
                    const struct addrinfo *hints, struct addrinfo **res);
    void freeaddrinfo(struct addrinfo *res);
    const char *gai_strerror(int errcode);
    int getnameinfo(const struct sockaddr *sa, socklen_t salen,
                    char *host, size_t hostlen,
                    char *serv, size_t servlen, int flags);

    2)getaddrinfo
    此函数主要用来替代gethostbyname函数
    1.代码

    #include <stdlib.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <string.h>
    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
        int ret = -1;
        struct addrinfo *res;
        struct addrinfo hint;
        struct addrinfo *curr;
        char ipstr[16];   
    
        if (argc != 2) {
            printf("parameter error\n");
            return -1;
        }
    
        bzero(&hint, sizeof(hint));
        hint.ai_family = AF_INET;
        hint.ai_socktype = SOCK_STREAM;
    
        ret = getaddrinfo(argv[1], NULL, &hint, &res);
        if (ret != 0) 
        {
            printf("getaddrinfo error\n");
            return -1;
        }
    
        for (curr = res; curr != NULL; curr = curr->ai_next) 
        {
            inet_ntop(AF_INET,&(((struct sockaddr_in *)(curr->ai_addr))->sin_addr), ipstr, 16);
            printf("%s\n", ipstr);
        }
    
        freeaddrinfo(res);
    
        return 0;
    }

    2.运行

    $ ./test www.baidu.com
    14.215.177.38
    14.215.177.39
    展开全文
  • Linux下网络流量实时监控工具大全

    千次阅读 2016-08-31 16:48:26
    Linux下网络流量实时监控工具大全 转:http://support.huawei.com/ecommunity/bbs/10268799.html?p=last 需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,...

    Linux下网络流量实时监控工具大全

    转:http://support.huawei.com/ecommunity/bbs/10268799.html?p=last

    需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且有时候打开监控页面不方便,个人喜欢随手在某台服务器上输入一个命令,查看网卡即时流量。

    一、iptraf软件
      rhel
    iso里有包含,我公司的系统,并没有默认安装,它功能强大,可以按照协议,网卡等进行分析。
    1.1 iptraf安装
    源码安装
    wget ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.0.tar.gz
    tar zxvf iptraf-3.0.0.tar.gz
    cd iptraf-3.0.0
    ./Setup
    yum
    方式安装
    yum install -y iptraf
    1.2 iptraf使用
    [root@kaifa opt]# iptraf
    按任意键继续

    第一项:IP流量监控
    第二项:常规查看网卡流量状态。只查看各网卡的总流量
    第三项:详细查看网卡流量状态。比如按TCPUDPARP等协议查看

    allinterfaces,查看所有网卡接口

    界面分上下两部分,上部分可详细显示哪个与之相连的IP,发了多少包,即时流量是多少,下部分,可以显示udp等信息。

    Q退出监控界面,然后选择“Exit”退出iptraf

    二、nload软件

       rhel iso不带,需要去第三方网站下载源码包。功能相对单一,只能查看总的流量,不能像上款的iptraf那样,可看总流量,可细分查看其它协议点的流量。nload默认分为上下两块,每部分都有当前流量(Curr),平均流量(Min),最大流量(Max),总流量(Ttl),看起来还是比较直观的。
    2.1 nload安装
    wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz
    tar zxvf nload-0.7.2.tar.gz
    cd nload-0.7.2
    ./configure –prefix=/usr/local/nload
    make
    make install
    2.2 nload使用
    [root@kaifa opt]# /usr/local/nload/bin/nload eth0

    三、ifstat软件

       rhel iso不自带,虽然到第三方网站下载源码包,编译安装。这个软件还有windows版,它可以报告网卡接口流量状态,能查看网卡的流出和流入的字节,是按每秒生产一次数据。
    3.1 ifstat安装
    # wget http://gael.roualland.free.fr/ifstat/ifstat-1.1.tar.gz
    # tar zxvf ifstat-1.1.tar.gz 
    # cd ifstat-1.1
    # ./configure --prefix=/usr/local/ifstat
    # make && make install
    3.2 ifstat使用

    # /usr/local/ifstat/bin/ifstat

    3.3相关参数
    -l    
    监测环路网络接口(lo)。缺省情况下,ifstat监测活动的所有非环路网络接口。经使用发现,加上-l参数能监测所有的网络接口的信息,而不是只监测 lo的接口信息,也就是说,加上-l参数比不加-l参数会多一个lo接口的状态信息。
    -a  
    监测能检测到的所有网络接口的状态信息。使用发现,比加上-l参数还多一个plip0的接口信息,搜索一下发现这是并口(网络设备中有一 个叫PLIP(Parallel Line Internet Protocol). 它提供了并口...
    -z  
    隐藏流量是无的接口,例如那些接口虽然启动了但是未用的
    -i  
    指定要监测的接口,后面跟网络接口名
    -s  
    等于加-d snmp:[comm@][#]host[/nn]] 参数,通过SNMP查询一个远程主机
    -h 
    显示简短的帮助信息
    -n 
    关闭显示周期性出现的头部信息(也就是说,不加-n参数运行ifstat时最顶部会出现网络接口的名称,当一屏显示不下时,会再一次出现接口的名称,提示我们显示的流量信息具体是哪个网络接口的。加上-n参数把周期性的显示接口名称关闭,只显示一次)
    -t 
    在每一行的开头加一个时间 戳(能告诉我们具体的时间)
    -T 
    报告所有监测接口的全部带宽(最后一列有个total,显示所有的接口的in流量和所有接口的out流量,简单的把所有接口的in流量相加,out流量相 加)
    -w  
    用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽
    -W 
    如果内容比终端窗口的宽度还要宽就自动换行
    -S 
    在同一行保持状态更新(不滚动不换行)注:如果不喜欢屏幕滚动则此项非常方便,与bmon的显示方式类似
    -b 
    kbits/s显示带宽而不是kbytes/s(bitbyte有何区别应该都知道吧)
    -q 
    安静模式,警告信息不出现
    -v 
    显示版本信息
    -d 
    指定一个驱动来收集状态信息

    四、sar软件

       这个工具RHEL iso里包含,它是一个优秀的性能监控工具,不仅仅监控网络,它可以显示cpu,运行队列,磁盘i/o,分页(交换区),内存,CPU中断等性能数据。Sar命令在sysstat包中,我公司系统没有安装此包,所以要安装它,才有sar命令。

    4.1 sar安装
    # yum install sysstat
    4.2 sar使用

    # sar -n DEV 5 2

    命令后面 5 2 意思是:每5秒钟取一次值,取2次。
    IFACE
    LAN接口
    rxpck/s
    :每秒钟接收的数据包
    txpck/s
    :每秒钟发送的数据包
    rxbyt/s
    :每秒钟接收的字节数
    txbyt/s
    :每秒钟发送的字节数
    rxcmp/s
    :每秒钟接收的压缩数据包
    txcmp/s
    :每秒钟发送的压缩数据包
    rxmcst/s
    :每秒钟接收的多播数据包

    五、iftop软件
       RHEL iso
    不自带,iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等

    5.1 iftop安装
    # wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
    # tar zxvf iftop-0.17.tar.gz
    # cd iftop-0.17
    # ./configure -prefix=/usr/local/iftop
    # make && make install
    5.2 iftop使用
    [root@nfstest opt]# /usr/local/iftop/sbin/iftop

    5.3、界面相关说明
    界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
    中间的<= =>这两个左右箭头,表示的是流量的方向。
    TX
    :发送流量
    RX
    :接收流量
    TOTAL
    :总流量
    Cumm
    :运行iftop到目前时间的总流量
    peak
    :流量峰值
    rates
    :分别表示过去 2s 10s 40s 的平均流量
    5.4、相关参数
    常用的参数
    -i
    设定监测的网卡,如:# iftop -i eth1
    -B 
    bytes为单位显示流量(默认是bits),如:# iftop -B
    -n
    使host信息默认直接都显示IP,如:# iftop -n
    -N
    使端口信息默认直接都显示端口号,如: # iftop -N
    -F
    显示特定网段的进出流量,如# iftop -F 10.10.1.0/24# iftop -F 10.10.1.0/255.255.255.0
    -h
    display this message),帮助,显示参数信息
    -p
    使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
    -b
    使流量图形条默认就显示;
    -f
    这个暂时还不太会用,过滤计算包用的;
    -P
    使host信息及端口信息默认就都显示;
    -m
    设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

     

    展开全文
  • Linux 网络磁盘共享的部署(ISCSI) iSCSI( Internet Small Computer System Interface) 互 联 网 小 型 计 算 机 系 统 接 口 。这是一种将 SCSI 接口与以太网技术相结合的新型存储技术,可以用来在网络...
  • Linux下网络编程实现UDP

    千次阅读 2011-11-12 22:03:22
    Linux下网络编程实现UDP[转] 一、引言  UDP是TCP/IP协议中的传输层协议的一种,本文介绍了在Linux下编写基于UDP协议的Client/Server模型的程序的方法,并给出了一个echo Client/Server例子程序。  二、...
  • Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍  Netperf是一种网络性能的测试工具,主要针对基于TCP或UDP的传输。Netperf根据应用的...
  • Linux下网络摄像头

    千次阅读 2017-11-01 10:07:03
    转载自http://blog.csdn.net/eastmoon502136/article/details/8190262
  • Linux下网络故障诊断

    千次阅读 2016-05-06 09:47:03
    下面由我来为大家详细介绍Linux系统中可能出现的一些网络问题,如网卡硬件问题、网络配置问题、驱动程序问题,以及网络层、传输层、应用层问题等。 网卡故障可以分为硬件故障和软件故障,判断硬件故障最简单...
  • linux下网络程序遭遇SIGPIPE信号进程退出的原因,及规避方法
  • Linux下网络不可达

    千次阅读 2019-09-28 19:53:11
    ping 127.0.0.1是可以接通的,但是ping 114.114.114.114一直显示connect:网络不可达。 解决方法: 切换成root登录,否则不能修改可读文件。输入 su root 切换成root。 进入/etc/sysconfig/network-s...
  • 最近在Linux下网络编程时,出现SIGPIPE 信号导致程序异常终止,本文记录下解决的方法以及相应的知识。 SIGPIPE 信号资料 什么时候出现此信号,APUE中有关此信号的解释如下: Linux man手册有关此信号的解释: man 7...
  • linux下网络抓包过程

    千次阅读 2017-12-01 14:38:11
    linux网络抓包1.使用tcpdumptcpdump tcp -i eth0 -t -s 0 and src net 101.95.31.111 -w ./target.cap tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型 -i ...
  • 总结之linux下网络编程

    万次阅读 2015-03-14 16:50:46
    1.有一篇好的文章,对Linux下socket编程的原理和要点说的很清楚: http://blog.csdn.net/chencheng126/article/details/44260799 2.一些windows网络编程的要点吧。包括大头序,小头序,网络字节序。一些常用的...
  • LINUX下网络配置-network eth0 ifconfig

    千次阅读 2010-07-04 12:17:00
    LINUX下网络配置-network eth0 ifconfig关键字:network eth0 ifconfig linux 网络配置 配置一台主机的网络实例,其内容包括:网关,DNS服务器,IP地址,子网掩码 实现方式有两种: 一,直接修改/etc/sysconfig/network-...
  • linux下网络发包工具

    千次阅读 2016-09-30 22:58:52
    它用来在Unix系统或类Unix系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。 正因为Tcpreplay有重放数据包的功能,所以它常被用来模拟IDS攻击等测试环境,被广泛地...
  • Linux下网络通信编程实现

    千次阅读 2018-05-24 16:48:47
    服务器端 #include &lt;sys/types.h&gt;#include &lt;sys/socket.h&gt;#include &lt;stdio.h&gt;#include &... int main(){//socketint servFd = socket(PF_INET, SOCK_STREAM,...
  • Linux下网络IP地址的转换函数 网络IP地址本是用32位二进制来表示的,为了记忆的方便可以用点分十进制来表示IP地址,同时,网络IP地址在网络传输和计算机内部的存储方式也不同,需要用函数来进行转换。 1.将点分十...
  • Linux下网络编程(一)

    千次阅读 2017-11-25 18:48:55
    一,计算机与网络的发展 计算机与网络发展的7个阶段1. 批处理(20世纪50年代) 是指实现将用户个数据装入卡带或者磁带。并有计算机按照一定的顺序读取,是用户索要执行的这些程序和数据能够一并批量得到处理的...
  • linux下网络资源下载的命令wget

    千次阅读 2017-11-25 10:29:59
    wget是linux最常用的下载命令。 (1)主要特性: 1. 可以从网络上自动下载文件,支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。这意味这你可以登录...
  • 1、 linux下可以用 tcpdump 工具进行网络抓包; 2、抓包的命令为:  2.1 ~# tcpdump 抓取所有的包;  2.2 ~# tcpdump 抓取指定网络接口的包;  2.3 ~# tcpdump host 210.27.48.1 抓取指定ip的包;   ...
  • linux下网络端口连通性测试命令汇总

    万次阅读 2018-12-11 21:29:53
    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性,具体用法格式如下: 用法:  ssh -v -p port username@ip 说明: -v  调试模式(会打印...
  • #include <sys/types.h> #include <sys/socket.h> int socket(int domain,int type,int protocol);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,595
精华内容 18,638
关键字:

linux下网络

linux 订阅