热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

netstat竟然还能这么玩儿?

一次摸鱼的机会,看到群里小伙伴问了一嘴netstat-tnpl这个命令是干啥的,这个命令用过很多,但是我其实也没有认真研究过,但是这是一个问题,我不能放过它,而且netstat这个

一次摸鱼的机会,看到群里小伙伴问了一嘴 netstat -tnpl 这个命令是干啥的,这个命令用过很多,但是我其实也没有认真研究过,但是这是一个问题,我不能放过它,而且 netstat 这个命令我日常就用来查询端口的监听状态了,所以趁着这次机会,一起搞懂 netstat 这个命令。

netstat 这个命令在 Linux 、Windows 和 MacOS 操作系统下都兼容,不同的是,netstat 在 UNIX 下显示详细信息的命令是 man netstat ,而在 Linux 和 Windows 下面是 netstat --help

Linux 下的 netstat 命令

当我在 Linux 下执行 man netstat命令之后,系统显示出来的提示着实让我吓一大跳,看来这个命令内容很多啊!不要被这么长的描述吓到,我们一步一步来。

image-20220114192905308

首先来了解一下 netstat 这个命令是干啥的。

官方给我们的解释就是

netstat -- show network status

列出网络状态

但是这网络状态都有啥呢?带着疑问,我在 Linux 下执行了一下。

image-20220114191156926

打印出来是一个六元组,六元组每一列的内容分别是

image-20220114210858771

仔细看了一下这个六元组,这好像表明 netstat 这个命令是用于监控传入和传出的网络连接和状态的一个命令行工具啊

从整体上来看,netstst 的输出结果可以分为两部分,一部分是 Active Internet connections,称为活跃 TCP 连接,其中的 Recv-Q 和 Send-Q 指的是客户端发送队列和客户端接收队列。这两个队列的值一般都是 0 ,如果不是 0 的话表示有消息堆积还没有发出去/取出,这种情况一般很少见到。

另外一部分是 Active UNIX domain sockets, 称为 活跃的 Unix 域套接字,这部分中的 socket 和网络 socket 套接字一样,不同的是,这块只能用来本地通信,性能要比网络 socket 高。Active UNIX domain sockets 也是一个六元组,分别表示

image-20220114213625117

netstat 参数释义

下面我们来解释一下 netstat --help 列出来的一些参数,我们从最常见的一些参数开始入手,这样大家看起来也能形成阶段性记忆,不至于失去重点。

netstat -a

-a 这个参数默认会监控所有的 socket 连接。

image-20220114215136010

包括已经监听的、已经建立连接的、客户端发送的等待服务器的和未被监听都会被列出来。

netstat -at/-t

netstat -atnetstat -t 这俩后缀都是用来监听与 TCP 协议有关的端口,不同的是 netstat -at 会监听所有 State(状态)下的端口,而 netstat -t 仅仅会监听 ESTABLISHED 状态的端口。

netstat -at

image-20220114222513317

netstat -t

image-20220114222526237

netstat -au/-u

同样的,netstat -aunetstat -u 都会监控与 UDP 有关的端口,不同的是 netstat -au 会监听所有 State(状态)下的端口,而 netstat -u 仅仅会监听 ESTABLISHED 状态的端口。

netstat -au

image-20220114222955527

netstat -u

image-20220114223046771

我这里测试是没有监控已经建立连接状态下的 UDP 协议。

netstat -ap

这条命令用于列出程序运行的端口,常用的命令是

netstat -ap|grep '程序名'

比如我们要找 http 程序,就是 Netstat -ap|grep http

image-20220117205646573

还可以直接列出端口号

netstat -ap|grep 8080

image-20220117210019303

不过需要注意下,并不是所有的程序都能被找到,没有权限的不会显示,使用 root 权限可以查询所有信息。

netstat -l

netstat -l 用于监听正在处于监听状态的端口(读起来还真有那么点费劲,为了读起来更顺畅,后面直接使用列出替换监听)。

image-20220114223946803

netstat -lt 只用于列出所有监听 TCP 端口。

image-20220117183747925

netstat -lu 只用于列出所有监听 UDP 端口。

image-20220117185030035

netstat -lx 只用于列出所有监听 UNIX 端口。

image-20220117185216268

netstat -s

netstat -s用于列出所有端口的统计信息。

image-20220117185307357

netstat -st用于列出 TCP 端口的统计信息。

image-20220117185401696

netstat -su用于列出 UDP 端口的统计信息。

image-20220117185645981

netstat -p

netstat -p 可以与其他参数一起使用,例如 netstat -pt 就可以列出服务名称和 PID 号。

image-20220117185913422

netstat -c

使用 netstat -c 将每隔一秒列出网络信息。

image-20220117190501847

netstat -r

netstat -r用于列出路由核心信息。

image-20220117190549020

netstat --verbose

这条命令会列出系统支持的地址族(Address Family)

image-20220117191102190

Address Family 简单来说就是底层是使用的哪种通信协议来递交数据的,如 AF_INET 用的是 TCP/IPv4;AF_INET6 使用的是 TCP/IPv6;而 AF_LOCAL 或者 AF_UNIX 则指的是本地通信(即本次通信是在当前主机上的进程间的通信),一般用绝对路径的形式来指明。

netstat -i

netstat -i 用来列出网络接口数据包,包括传输和接收具有 MTU(最大传输单元)的数据包。

image-20220117192723454

另外,netstat -ie 还用于列出内核接口表,和 ifconfig 命令很相似

image-20220117193432779

关于这个问题

所以,回到文章刚开始的那个疑问,netstat -tnpl 是干什么用的,其实这就是几个参数的组合

  • -t :仅列出与 tcp 有关的信息
  • -n:以数字形式列出
  • -p:列出正在使用 socket PID 和 程序名称
  • -l:列出正在监听的服务器 socket

我们执行一下这个命令。

image-20220117214326520

另外,在 Linux 中,已经推荐使用 ss 来替代 netstat ,使用 ip route 来替代 netstat -r ,使用 ip -s link 来替代 netstat -i ,使用 ip addr 来替代 netstat -g 了。

原文链接:netstat 还能这么玩儿?

如果这篇文章对你有帮助,希望点赞并关注一下哦!


推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 网络编程:其实就是在学socketsocket是什么?翻译过来称为套接字是对底层的TCPIPUDP等网络协议进行封装使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议在程序 ... [详细]
  • 一、安装telnet1.上传如下的rpm安装包http:mirrors.163.comcentos7.6.1810osx86_64Packagestelnet-0.17-64.el ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 译文:如何使用SocketAsyncEventArgs类(How to use the SocketAsyncEventArgs class)
    转载自:http:blog.csdn.nethulihuiarticledetails3244520原文:HowtousetheSocketAsyncE ... [详细]
  • python网络编程 day27 网络编程初识 ——socket
    一、内容回顾1、两个内置函数(装饰器)及类中的魔术方法 ... [详细]
author-avatar
小白石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有