netstat -aon

/proc/net/tcp

/proc/net/udp

/proc/net/unix

相关的代码是:tcp4_seq_show(struct seq_file *file, void *v),函数执行

established_get_first

listening_get_next

难道只得到listening和establiseded的sock吗?

tcp_seek_last_pos

inet_hashinfo tcp_hashinfo是一个全局的变量,都是从这个全局的哈希表中得来的,得来的

可不可以看到每一个socket上的数据传输速度呢?传输的速度、传输的package的数目,

  • nethogs: 按进程查看流量占用
  • iptraf: 按连接/端口查看流量
  • ifstat: 按设备查看流量
  • ethtool: 诊断工具
  • tcpdump: 抓包工具
  • ss: 连接查看工具
  • 其他: dstat, slurm, nload, bmo

http://www.jb51.net/LINUXjishu/151977.html

ss可以统计详细的socket信息

lsof是怎么读取全部打开的文件的呀?

使用lsof -p <pid>能够列出所有该进程所有占用的文件,这个该很好获取 /proc/<pid>/fd,进程打开的所有的文件,然后是进程打开的文件,系统现在打开的所有的文件是通过哪个接口读出来的?会遍历所有文件的/proc/\<pid\>/fd/,可以看codebox: lsof.stp read.stp。

从网络设备和socket上,一直有个问题,尤其是tcp已经有流量控制了,为啥还要有流量

单机上网络流量控制。如何控制网络的流量

在网络整个协议栈上有几个重要的节点,这个也是iptables存在的原因,iptables中设置了几个重要的链,这几条链包括INPUT/OUTPUT/PREROUTING/POSTROUTING/FORWARD/,有这样5个链,接收数据包的流程,比如接收到数据包,接收的数据包会在函数中netif_receive_skb,然后在ip层是ip_recv,

比如在函数ip_rcv的最后由函数:
 
ip_rcv:                    NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, net, NULL, skb, dev, NULL, ip_rcv_finish);
ip_local_deliver:     NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, net, NULL, skb, skb->dev, NULL, ip_local_deliver_finish);
ip_forward:             NF_HOOK(NFPROTO_IPV4, NF_INET_FORWARD,net, NULL, skb, skb->dev, rt->dst.dev,ip_forward_finish);
 
在这几个关键的节点上可以对数据包作丰富的处理,
然后net_filter提供的所有的filter包括,在PREROUTING之前做的事情,
 46 enum nf_inet_hooks {
 47     NF_INET_PRE_ROUTING, 接收到了数据包,在进行路由之前,修改数据包的信息;
 48     NF_INET_LOCAL_IN,  路由之后,在这个数据包进如高层协议之前要做的事情;
 49     NF_INET_FORWARD, 在路由确定了之后,数据包进行转发;已经确定过了转发的出口
 50     NF_INET_LOCAL_OUT, 
 51     NF_INET_POST_ROUTING,,经过路由,还没有确定转发的出口
 52     NF_INET_NUMHOOKS
 53 };
NAT使用了其中的三条链:pre_routing/post_routing/forward
prerouting/post_routing是原始的NAT的逻辑,forward呢?
output规则链是在传出去之前,就把数据包的目的给换掉,从而完成端口的转发,如何完成
所以post_routing和output规则链有个重要的区别是一个是改源地址一个是改目的地址,都是
 

显示系统中所有的socket信息的更多相关文章

  1. Linux中显示系统中USB信息的lsusb命令

    来源:Linux中国  原文:https://linux.cn/article-2448-1.html 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体 ...

  2. [linux]top命令详解-实时显示系统中各个进程的资源占用状况

    简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...

  3. free - 显示系统中已用和未用的内存空间总和.

    总览 (SYNOPSIS) free [-b | -k | -m] [-o] [-s delay ] [-t] [-V] 描述 (DESCRIPTION) free 显示 系统中 已用和未用的 物理内 ...

  4. 9.7 top:实时显示系统中各个进程的资源占用状况

    top命令 用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况.该命令可以按照CPU的使用.内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式 ...

  5. 让Win10显示系统中隐藏的文件夹

    让Win10显示系统中隐藏的文件夹.. ------------------------- -----------------------

  6. [linux]netstat命令详解-显示linux中各种网络相关信息

    1.功能与说明 netstat 用于显示linux中各种网络相关信息.如网络链接 路由表  接口状态链接 多播成员等等. 2.参数含义介绍 -a (all)显示所有选项,默认不显示LISTEN相关-t ...

  7. 获取系统中所有进程&线程信息

    读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...

  8. 如何获取Android系统中申请对象的信息

    最近一直在做有关内存方面的优化工作,在做优化的过程,除了关注内存的申请量以及GC的情况之外,我们经常需要想方法找出是那些对象占用了大量内存,以及他们是如何导致GC的,这意味着我们需要获取对象申请的信息 ...

  9. RDLC中添加参数,用来显示报表中数据集之外的信息。

    我添加了两个参数,首先后台: ReportParameter rp = ,,).ToString()); ReportParameter rp1 = new ReportParameter(" ...

随机推荐

  1. linux popen 获取 ip test ok

    任务:unix,linux通过c程序获取本机IP. 1. 标准I/O库函数相对于系统调用的函数多了个缓冲区(,buf),安全性上通过buf 防溢出. 2.printf 这类输出函数中“ ”若包含“记得 ...

  2. 使用JAX-WS(JWS)发布WebService(二)

    将项目改为maven工程,并发布到Tomcat: WebService常用到的注解以及作用: 发布过程中遇到的问题总结: 一.将项目改为maven工程,并发布到Tomcat: 继续上一篇,将代码完善成 ...

  3. MongoDB入门---文档查询操作之条件查询&and查询&or查询

    经过前几天的学习之路,今天终于到了重头戏了.那就是文档查询操作.话不多说哈,直接看下语法: db.collection.find(query, projection) query :可选,使用查询操作 ...

  4. 如何在两个jsp页面之间传值,在另外一个页面用EL表达式获取值

    第一个jsp页面 <% String ids=request.getParameter("id"); int id=Integer.parseInt(ids); %> ...

  5. JSON初体验(三):FastJson解析

    JSON解析之FastJson(阿里巴巴解析开源) 特点: Fastjson是一个Java语言编写的高性能功能完善的JSON库,它采用的 是一种"假定有序快速匹配"的算法,把JSO ...

  6. 成都Uber优步司机奖励政策(1月15日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 苏州Uber优步司机奖励政策(4月2日~4月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 绝地求生大逃杀BE启动失败,应用程序无法正常启动

    今日更新绝地求生大逃杀后部分客户反馈绝地求生点击启动提示BE安装,应用程序无法启动 问题原因:经过排查发现,客户开启过超级工作站运行过游戏,在系统镜像包中保留了旧版的BE服务,致使新版BE无法安装,冲 ...

  9. javaweb(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  10. Qt 独立运行时伴随CMD命令窗口

    用Qt写了一个小软件,在把程序release后,打包分装后,发现程序运行的时候会伴随cmd命令窗口,可把我愁怀了 不过功夫不负有心人,在老师和我网友的帮助下,终于搞完了 CONFIG:指定工程配置和编 ...